-2

おはようございます。新しい投稿と更新された投稿を区別するために、フックなどを呼び出す必要があります。

新しい投稿に対してのみコードを実行したい...次のようなもの:

add_action('publish_post', myfunction);

function myfunction( $post_id ){
    if <new post> {
        /* do something */
    }
    else {
        /* do nothing */
    }
}

WPv3.5を使用しています

なにか提案を?

4

1 に答える 1

1

まず、draft_to_publish フックを使用します。

add_action('draft_to_published', 'my_function');

ただし、投稿が公開され、非公開になり、再度公開されると、これが複数回発生する可能性があります。アクションが 1 回だけ実行されるようにするには、関数の最後に投稿用のカスタム メタ要素を設定します。関数の開始時に、メタ要素が設定されているかどうかを確認し、設定されている場合はアクションをスキップします。

- - 追加した - -

繰り返しアクション保護がどのように機能するかのサンプルを次に示します (テストされていないコードなので、少し作業が必要になる場合があります)。

function my_function() {
    $already_done = get_post_meta($post_id, 'do_once', true);
    if(!$already_done) {
        // Do what you need to do here
        add_post_meta($post_id, 'do_once', 1, true);
    }
}
于 2012-12-31T14:38:22.757 に答える