在WP中更改帖子作者的标准或更明显的方法是使用wp_update_post() 功能,如所示this question.
但我有一个问题,描述如下:
// Inside the save_post attached callback
$arg = array(
\'ID\' => $post_id,
\'post_author\' => $whoever,
);
wp_update_post($arg); --> This fires the save_post hook --> Infinite loop
这是一种特殊情况,我需要在save\\u post回调中进行更新。这将导致无限循环。(参见
this similar case)
我想知道是否有另一种方法可以更新不触发save\\u post挂钩的帖子作者。
我知道我可以使用内置的author元数据库来实现这一点,但需求迫使我不要使用内置的author元数据库,我必须使用自定义元数据库来更新文章作者。
一种可能的解决方案是直接使用SQL:
UPDATE `wp_posts`
SET `post_author` = 2
WHERE `ID` = 1
可通过以下方式实现:
global $wpdb;
$wpdb->get_results("UPDATE `wp_posts` SET `post_author` = " . $int_author . " WHERE `ID` = " . $int_ID);
当然,之前要确保两个变量都包含数字。
有人知道更好的解决方案吗?
最合适的回答,由SO网友:Antti Koskinen 整理而成
在少数需要执行类似操作的情况下,我使用了callback unattach update repattach方法,这在以前的Q&;A.Update post on save 在developer docs comments.
function your_save_post_callback( $post_id, $post, $update ) {
// unattach the callback
remove_action(\'save_post\', \'your_save_post_callback\');
// update post
wp_update_post( $args );
// reattach the callback
add_action(\'save_post\', \'your_save_post_callback\');
}