当通过创建或更新帖子时,我正在尝试将帖子id和关键字(Yoast Focus关键字)保存到自定义表中save_post
行动它可以在发布时(第一次)保存所有内容,但当我更新帖子时,它会从数据库中获取focus关键字的旧值,而不会保存新值。
例如,Focus关键字(Publish)=";“你好,世界”;(工作正常,关键字存储正确)Focus keyword(第一次更新)=";“你好”;(不工作并在自定义表中保留“Hello World”)Focus关键字(第二次更新)=“Hello World”;“你好”;(它可以保存“Hello”)
所以基本上,问题是get\\u post\\u meta($post\\u id,“\\u yoast\\u wpseo\\u focuskw”,true)返回的是数据库中已经存在的值,而不是正在保存的新值。
通过以下方式保存帖子时,获取新价值的最佳方式是什么save_post
行动
$\\u POST[\'\\u yoast\\u wpseo\\u focuskw\']无法工作,因为yoast Focus关键字输入字段未在输入字段上设置名称。Screenshot
任何帮助都将不胜感激。谢谢
这是我的密码。
add_action(\'save_post\', \'my_custom_table\');
function my_custom_table($post_id) {
global $wpdb;
$table_name = $wpdb->prefix . "custom_table";
$data = [
\'post_id\' => $post_id,
\'keyword\' => get_post_meta( $post_id, \'_yoast_wpseo_focuskw\', true )
];
if (defined(\'DOING_AUTOSAVE\') && DOING_AUTOSAVE ) {
return;
} else {
//check if new post so insert
if( strpos( wp_get_raw_referer(), \'post-new\' ) > 0 ) {
if (get_post_status($post_id) === \'publish\') {
$wpdb->insert(
$table_name,
$data
);
}
} else {
$wpdb->update(
$table_name,
$data,
array(
\'post_id\' => $post_id
),
array( \'%d\', \'%s\' ),
array( \'%d\' )
);
}
}
}