edFields, true ) ) { continue; } if ( in_array( $k, [ 'keywords', 'og_article_tags' ], true ) ) { $v = ! empty( $v ) ? aioseo()->helpers->jsonTagsToCommaSeparatedList( $v ) : ''; } update_post_meta( $postId, "_aioseo_{$k}", $v ); } } /** * Migrates additional post meta data. * * @since 4.0.2 * * @param int $postId The post ID. * @return void */ public function migrateAdditionalPostMeta( $postId ) { static $disabled = null; if ( null === $disabled ) { $disabled = ( ! aioseo()->options->sitemap->general->enable || ( aioseo()->options->sitemap->general->advancedSettings->enable && aioseo()->options->sitemap->general->advancedSettings->excludeImages ) ); } if ( $disabled ) { return; } aioseo()->sitemap->image->scanPost( $postId ); } /** * Maps the old Open Graph meta to the social meta columns in V4. * * @since 4.0.0 * * @param array $ogMeta The old V3 Open Graph meta. * @return array $meta The mapped meta. */ public function convertOpenGraphMeta( $ogMeta ) { $ogMeta = aioseo()->helpers->maybeUnserialize( $ogMeta ); if ( ! is_array( $ogMeta ) ) { return []; } $mappedSocialMeta = [ 'aioseop_opengraph_settings_title' => 'og_title', 'aioseop_opengraph_settings_desc' => 'og_description', 'aioseop_opengraph_settings_image' => 'og_image_custom_url', 'aioseop_opengraph_settings_imagewidth' => 'og_image_width', 'aioseop_opengraph_settings_imageheight' => 'og_image_height', 'aioseop_opengraph_settings_video' => 'og_video', 'aioseop_opengraph_settings_videowidth' => 'og_video_width', 'aioseop_opengraph_settings_videoheight' => 'og_video_height', 'aioseop_opengraph_settings_category' => 'og_object_type', 'aioseop_opengraph_settings_section' => 'og_article_section', 'aioseop_opengraph_settings_tag' => 'og_article_tags', 'aioseop_opengraph_settings_setcard' => 'twitter_card', 'aioseop_opengraph_settings_customimg_twitter' => 'twitter_image_custom_url', ]; $meta = []; foreach ( $ogMeta as $name => $value ) { if ( ! in_array( $name, array_keys( $mappedSocialMeta ), true ) ) { continue; } switch ( $name ) { case 'aioseop_opengraph_settings_desc': case 'aioseop_opengraph_settings_title': $meta[ $mappedSocialMeta[ $name ] ] = aioseo()->helpers->sanitizeOption( aioseo()->migration->helpers->macrosToSmartTags( $value ) ); break; case 'aioseop_opengraph_settings_image': $value = strval( $value ); if ( empty( $value ) ) { break; } $meta['og_image_type'] = 'custom_image'; $meta[ $mappedSocialMeta[ $name ] ] = strval( $value ); break; case 'aioseop_opengraph_settings_video': $meta[ $mappedSocialMeta[ $name ] ] = esc_url( $value ); break; case 'aioseop_opengraph_settings_customimg_twitter': $value = strval( $value ); if ( empty( $value ) ) { break; } $meta['twitter_image_type'] = 'custom_image'; $meta['twitter_use_og'] = false; $meta[ $mappedSocialMeta[ $name ] ] = strval( $value ); break; case 'aioseop_opengraph_settings_imagewidth': case 'aioseop_opengraph_settings_imageheight': case 'aioseop_opengraph_settings_videowidth': case 'aioseop_opengraph_settings_videoheight': $value = intval( $value ); if ( ! $value || $value <= 0 ) { break; } $meta[ $mappedSocialMeta[ $name ] ] = $value; break; case 'aioseop_opengraph_settings_tag': $meta[ $mappedSocialMeta[ $name ] ] = aioseo()->migration->helpers->oldKeywordsToNewKeywords( $value ); break; default: $meta[ $mappedSocialMeta[ $name ] ] = esc_html( strval( $value ) ); break; } } return $meta; } /** * Returns the title as it was in V3. * * @since 4.0.0 * * @param int $postId The post ID. * @param string $seoTitle The old SEO title. * @return string The title. */ protected function getPostTitle( $postId, $seoTitle = '' ) { $post = get_post( $postId ); if ( ! is_object( $post ) ) { return ''; } $postType = $post->post_type; $oldOptions = get_option( 'aioseo_options_v3' ); $titleFormat = isset( $oldOptions[ "aiosp_{$postType}_title_format" ] ) ? $oldOptions[ "aiosp_{$postType}_title_format" ] : ''; $seoTitle = aioseo()->helpers->pregReplace( '/(%post_title%|%page_title%)/', $seoTitle, $titleFormat ); return aioseo()->helpers->sanitizeOption( aioseo()->migration->helpers->macrosToSmartTags( $seoTitle ) ); } }