我已安装插件 Yoast SEO Premium , 用这个插件有一些字段是
yoast_wpseo_metadesc,yoast_wpseo_focuskw
但我不能添加我曾经使用的:
add_post_meta($post_id, 'yoast_wpseo_metadesc',$my_post['post_excerpt']);
答案 0 :(得分:2)
这个问题可能是由于几个问题,这里有一些想法:
Yoast SEO前缀这些自定义字段条目在数据库中带有“_”。关键不是“yoast_wpseo_metadesc”而是“_yoast_wpseo_metadesc”。对于“yoast_wpseo_focuskw”来说,它实际上是“_yoast_wpseo_focuskw”。
Add_post_meta()可以为帖子创建自定义字段。如果存在,则不会更新它。使用update_post_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' );
?>
将此代码放在functions.php中,它会在每个保存后的帖子中,在管理部分中执行。
<?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');
}
?>
在functions.php中启动一次,或将其打包到插件上,以便在激活时启动。
<?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();
?>