当管理员更新帖子时,我需要一个钩子。 (单击“更新”按钮)。帖子成功更新后。
原因是,我必须调用一个函数来更新另一个插件的内容。
到目前为止我尝试过的所有东西都不起作用。
add_action( 'save_post', 'wpse41912_save_post' );
add_action( 'edit_post', 'wpse41912_edit_post' );
add_action( 'transition_post_status', 'wpse41912_transition_post_status' );
add_filter( "edit_post_{$field}", 'filter_edit_post_field', 10, 2 );
add_action( 'admin_head-post.php', 'admin_head_post_editing' );
add_action( 'admin_head-post-new.php', 'admin_head_post_new' );
add_action( 'admin_head-edit.php', 'admin_head_post_listing' );
在Everything功能中我写了这个,我没有看到回声或警告框。
echo "my_update_user_meta";
$text = "my_update_user_meta";
echo '<script type="text/javascript">alert("' . $text . '")</script>';
编辑:我错过了第3,4个参数。 我的代码现在
add_action( 'save_post', 'mmx_save_post_action', 10, 3 );
function mmx_save_post_action( $post_id, $post, $update ) {
if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) { // keine Aktion bei Autosave
//autosave
}else{
//no autosave
if ( is_admin() && current_user_can( 'manage_options' ) ) {
//admin panel && permission ok
//call function
}
}
}
答案 0 :(得分:2)
更新帖子时会触发一些钩子:
'pre_post_update'
是之前触发的操作更新帖子后,传递的参数为2:$post_ID
和$data
这是一个所有数组的邮件表'transition_post_status'
是在更新时触发的钩子,并传递3个参数:$ new_post_status,$old_post_status
和$post
(对象)。"{$old_status}_to_{$new_status}"
和 "{$new_status}_{$post->post_type}"
。首先传递唯一的post对象作为参数,第二个传递post id和post对象。查找文档here。'edit_post'
:$post_ID
和$post
(对象)'post_updated'
:$post_ID
,$post_after
(更新后发布对象),$post_before
(更新前发布对象) )"save_post_{$post->post_type}"
取决于帖子类型,例如对于标准帖子是'save_post_post'
,对于页面是'save_post_page'
,此钩子传递3个参数:$post_ID
,$post
(对象)和$update
这是一个布尔值(当你执行更新时,这是真的,实际上当第一次保存帖子时也会触发此钩子。save_post
&#39; ,并传递前一个挂钩的相同3个参数。save_post_{$post_type}
&#39; 在更新和首次保存时都会被触发,并传递前一个钩子的前两个参数。wp_insert_post
&#39; ,在更新和首次保存时都会被触发,并传递前2个钩子的相同3个参数。 每次更新帖子时都会触发这些钩子,无论是通过后端的管理页面还是通过更新后的手动页面,#34;手动&#34;使用wp_update_post
或wp_insert_post
函数。
当使用管理页面更新帖子时,会触发其他挂钩,例如 'update_post_redirect'
或 'post_updated_messages'
。 (有关使用示例,请参阅this和this WPSE答案。)
请注意,如果你想使用一些hooks参数,那就不是第一个,你需要在add_action
调用中明确声明它。
E.g。如果您想使用'$update'
挂钩的'save_post'
参数(即第3个),则需要在3
$accepted_args
上add_action
添加// if you don't add 3 as as 4th argument, this will not work as expected
add_action( 'save_post', 'my_save_post_function', 10, 3 );
function my_save_post_function( $post_ID, $post, $update ) {
$msg = 'Is this un update? ';
$msg .= $update ? 'Yes.' : 'No.';
wp_die( $msg );
}
参数{3}}):
add_action
最后请注意计时:您必须确保在触发操作之前wp_update_post( $post );
add_action( 'save_post', 'my_function', 10, 3 );
被称为,否则它将无效。
E.g。这段代码:
$(window).scroll(function() {
var distanceTop = $("#animate_blocks").offset().top - $(window).height();
if ($(window).scrollTop() > distanceTop)
{
for ( var counter = 2; counter <= 7; counter++)
{
$("#slidebox"+counter).animate({"bottom":"0px", "opacity": "1"},{duration: 500, easing: "easeOutQuart"});
}
}
else
for ( var counter = 2; counter <= 7; counter++)
{
$("#slidebox"+counter).stop(true).animate({"bottom": "-300px", "opacity": "0"},200);
}
});
将不执行任何操作,因为在触发挂钩后添加操作。这很容易识别,在现实世界中,代码并非总是如此。