WooCommerce: удалить архив «Продукты» из хлебных крошек Yoast - PullRequest
0 голосов
/ 05 августа 2020

Я хочу удалить ссылку на архив продуктов в хлебных крошках на всех страницах.

Для этого я нашел решение в документации Yoast. Работает нормально, кроме страниц с товарами. Вот мой текущий код:

/* Remove "Products" from Yoast SEO breadcrumbs in WooCommerce */
add_filter( 'wpseo_breadcrumb_links', function( $links ) {

    // Check if we're on a WooCommerce page
    // Checks if key 'ptarchive' is set
    // Checks if 'product' is the value of the key 'ptarchive', in position 1 in the links array
    if ( is_woocommerce() && isset( $links[1]['ptarchive'] ) && 'product' === $links[1]['ptarchive'] ) {

        // True, remove 'Products' archive from breadcrumb links
        unset( $links[1] );

    // Added by me to remove it on product single pages - doesn't work!
    } elseif ( is_product() && isset( $links[1]['ptarchive'] ) && 'product' === $links[1]['ptarchive'] ) {

        // True, remove 'Products' archive from breadcrumb links
        unset( $links[1] );


    }

    // Rebase array keys
    $links = array_values( $links );

    // Return modified array
    return $links;

});

Он удаляет ссылку на страницах архива и всех других страницах WooCommerce, как и следовало ожидать от условного тега is_woocommerce().

Но по какой-то причине он выиграл не работают на отдельной странице продукта. Как видите, я добавил дополнительную проверку, нахожусь ли я на странице продукта с is_product(). К сожалению, это не работает. И is_singular('proudct') тоже не работает.

Может, что-то скручивает с массивом $links? Но я не знаю, как это проверить.

1 Ответ

0 голосов
/ 05 августа 2020

Я изменил условие if на это:

if ( is_product() ) {
    // True, remove 'Products' archive from breadcrumb links
    unset( $links[1] );
}

Теперь оно работает. Остальные страницы раньше работали без функции.

...