我正在为客户网站的人物页面创建一个自定义帖子类型,该网站的名字和姓氏都有元字段,但我还想将自定义帖子的标题更新为两者的组合(即“firstname lastname”)。
我正在使用wp_update_post
但我遇到了一个问题。当我去更新帖子时,数据被正确更新,但我的光标不断旋转,页面从不重新加载。我想这是因为wp_update_post
正在导致无限save_post
循环,但the recommended fix for this on the wordpress codex 似乎不起作用,我假设调用一个或多个函数的方式有问题。
这是我的代码:
add_action(\'save_post\', \'save_details\');
add_action(\'edit_post\', \'save_details\');
function save_details($post_id){
global $post;
if (defined(\'DOING_AUTOSAVE\') && DOING_AUTOSAVE) {
return $post_id;
}
update_post_meta($post->ID, "firstname", $_POST["firstname"]);
update_post_meta($post->ID, "lastname", $_POST["lastname"]);
if ( ! wp_is_post_revision( $post_id ) ){
$args = array();
$args[\'ID\'] = $post_id;
$args[\'post_title\' ] = implode(\' \', array($_POST["firstname"],$_POST["lastname"]));
remove_action(\'save_details\',\'save_post\');
wp_update_post( $args );
add_action(\'save_details\',\'save_post\');
}
}
最合适的回答,由SO网友:Mark Kaplun 整理而成
remove\\u action的参数错误,它们应该与add\\u action中使用的参数完全相同,首先应该是挂钩,然后是函数名remove_action(\'save_post\',\'save_details\');