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 );