[Wordpress] Kan iemand twee Woocommerce filters combineren?

Pagina: 1
Acties:
  • 279 views

Acties:
  • 0 Henk 'm!

  • iApp
  • Registratie: Februari 2011
  • Niet online

iApp

Say cheese

Topicstarter
Ik ben er uren mee bezig geweest, maar deze .php leek weet zich geen raad. Het probleem:

1.a.) De twee filters werken niet met elkaar samen.
1.b.) Los van elkaar werkt filter001 en filter002 wel.
1.c.) Het doel van de filters is dat er in Woocommerce (back-end) gefilterd kan worden op 1.) artikelen op voorraad en 2.) gearchiveerde producten.

Ik wil de twee Woocommerce filters daarom combineren tot één filter. Weet iemand raad?

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
/* #### Nieuw filter #### */
 /* Filteren op gearchiveerde producten (back-end)*/
add_action( 'restrict_manage_posts', 'filter002_admin_posts_filter_restrict_manage_posts' );

function filter002_admin_posts_filter_restrict_manage_posts(){

    $type = 'product';
    if (isset($_GET['post_type'])) {
        $type = $_GET['post_type'];
    }

    if ('product' == $type){
        $values = array(
            'Zichtbaar' => 'visible', 
            'Gearchiveerd' => 'hidden',
        );
        ?>
        <select name="Stock">
        <option value=""><?php _e('Archief', 'filter002'); ?></option>
        <?php
            $current_v = isset($_GET['Stock'])? $_GET['Stock']:'';
            foreach ($values as $label => $value) {
                printf
                    (
                        '<option value="%s"%s>%s</option>',
                        $value,
                        $value == $current_v? ' selected="selected"':'',
                        $label
                    );
                }
        ?>
        </select>
        <?php
    }
}

add_filter( 'parse_query', 'filter002_posts_filter' );

function filter002_posts_filter( $query ){
    global $pagenow;
    $type = 'product';
    if (isset($_GET['post_type'])) {
        $type = $_GET['post_type'];
    }
    if ( 'product' == $type && is_admin() && $pagenow=='edit.php' && isset($_GET['Stock']) && $_GET['Stock'] != '') {
        $query->query_vars['meta_key'] = '_visibility';
        $query->query_vars['meta_value'] = $_GET['Stock'];
    }
}
/* #### Nieuw filter #### */
/* Add In/Out of Stock Filter to Admin *aanvulling op WooCommerce Sort By Stock* */
add_action( 'restrict_manage_posts', 'filter001_admin_posts_filter_restrict_manage_posts' );

function filter001_admin_posts_filter_restrict_manage_posts(){

    $type = 'product';
    if (isset($_GET['post_type'])) {
        $type = $_GET['post_type'];
    }

    if ('product' == $type){
        //change this to the list of values you want to show
        //in 'label' => 'value' format
        $values = array(
            'Uitverkocht' => 'outofstock', 
            'Op voorraad' => 'instock',
        );
        ?>
        <select name="Stock">
        <option value=""><?php _e('Voorraad', 'filter001'); ?></option>
        <?php
            $current_v = isset($_GET['Stock'])? $_GET['Stock']:'';
            foreach ($values as $label => $value) {
                printf
                    (
                        '<option value="%s"%s>%s</option>',
                        $value,
                        $value == $current_v? ' selected="selected"':'',
                        $label
                    );
                }
        ?>
        </select>
        <?php
    }
}
add_filter( 'parse_query', 'filter001_posts_filter' );

function filter001_posts_filter( $query ){
    global $pagenow;
    $type = 'product';
    if (isset($_GET['post_type'])) {
        $type = $_GET['post_type'];
    }
    if ( 'product' == $type && is_admin() && $pagenow=='edit.php' && isset($_GET['Stock']) && $_GET['Stock'] != '') {
        $query->query_vars['meta_key'] = '_stock_status';
        $query->query_vars['meta_value'] = $_GET['Stock'];
    }
}

An  a day keeps the doctor away.


Acties:
  • 0 Henk 'm!

  • Hmail
  • Registratie: April 2003
  • Laatst online: 06-10 18:48

Hmail

Doet ook maar wat.

Als ik het zo zie overschrijf je de meta_key en meta_value die je eerst in filter001_posts_filter instelt door de waarden die je in filter002_posts_filter instelt.
Ik denk dat dit: https://codex.wordpress.org/Class_Reference/WP_Meta_Query is waar je naar op zoek bent. Daarmee kun je een AND koppeling maken tussen meerdere meta_key/values.

It might sound as if I have no clue what I'm doing, but I actually have a vague idea.


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 13:36

Creepy

Tactical Espionage Splatterer

Kan iemand even...
Kom op, in PRG draait het om het zelf programmeren. Niet om dat maar even snel door anderen te laten doen. Dit staat dan ook met reden vermeld in het Devschuur- en het Algemene beleid. Je lijkt niet eens zelf de moeite genomen te hebben om het te combineren. Je zegt wel er uren geweest mee bezig te zijn, maar je geeft niet aan wat je al allemaal hebt geprobeerd en wat daar dan niet mee lukte. Iets wat we wel van je vragen. Ik kan dan ook niet anders dan dit topic sluiten...

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Dit topic is gesloten.