update_post_meta WordPress的Yoast SEO(update_post_m

2019-10-21 04:37发布

我在与Yoast Worpdress SEO麻烦,自动更新的标题,关键字和描述,

我曾尝试没有成功多种方式,

首先测试我所做的就是这样的事情,直接在fucntions.php加入

update_post_meta('80', '_yoast_wpseo_title', 'Test SEO Title' );

它工作正常,但是当我尝试这样的方法,它不会简单地工作

function save_seo_meta_data($post_id) {
    global $post;
    $data = new MovieData;

    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) 
        return $post_id; 
    if ('movie_post' == $_POST['post_type']) { 
        if (!current_user_can('edit_page', $post_id)) 
            return $post_id; 
        } elseif (!current_user_can('edit_post', $post_id)) { 
            return $post_id; 
    }
    #wpseo_set_value('title', $data->seotitle, $post_id);
    #WPSEO_Meta::set_value('title', $data->seotitle,$post_id);
    update_post_meta($post_id, '_yoast_wpseo_title', $data->title );
}
add_action( 'save_post', 'save_seo_meta_data',9999999);

所有使用上述代码这三部作品,当我改变超常键不同的值

wpseo_set_value('title', $data->seotitle, $post_id);
WPSEO_Meta::set_value('title', $data->seotitle,$post_id);
update_post_meta($post_id, '_yoast_wpseo_title', $data->title );

我检查wp_postmeta值,可以看到所有的值,如果我设置不同的密钥,但是当我点不yoast SEO Meta键,

我一直也在考虑它的类和功能从这里开始,

: https://github.com/Yoast/wordpress-seo/blob/ba4b1ad63f64d9658a2cc8de22b4391459423516/inc/class-wpseo-meta.php

: https://github.com/Yoast/wordpress-seo/blob/ba4b1ad63f64d9658a2cc8de22b4391459423516/inc/wpseo-functions.php

但仍然没有成功

任何帮助,将不胜感激,

Answer 1:

尝试wpseo_saved_postdata钩:

add_action( 'save_post', 'wpse26642385_save_post', 1, 1 );
function wpse26642385_save_post( $post_id )
{
    // check stuff

    // $data = ...

    add_action( 'wpseo_saved_postdata', function() use ( $post_id ) {
        if( function_exists( 'wpseo_set_value' ) ) {
            update_post_meta( $post_id, '_yoast_wpseo_title', $data->title );
        }
    }, 999 );
}


文章来源: update_post_meta for Wordpress Yoast SEO