Php 如何在wordpress中导入插件的自定义字段

Php 如何在wordpress中导入插件的自定义字段,php,wordpress,Php,Wordpress,我已经安装了pluginYoast SEO Premium, 有了这个插件就有了一些字段 yoast_wpseo_metadesc,yoast_wpseo_focuskw 但我无法添加,尽管我使用了: add_post_meta($post_id, 'yoast_wpseo_metadesc',$my_post['post_excerpt']); 这个问题可能是由几个问题引起的,以下是一些想法: 在元键前面加“\u0” Yoast SEO在数据库中为这些自定义字段条目加上前缀“u”。关键不是

我已经安装了pluginYoast SEO Premium, 有了这个插件就有了一些字段

yoast_wpseo_metadesc,yoast_wpseo_focuskw
但我无法添加,尽管我使用了:

add_post_meta($post_id, 'yoast_wpseo_metadesc',$my_post['post_excerpt']);

这个问题可能是由几个问题引起的,以下是一些想法:

在元键前面加“\u0” Yoast SEO在数据库中为这些自定义字段条目加上前缀“u”。关键不是“yoast_wpseo_metadesc”,而是“yoast_wpseo_metadesc”。和“yoast_wpseo_focuskw”一样,实际上是“yoast_wpseo_focuskw”

使用update_post_meta()而不是add_post_meta() Add_post_meta()可以为不存在的帖子创建自定义字段。如果它存在,它不会更新它。最好使用更灵活的update\u post\u meta()函数。如果自定义字段已存在,则将对其进行更新。否则,函数将调用add_post_meta()来创建它。 在您的情况下,可能已经存在具有该名称的字段

请注意执行代码的位置 我想我们需要更多关于在哪里启动add_post_meta()函数的信息。根据具体情况,方法有所不同。以下是一些例子:

在单页文章中 如果在您的单个页面上,您可以使用:

<?php
global $post;
update_post_meta( $post->ID, '_yoast_wpseo_metadesc', $post->post_excerpt );
update_post_meta( $post->ID, '_yoast_wpseo_focuskw', my_focus_keyword' );
?>

非常感谢,我尝试了带有“u”的前缀元键,非常好,很管用
<?php
// Launch the update_post_meta on post saving.
add_action( 'save_post', 'my_yoast_saved_datas' );

function my_yoast_saved_datas( $post_id, $post ) {

  // Check that your post is what you want
  if ( $_POST['post_type'] == 'post' ) {

    // Check if user can't do that
    if ( ! current_user_can( 'edit_post', $post_id ) )
        return;
  }

  update_post_meta( $post_id, '_yoast_wpseo_metadesc',  $post->post_excerpt );
  update_post_meta( $post_id, '_yoast_wpseo_focuskw',  'my_focus_keyword');
}
?>
<?php
global $post;

// Array of args, change to your need
$args = array( 'post_type' => 'post', 'posts_per_page' => -1, 'post_status'=> 'publish' );

// Get alls posts
$my_posts = get_posts( $args );

// Loop on post
foreach ( $myposts as $post ) {
  setup_postdata( $post );
  global $post;

  // Update on create custom fields
  update_post_meta( $post->ID, '_yoast_wpseo_metadesc',  $post->post_excerpt );
  update_post_meta( $post->ID, '_yoast_wpseo_focuskw',  'my_focus_keyword');
}

wp_reset_postdata();
?>