Отключить Yoast 14+ для динамического c архива - PullRequest
0 голосов
/ 02 мая 2020

При использовании Yoast с W C Vendors Pro все страницы магазина поставщиков будут рассматриваться как страница архива основного магазина. Это приводит к загрузке данных Open Graph основных сайтов вместо вводимых ими SEO-данных поставщиков.

Вплоть до Yoast 14.0 приведенный ниже код работал хорошо, но с Yoast 14 он больше не работает. Любые идеи о том, как пересмотреть это, так как они устарели функции?

remove_action( 'template_redirect', 'wpseo_frontend_head_init', 999 );
add_action( 'template_redirect', 'enable_wcv_store_seo' );
function enable_wcv_store_seo(){
    if ( !WCV_Vendors::is_vendor_page() ) {
        add_action( 'template_redirect', 'wpseo_frontend_head_init', 999 );
    }
}

На основе фрагмента кода, найденного на портале разработчиков Yoast, я смог настроить таргетинг на страницы поставщиков и успешно изменить языковой стандарт (в качестве теста это не нужно менять).

function fleece_wpseo_change_og_locale( $locale ) {
if ( WCV_Vendors::is_vendor_page() ) {
return 'nl_NL';}
}

add_filter( 'wpseo_locale', 'fleece_wpseo_change_og_locale' );

Я не могу найти достаточно документации, чтобы выяснить, как нацеливать нужные предметы, и знать достаточно, чтобы быть опасным.

1 Ответ

0 голосов
/ 12 мая 2020

Мне удалось закодировать ответ и передать его W C Продавцам. Это более общая опция c на случай, если кто-то наткнется на это. Я немного углубился в настройку кода, который наконец-то реализовал:

// Change OG title for Yoast on Vendor Pages
function wcv_wpseo_change_og_title( $title ) {
    WC_Vendors::log( $title ); 
    if ( WCV_Vendors::is_vendor_page() ) {
        $vendor_shop = urldecode( get_query_var( 'vendor_shop' ) );
        $vendor_id = WCV_Vendors::get_vendor_id( $vendor_shop );
        $shop_title = get_user_meta( $vendor_id, 'pv_shop_name', true );
        $og_title = get_user_meta( $vendor_id, 'wcv_seo_fb_title', true );

        if ( ! empty( $og_title ) ) {
            $title = $og_title;
        } else {
            $title = $shop_title;
        }
    }
    return $title;
}
add_filter( 'wpseo_opengraph_title', 'wcv_wpseo_change_og_title' );

// Change Meta description for Yoast on Vendor Pages
function wcv_wpseo_change_meta_description( $desc ) {
    if ( WCV_Vendors::is_vendor_page() ) {
        $vendor_shop = urldecode( get_query_var( 'vendor_shop' ) );
        $vendor_id   = WCV_Vendors::get_vendor_id( $vendor_shop );
        $shopdesc    = get_user_meta( $vendor_id, 'pv_shop_description', true );
        $meta_desc   = get_user_meta( $vendor_id, 'wcv_seo_meta_description', true );

        if ( ! empty( $meta_desc ) ) {
            $desc = $meta_desc;
        } else {
            $desc = $shopdesc;
        }
    }
    return $desc;
}
add_filter( 'wpseo_metadesc', 'wcv_wpseo_change_meta_description' );

// Change OG description for Yoast on Vendor Pages
function wcv_wpseo_change_og_description( $desc ) {
    if ( WCV_Vendors::is_vendor_page() ) {
        $vendor_shop = urldecode( get_query_var( 'vendor_shop' ) );
        $vendor_id   = WCV_Vendors::get_vendor_id( $vendor_shop );
        $shopdesc    = get_user_meta( $vendor_id, 'pv_shop_description', true );
        $meta_desc   = get_user_meta( $vendor_id, 'wcv_seo_meta_description', true );
        $og_desc     = get_user_meta( $vendor_id, 'wcv_seo_fb_description', true );

        if ( ! empty( $og_desc ) ) {
            $desc = $og_desc;
        } elseif (! empty( $meta_desc)) {
            $desc = $meta_desc;
        } else {
            $desc = $shopdesc;
        }
    }

    return $desc;
}
add_filter( 'wpseo_opengraph_desc', 'wcv_wpseo_change_og_description' );

// Change OG image for Yoast on Vendor Pages
function wcv_wpseo_change_og_image ( $image ) {
    if ( WCV_Vendors::is_vendor_page() ) {
        $vendor_shop = urldecode( get_query_var( 'vendor_shop' ) );
        $vendor_id   = WCV_Vendors::get_vendor_id( $vendor_shop );
        $og_image    = get_user_meta( $vendor_id, 'wcv_seo_fb_image_id', true );

        if (!empty($og_image)) {
            $image = wp_get_attachment_url( $og_image );
        }
    }
    return $image;
}
add_filter( 'wpseo_opengraph_image', 'wcv_wpseo_change_og_image' );

// Change OG URL for Yoast on Vendor Pages.
function wcv_wpseo_change_og_url ( $url ) {
    if ( WCV_Vendors::is_vendor_page() ) {
        $vendor_shop = urldecode( get_query_var( 'vendor_shop' ) );
        $vendor_id   = WCV_Vendors::get_vendor_id( $vendor_shop );
        $url         = WCV_Vendors::get_vendor_shop_page( $vendor_id );
    }

    return $url;
}
add_filter( 'wpseo_opengraph_url', 'wcv_wpseo_change_og_url' );
...