Wordpress перенос сео данных с Yoast SEO

Создали новый дизайн для сайта, решили залить на чистую версию вп, перенесли товары и нужную таксономию , но остался вопрос, как перенести сео данные с yoast seo , т.к. они прописаны ко всем товарным позициям ~2700 шт.


Ответы (1 шт):

Автор решения: Krya

Чтобы получить title, description с Yoast:

function get_post_title( WP_Post $post ): string {
    $yoast_title = get_post_meta( $post->ID, '_yoast_wpseo_title', true ); // Если поле заполнено
    if ( empty( $yoast_title ) ) {
        $wpseo_titles = get_option( 'wpseo_titles', [] );
        $yoast_title  = isset( $wpseo_titles[ 'title-' . $post->post_type ] ) ? $wpseo_titles[ 'title-' . $post->post_type ] : get_the_title(); // Если используется стандартный шаблон для тайтлов
    }

    return wpseo_replace_vars( $yoast_title, $post ); // wpseo_replace_vars - переименует yoast переменные в обычный текст.
}

Для description аналогично:

function get_post_description( WP_Post $post ): string {
    $yoast_post_description = get_post_meta( $post->ID, '_yoast_wpseo_metadesc', true );
    if ( empty( $yoast_post_description ) ) {
        $wpseo_titles           = get_option( 'wpseo_titles', [] );
        $yoast_post_description = isset( $wpseo_titles[ 'metadesc-' . $post->post_type ] ) ? $wpseo_titles[ 'metadesc-' . $post->post_type ] : '';
    }

    return wpseo_replace_vars( $yoast_post_description, $post );

Чтобы записать:

update_post_meta( $post_id, '_yoast_wpseo_title', 'Title text' );
update_post_meta( $post_id, '_yoast_wpseo_metadesc', 'Description text' );

Получаете основные настройки на 1-м сайте и копируете данные куда-нибудь:

$seo_settings = get_option( 'wpseo_titles' ); 

Вставляем данные на 2-м сайте:

update_option( 'wpseo_titles', $seo_settings );
→ Ссылка