好的,那么new_to_publish
钩子可能不是这里使用的正确钩子。
这个status_to_status
挂钩在立柱从第一个状态过渡到第二个状态期间运行。到了这个阶段,编辑不再扮演角色。
如果我的理解the_editor_content
是正确的,这将在加载编辑后屏幕时过滤编辑器中显示的默认内容。
您需要将签名附加到数据库中的实际帖子内容中,还是仅在前端显示?
如果是后者,您可以使用the_content
滤器
function mh_add_signature_after_content( $content ) {
global $post;
$signature = \'\';
// Specify the post type on which to display, otherwise you\'ll see on pages also!
if ( \'post\' == $post->post_type ) {
$author_name = get_the_author_meta( \'display_name\', 25 );
$signature = \'<br><br><br><br><br>--<br>\' . $author_name;
}
return $content . $signature;
} // kbs_after_article_content
add_filter( \'the_content\', \'mh_add_signature_after_content\', 999 );
这样做的结果是,在post edit屏幕中,编辑器将显示post内容,无签名。但当加载到你的网站前端时,帖子将包含签名。
UPDATED
这应该达到你想要的。。。
add_action( \'save_post\', \'my_new_post\');
function my_new_post( $post_id ) {
// Specify the post type on which to run
if ( \'post\' == $post->post_type ) {
// Prevent loops
remove_action( \'save_post\', \'my_new_post\' );
// Make sure we haven\'t already run for this post
if ( get_post_meta( $post_id, \'signature_added\', true ) ) {
return;
}
$signature = \'\';
$post = get_post( $post_id );
$author_name = get_the_author_meta( \'display_name\', $post_id );
$signature = \'<br><br><br><br><br>--<br>\' . $author_name;
$update = wp_update_post( array(
\'ID\' => $post_id,
\'post_content\' => $post->post_content . $signature
) );
// Add a placeholder so we know the signature was added
if ( ! is_wp_error( $update ) ) {
add_post_meta( $post_id, \'signature_added\', true, true );
}
add_action( \'save_post\', \'my_new_post\' );
}
}