WordPress で投稿やページやカスタム投稿の公開時に処理を実行する方法

publish_post で WordPress の記事投稿時に処理を実行できます。

1
add_action('publish_post', 'testFunction');

以上のアクションを functions.php やプラグインで実行しておき、以下のような関数を定義しておけば処理が実行されます。引数に $post->ID が入ってきますので投稿のデータを取得したい場合はこれを使います。

1
2
3
4
5
function testFunction($post_id)
{
    $post = get_post($post_id);
    print_r($post);
}

ちなみに投稿が公開された時に Twitter でツイートしたいといった場合は、下書きから公開への変更、予約投稿から公開への変更を検知して処理を実行しなければいけません。ちょっと大変でしたが以下のような感じで実装できましたので公開しておきます。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$runFlug = false;
$postData = get_post($post_id);
if($postData->post_status == 'publish') {
    global $post;
    if(
        $post->post_status == 'draft' ||
        $post->post_status == 'auto-draft'
    ) {
        $runFlug = true;
    }
} else if($postData->post_status == 'future') {
    $runFlug = true;
}
if($runFlug) {
    echo 'Twitterでツイートする';
}

予約投稿時は $post にデータが入っていないので使えません。global でデータを持ってくることはできません。そのため、このような遠回りな実装をしています。また、ページやカスタム投稿タイプの公開などに対応したい場合は以下のようにします。

1
add_action('publish_page', 'testFunction');

第一引数のところが publish_news や publish_page のようになります。以下のように宣言しておけば複数の投稿タイプに同じ処理を行うことができます。

1
2
3
add_action('publish_post', 'testFunction');
add_action('publish_page', 'testFunction');
add_action('publish_news', 'testFunction');

コメント

コメントは受け付けていません。