我想检查一下这篇文章的标题是否有变化,如果有,我想做一些事情。
我曾想过使用post\\u更新的钩子,codex说“只要需要比较值,就使用这个钩子before 和after 发布更新。“,但我不知道如何使用前后参数。
function check_values($post_ID, $post_after, $post_before){
echo \'Post ID:\';
var_dump($post_ID);
echo \'<br>Post Object AFTER update:\';
echo \'<pre>\';
print_r($post_after);
echo \'</pre>\';
echo \'<br>Post Object BEFORE update:\';
echo \'<pre>\';
print_r($post_before);
echo \'</pre>\';
}
add_action( \'post_updated\', \'check_values\', 10, 3 );
我也在重复
echo check_values($post->ID, get_post(),get_post());
在metabox中。
目前我得到了相同的值。
如果我echo check_values();
我得到缺少的参数错误和onecho check_values($post_ID, $post_after, $post_before)
我得到空值。
How can i get the values before and after the update?
Update
function check_values($post_ID, $post_after, $post_before){
if ($post_before->post_title != $post_after->post_title) {
// do stuff
}
}
add_action( \'post_updated\', \'check_values\', 10, 3 );
最合适的回答,由SO网友:JoeMoe1984 整理而成
首先,您使用的函数是错误的。每当您使用add_action
作用在本例中,您已将其添加到post_updated
行动
基本上,您的check\\u values函数被添加到队列中,然后在执行操作时,该队列将被操作调用。
您可以在此处看到操作的调用位置:https://core.trac.wordpress.org/browser/tags/4.4/src/wp-includes/post.php#L3359
参见本文件第3359行。有一个函数称为do_action
它将调用与post\\u updated操作相关的所有函数。这将包括check\\u values函数。这就是调用函数的地方,正如您所看到的,它传递了必要的参数,以便与函数进行交互。
尝试更新或添加帖子。您应该在那里看到一些输出,因为这是wordpress调用您的函数的时候。
然后,为了检查是否有更改,请比较post对象前后的两个标题
<?php
function check_values($post_ID, $post_after, $post_before){
if( $post_after->post_title !== $post_before->post_title ) {
// do something
}
}
add_action( \'post_updated\', \'check_values\', 10, 3 );
?>