私は投稿が公開されたときに何かをしたい(更新された[ドラフト - >公開]か単に作成されたかは関係ない)
私のプラグインでは、これを試すためにさまざまなアクションを試しました。どのイベントがトリガーされるかを検出するために、次のコードを試しました。
function new_post() { file_put_contents('debug.log', 'new_post', FILE_APPEND); }
function publish_post() { file_put_contents('debug.log', 'publish_post', FILE_APPEND); }
function pending_post() { file_put_contents('debug.log', 'pending_post', FILE_APPEND); }
function draft_post() { file_put_contents('debug.log', 'draft_post', FILE_APPEND); }
function auto_draft_post() { file_put_contents('debug.log', 'auto_draft_post', FILE_APPEND); }
function future_post() { file_put_contents('debug.log', 'future_post', FILE_APPEND); }
function private_post() { file_put_contents('debug.log', 'private_post', FILE_APPEND); }
function inherit_post() { file_put_contents('debug.log', 'inherit_post', FILE_APPEND); }
function trash_post() { file_put_contents('debug.log', 'trash_post', FILE_APPEND); }
function save_post() { file_put_contents('debug.log', 'save_post', FILE_APPEND); }
add_action('new_post', 'new_post', 10, 2);
add_action('publish_post', 'publish_post', 10, 2);
add_action('pending_post', 'pending_post', 10, 2);
add_action('draft_post', 'draft_post', 10, 2);
add_action('auto-draft_post', 'auto_draft_post', 10, 2);
add_action('future_post', 'future_post', 10, 2);
add_action('private_post', 'private_post', 10, 2);
add_action('inherit_post', 'inherit_post', 10, 2);
add_action('trash_post', 'trash_post', 10, 2);
add_action('save_post', 'save_post', 10, 2);
しかし、これは私が将来掲載する予定がある場合にのみ機能するようです。この場合、 'publish_post'と 'save_post'のみがトリガされます。
何か設定する必要がありますか、それとも他のものが機能しないのですか?
のように、投稿が公開されたときにコードをトリガーすることが目的である場合、投稿のpost_status
がpublish
に設定されている場合は、次のようにsave_post
にフックできます。
function cc_publish_wpse_263985( $postid ) {
// check if post status is 'publish'
if ( get_post_status( $postid ) == 'publish') ) {
// do something here
}
}
add_action( 'save_post', 'cc_publish_wpse_263985' );