Электронная камерцыя і рознічны гандальПлатны і арганічны пошукавы маркетынг

WooCommerce: фільтр адміністратара для пошуку прадуктаў без набору выяваў прадукту

Мы дапамагаем кліенту, які мае сайт WordPress WooCommerce, які на працягу многіх гадоў губляў бачнасць у пошукавай сістэме з-за сотняў праблем з кодам, канфігурацыяй і змесцівам, звязаных з гадамі грэбавання, усталяванымі і выдаленымі плагінамі і дзесяткамі тэм.

З запускам новага сайта мы назіралі за працаздольнасцю сайта і нядаўна атрымалі наступнае паведамленне Google Search Console:

выява праблемы са структураванымі дадзенымі ў кансолі пошуку Google

Мы былі здзіўлены тым, што ў WooCommerce у кампаніі былі прадукты, для якіх не было набору выяваў прадукту. Калі мы сканіравалі толькі што запушчаны сайт, мы не ўбачылі ніякіх праблем… гэта было таму, што новая тэма мела выяву-запаўняльнік, якая з'яўлялася кожны раз, калі выява не была ўстаноўлена. У выніку не было памылак для не знойдзеных малюнкаў.

Спіс прадуктаў WooCommerce

Нашым наступным крокам было вызначэнне прадуктаў на сайце, дзе не было набораў малюнкаў. Гэта няпростая задача, калі трэба фільтраваць сотні прадуктаў. У выніку мы напісалі наш уласны фільтр у прадуктах WooCommerce, каб адфільтраваць спіс да прадуктаў без набора выявы прадукту.

фільтр-выявы-прадукту-не-ўстаноўлены

Цяпер мы можам лёгка праглядаць спіс і без асаблівых высілкаў абнаўляць выявы прадуктаў, калі гэта неабходна. Вось як мы гэта зрабілі.

Дадайце фільтр у спіс прадуктаў адміністратара WooCommerce

На старонцы даччынай тэмы кліента functions.php мы дадалі наступныя два раздзелы кода. Спачатку мы будуем поле фільтра:

// Add a filter on product for set product image
add_action('restrict_manage_posts', 'filter_products_by_image_presence');
function filter_products_by_image_presence() {
    global $typenow;
    $selected = isset($_GET['product_image_presence']) ? $_GET['product_image_presence'] : '';
    if ('product' === $typenow) {
        ?>
        <select name="product_image_presence" id="product_image_presence">
            <option value="">Filter by product image</option>
            <option value="set" <?php selected('set', $selected); ?>>Image Set</option>
            <option value="notset" <?php selected('notset', $selected); ?>>Image Not Set</option>
        </select>
        <?php
    }
}

Вось пакрокавае тлумачэнне таго, што робіць кожная частка кода:

  • add_action('restrict_manage_posts', 'filter_products_by_image_presence');
    • Гэтая лінія падключаецца да restrict_manage_posts, якое з'яўляецца дзеяннем, якое запускаецца ў вобласці адміністратара WordPress і дазваляе дадаваць дадатковыя параметры фільтрацыі ў спіс паведамленняў. Тут ён выкарыстоўваецца для дадання новага фільтра ў спіс прадуктаў WooCommerce.
  • function filter_products_by_image_presence() { ... }
    • Гэты блок вызначае функцыю filter_products_by_image_presence, які выводзіць HTML для новага выпадальнага фільтра выбару на экране адміністратара прадукту.
  • global $typenow;
    • Глабальная зменная $typenow выкарыстоўваецца для праверкі тыпу бягучага спісу публікацый, каб пераканацца, што карыстальніцкі фільтр дадаецца толькі да экранаў тыпу публікацый «Прадукты», а не да іншых.
  • $selected = isset($_GET['product_image_presence']) ? $_GET['product_image_presence'] : '';
    • Гэты радок правярае, ці існуе актыўны набор фільтраў, шукаючы параметр 'product_image_presence' у URL-адрасе, які перадаецца як запыт GET, калі вы выбіраеце опцыю фільтра і адпраўляеце фільтр. Ён захоўвае бягучы выбар, каб захаваць выбраны стан фільтра пасля перазагрузкі старонкі.
  • if ('product' === $typenow) { ... }
    • Гэты ўмоўны аператар правярае, ці з'яўляецца бягучы тып паведамлення прадуктам, гарантуючы, што код у аператары if працуе толькі для прадуктаў WooCommerce.
    • Усё паміж ?> і <?php гэта вывад HTML, у тым ліку выпадальнае меню выбару з параметрамі фільтрацыі па прадуктах з «Наборам выявы» або «Выява не ўстаноўлена». PHP перамяжоўваецца для апрацоўкі дынамічнага выбару праз selected() функцыя, якая выводзіць selected атрыбут, калі бягучы $selected значэнне адпавядае значэнню опцыі.
    • ,en selected() функцыя - гэта дапаможная функцыя WordPress, якая параўноўвае першы аргумент з другім і, калі яны супадаюць, выдае 'selected=”selected”', які з'яўляецца атрыбутам HTML, неабходным для паказу параметра як выбранага ў выпадальным спісе.

Гэты код фактычна дадае выпадальны фільтр у спіс прадуктаў, дазваляючы адміністратару адфільтраваць спіс па прадуктах, якія маюць набор малюнкаў ці не. Гэты дадатковы фільтр дапаможа карыстальнікам кіраваць вялікімі каталогамі, гарантуючы, што прадукты адпавядаюць патрабаванням спісаў крам, у тым ліку прызначэнне малюнкаў у рамках кантролю якасці спісаў.

Выканаць запыт у спісе прадуктаў адміністратара WooCommerce

Далей мы павінны дадаць запыт, які будзе выконваць і знаходзіць прадукты, для якіх не ўстаноўлена выява.

add_filter('parse_query', 'filter_products_query_by_image_presence');
function filter_products_query_by_image_presence($query) {
    global $pagenow, $typenow;

    if ('edit.php' === $pagenow && 'product' === $typenow && isset($_GET['product_image_presence']) && $_GET['product_image_presence'] != '') {
        $presence = $_GET['product_image_presence'];
        $meta_query = array(
            'relation' => 'OR',
            array(
                'key' => '_thumbnail_id',
                'compare' => 'NOT EXISTS'
            ),
            array(
                'key' => '_thumbnail_id',
                'value' => '0'
            )
        );

        if ('set' === $presence) {
            $meta_query = array(
                array(
                    'key' => '_thumbnail_id',
                    'compare' => 'EXISTS'
                ),
                array(
                    'key' => '_thumbnail_id',
                    'value' => array('', '0'), // Assuming '0' or '' could be placeholders for no image.
                    'compare' => 'NOT IN'
                ),
            );
        } elseif ('notset' === $presence) {
            $meta_query = array(
                'relation' => 'OR',
                array(
                    'key' => '_thumbnail_id',
                    'compare' => 'NOT EXISTS'
                ),
                array(
                    'key' => '_thumbnail_id',
                    'value' => '0'
                )
            );
        }

        $query->set('meta_query', $meta_query);
    }
}

Гэты фрагмент кода прызначаны для змены асноўнага запыту WordPress для спісаў прадуктаў у вобласці адміністратара, каб дазволіць фільтраваць прадукты на аснове таго, ці ёсць у іх звязаны відарыс. Вось тлумачэнне яго кампанентаў:

  • add_filter('parse_query', 'filter_products_query_by_image_presence');
    • Гэтая лінія далучае filter_products_query_by_image_presence функцыі да ст parse_query хук фільтра, які выкарыстоўваецца для карэкціроўкі асноўнага запыту, які WordPress выкарыстоўвае для атрымання паведамленняў (або карыстацкіх тыпаў паведамленняў, такіх як прадукты) у табліцы спісу адміністратара.
  • function filter_products_query_by_image_presence($query) { ... }
    • Гэтая функцыя вызначана для змены запыту спісу прадуктаў на аснове наяўнасці малюнкаў прадукту. The $query зменная з'яўляецца асобнікам WP_Query клас, перададзены па спасылцы, што азначае, што любыя змены гэтага аб'екта будуць уплываць на фактычны выкананне запыту WordPress.
  • global $pagenow, $typenow;
    • Гэтыя глабальныя зменныя з'яўляюцца зменнымі асяроддзя WordPress. $pagenow выкарыстоўваецца для праверкі бягучай старонкі адміністратара і $typenow каб праверыць тып бягучага паведамлення.
    • Умоўны аператар правярае, ці з'яўляецца бягучая старонка «edit.php» (старонка па змаўчанні для пераліку паведамленняў і карыстальніцкіх тыпаў паведамленняў), тып паведамлення - «прадукт» (што азначае, што мы знаходзімся ў спісе прадуктаў WooCommerce), і калі фільтр усталяваны праз a GET параметр з назвай 'product_image_presence'.
  • Новы масіў метазапытаў ствараецца на аснове значэння 'product_image_presence'. Гэты масіў прызначаны для стварэння ўмоў для фільтрацыі прадуктаў з малюнкамі або без іх.
    • ,en relation ключ, усталяваны ў «АБО», паказвае, што любое з умоў унутры можа быць праўдзівым для метазапыту для атрымання прадуктаў.
    • Калі для фільтра ўстаноўлена «ўсталяваць», новы $meta_query створаны для пошуку прадуктаў з выявамі. Уключаны прадукты, якія маюць '_thumbnail_id' (што азначае, што выява ўстаноўлена), а не пусты радок або '0'.
    • Калі для фільтра ўстаноўлена "notset", мета-запыт шукае прадукты, у якіх мета-ключ "_thumbnail_id" альбо не існуе, альбо ўсталяваны ў "0", што будзе азначаць, што з прадуктам няма выявы.
  • $query->set('meta_query', $meta_query);
    • Гэты радок змяняе асноўны запыт, усталяваўшы 'meta_query' з умовамі, вызначанымі ў $meta_query.

Гэтая налада дапамагае адміністратару крамы WooCommerce хутка знаходзіць прадукты без малюнкаў, што вельмі важна для кіравання запасамі, маркетынгу і стратэгіі продажаў, паколькі прадукты з выявамі з большай верагоднасцю прадаюцца і прадастаўляюць кліентам неабходную візуальную інфармацыю. Забяспечваючы камплектаванне спісаў прадуктаў выявамі, продажы і маркетынгавыя намаганні могуць быць больш эфектыўнымі.

Артыкулы па Тэме

Вярнуцца да пачатку кнопкі
блізка

Выяўлена блакіроўка рэкламы

Мы залежым ад рэкламы і спонсарства, каб падтрымліваць Martech Zone бясплатна. Калі ласка, адключыце блакіроўшчык рэкламы або падтрымайце нас, аформіўшы даступнае гадавое сяброўства без рэкламы (10 долараў ЗША):

Зарэгіструйцеся для атрымання штогадовага сяброўства