WooCommerce - filtrare după produse recomandate în panoul de administrare

28 iun. 2013, 01:56:45
Vizualizări: 19.7K
Voturi: 2

WooCommerce are o modalitate simplă de a selecta produsele "Recomandate" prin clic pe o mică pictogramă cu stea în coloana "Featured" din zona de administrare.

Am nevoie să pot filtra și afișa doar produsele recomandate în panoul de administrare. Știe cineva o metodă simplă de a face acest lucru?

Am cercetat și am aflat că acest lucru se realizează prin perechi cheie/valoare meta, unde _featured este cheia și valoarea este fie yes fie no.

Din păcate, deoarece nu se folosește taxonomii precum categoriile de produse, nu există posibilitatea de a utiliza funcționalitatea de filtrare din panoul de administrare pentru a afișa doar produsele recomandate. Poți sorta coloana de recomandate astfel încât acestea să apară fie în partea de sus fie de jos a listei de produse, dar asta e tot.

1
Comentarii

Am găsit o soluție aici: https://stackoverflow.com/questions/46470206/woocommerce-filter-by-featured-products-in-admin Funcționează cu Wordpress 4.9.

Jordi Jordi
21 ian. 2018 11:28:29
Toate răspunsurile la întrebare 3
9
13

Puteți sorta lista de produse după statutul de recomandate. Doar faceți clic pe steaua din partea de sus a coloanei... o dată va aduce toate produsele nerecomandate în partea de sus, iar de două ori va inversa și va aduce toate produsele recomandate în partea de sus.

URL-ul dvs. de administrare va arăta astfel: /wp-admin/edit.php?post_type=product&orderby=featured&order=desc

Sortează produsele după statutul de recomandate

ACTUALIZARE:

Ok, s-a dovedit că nu este atât de greu să filtrezi după statutul de recomandat. WooCommerce filtrează după "subtype", și deoarece acesta filtrează și după meta, putem în mare parte copia codul lor și face câteva ajustări.

Prima funcție adaugă elementul select/drop-down, în timp ce a doua se ocupă de ajustările la interogarea de administrare.

/**
 * Filtrează produsele după tip
 *
 * @access public
 * @return void
 */
function wpa104537_filter_products_by_featured_status() {

     global $typenow, $wp_query;

    if ($typenow=='product') :


        // Recomandate/ Nerecomandate
        $output .= "<select name='featured_status' id='dropdown_featured_status'>";
        $output .= '<option value="">'.__( 'Afișează toate statuturile de recomandate', 'woocommerce' ).'</option>';

        $output .="<option value='featured' ";
        if ( isset( $_GET['featured_status'] ) ) $output .= selected('featured', $_GET['featured_status'], false);
        $output .=">".__( 'Recomandate', 'woocommerce' )."</option>";

        $output .="<option value='normal' ";
        if ( isset( $_GET['featured_status'] ) ) $output .= selected('normal', $_GET['featured_status'], false);
        $output .=">".__( 'Nerecomandate', 'woocommerce' )."</option>";

        $output .="</select>";

        echo $output;
    endif;
}

add_action('restrict_manage_posts', 'wpa104537_filter_products_by_featured_status');

/**
 * Filtrează produsele în administrare pe baza opțiunilor
 *
 * @access public
 * @param mixed $query
 * @return void
 */
function wpa104537_featured_products_admin_filter_query( $query ) {
    global $typenow, $wp_query;

    if ( $typenow == 'product' ) {

        // Subtipuri
        if ( ! empty( $_GET['featured_status'] ) ) {
            if ( $_GET['featured_status'] == 'featured' ) {
                $query->query_vars['meta_value']    = 'yes';
                $query->query_vars['meta_key']      = '_featured';
            } elseif ( $_GET['featured_status'] == 'normal' ) {
                $query->query_vars['meta_value']    = 'no';
                $query->query_vars['meta_key']      = '_featured';
            }
        }

    }

}

add_filter( 'parse_query', 'wpa104537_featured_products_admin_filter_query' );

Actualizat pentru WooCommerce 3.0

Callback-ul parse_query trebuie actualizat deoarece statutul de recomandat nu mai este stocat ca post meta.

/**
 * Filtrează produsele în administrare pe baza opțiunilor
 *
 * @access public
 * @param mixed $query
 * @return void
 */
function wpa104537_featured_products_admin_filter_query( $query ) {
    global $typenow;

    if ( $typenow == 'product' ) {

        // Subtipuri
        if ( ! empty( $_GET['featured_status'] ) ) {
            if ( $_GET['featured_status'] == 'featured' ) {
                $query->query_vars['tax_query'][] = array(
                    'taxonomy' => 'product_visibility',
                    'field'    => 'slug',
                    'terms'    => 'featured',
                );
            } elseif ( $_GET['featured_status'] == 'normal' ) {
                $query->query_vars['tax_query'][] = array(
                    'taxonomy' => 'product_visibility',
                    'field'    => 'slug',
                    'terms'    => 'featured',
                    'operator' => 'NOT IN',
                );
            }
        }

    }

}
add_filter( 'parse_query', 'wpa104537_featured_products_admin_filter_query' );
28 iun. 2013 03:58:22
Comentarii

Mulțumesc. După cum am menționat în ultima propoziție a întrebării mele, sunt conștient de acea funcție de sortare. Totuși, doresc să folosesc funcția "Sortare Produse", care permite sortarea prin drag and drop, pentru a sorta Produsele Recomandate, lucru care nu este posibil în mod implicit.

Puteți filtra după categorie, apoi apăsați "Sortare Produse" și le puteți trage în ordinea dorită. Vreau asta pentru produsele recomandate...

Gabriel Luethje Gabriel Luethje
28 iun. 2013 22:04:29

Tocmai citeam un articol despre cum oamenii nu citesc articolele în întregime pe internet, se pare că m-ai prins. Verifică ediția mea.

helgatheviking helgatheviking
28 iun. 2013 23:08:34

Se pare că eu îmi găseam soluția în timp ce tu postai a ta, și arată similar. Mulțumesc!

Gabriel Luethje Gabriel Luethje
28 iun. 2013 23:26:55

Da, se pare că facem același lucru. O modificare drăguțică... s-ar putea să o folosesc și pe site-urile mele.

helgatheviking helgatheviking
28 iun. 2013 23:48:01

În WordPress(4.7.5) și WooCommerce(3.0.7), codul tău nu funcționează.

John Shang John Shang
26 mai 2017 20:19:21

Păi e veche de 4 ani iar WooCommerce a suferit o revoluție majoră cu lansarea versiunii 3.0. Am actualizat și pare să funcționeze.

helgatheviking helgatheviking
26 mai 2017 23:21:33

Mulțumesc foarte mult! O parte din noul cod este în afara. Vă sugerez să îl verificați.

John Shang John Shang
27 mai 2017 07:12:19

@helgatheviking Ești genial! Mulțumesc pentru asta; funcționează perfect în WP 4.8.3 și WC 3.1.2

chb chb
1 nov. 2017 09:11:00

codul tău original m-a ajutat să creez un filtru după valoare meta. mulțumesc.

dw1 dw1
19 iun. 2019 17:34:14
Arată celelalte 4 comentarii
3

Am găsit acest plugin: https://wordpress.stackexchange.com/a/45447/15190, pe care l-am adaptat pentru a oferi o listă de selecție pentru filtrarea după produse Recomandate. Cu aceasta, pot folosi funcția de sortare prin drag and drop din WooCommerce pentru a schimba ușor ordinea în care apar produsele Recomandate în widget-ul de Produse Recomandate și în alte locuri.

Iată codul cu adaptările mele care îl vor face să funcționeze pentru Produsele Recomandate WooCommerce:

<?php
/*
Plugin Name: Admin Filter By WooCommerce Featured Products
Plugin URI: http://en.bainternet.info
Description: adaptat din https://wordpress.stackexchange.com/q/45436/2487. Permite afișarea doar a produselor Recomandate, ceea ce va permite sortarea prin drag and drop a produselor Recomandate
Version: 1.0
Author: Bainternet
Author URI: http://en.bainternet.info
*/

add_action( 'restrict_manage_posts', 'wpse45436_admin_posts_filter_restrict_manage_posts' );
/**
 * Mai întâi se creează dropdown-ul
 * 
 * @author Ohad Raz
 * 
 * @return void
 */
function wpse45436_admin_posts_filter_restrict_manage_posts(){
    $type = 'post';
    if (isset($_GET['post_type'])) {
        $type = $_GET['post_type'];
    }

    //se adaugă filtrul doar la tipul de postare dorit
    if ('product' == $type){
        //schimbați aceasta cu lista de valori pe care doriți să o afișați
        //în formatul 'etichetă' => 'valoare'
        $values = array(
            'Afișează doar Recomandate' => 'Yes', 
            'Afișează doar Nerecomandate' => 'No',
        );
        ?>
        <select name="Featured">
        <option value=""><?php _e('Afișează Recomandate și Nerecomandate', 'wpse45436'); ?></option>
        <?php
            $current_v = isset($_GET['Featured'])? $_GET['Featured']:'';
            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', 'wpse45436_posts_filter' );
/**
 * dacă este trimis, filtrează după meta post
 * 
 * @author Ohad Raz
 * @param  (wp_query object) $query
 * 
 * @return Void
 */
function wpse45436_posts_filter( $query ){
    global $pagenow;
    $type = 'post';
    if (isset($_GET['post_type'])) {
        $type = $_GET['post_type'];
    }
    if ( 'product' == $type && is_admin() && $pagenow=='edit.php' && isset($_GET['Featured']) && $_GET['Featured'] != '') {
        $query->query_vars['meta_key'] = '_featured';
        $query->query_vars['meta_value'] = $_GET['Featured'];
    }
}
28 iun. 2013 23:24:05
Comentarii

Nu uitați să selectați unul dintre răspunsurile noastre ca răspuns oficial pentru a muta această întrebare din categoria 'întrebări fără răspuns'.

helgatheviking helgatheviking
30 iun. 2013 17:17:29

În WordPress(4.7.5) și WooCommerce(3.0.7), codul tău nu funcționează.

John Shang John Shang
26 mai 2017 20:17:59

Cod învechit, nu funcționează în WP 5 & WC 4.8. Adaugă un câmp de filtrare deasupra listei de produse, dar nu filtrează.

D.A.H D.A.H
20 dec. 2020 21:39:05
2

Puteți utiliza plugin-ul WordPress Filter Featured Products for WooCommerce.

25 mai 2021 20:41:30
Comentarii

Deși nu a fost actualizat de mult timp, încă funcționează perfect. Mulțumesc

Stephan Burlot Stephan Burlot
9 dec. 2022 13:28:00

Am actualizat codul de la @helgatheviking pentru cei care nu doresc un plugin. Întrebați-mă sau votați, nu pot posta pentru că nu am suficientă reputație în această comunitate

Stephan Burlot Stephan Burlot
9 dec. 2022 13:34:02