web-dev-qa-db-ja.com

Save_postに自動タイトルを書き込む(無限ループ)

次のように、カスタムフィールド$sentence_numberの内容を含む投稿のタイトルを書きます。

add_action('save_post', function ($title, $post_id) {
    $post_type = get_post_type($post_id);
    if ($post_type == 'sentence') {
        $sentence_number = get_field('sentencia_no', $post_id);
        wp_update_post($post_id, [
            'post_title'   => $sentence_number
        ]);
    }
}, 10, 2);

しかし、私はこのエラーが出ます:

不明なエラー:最大関数ネストレベル '200'に達し、中止しました!

ループを回避するにはどうすればいいですか。ありがとうございました。

1
aitor

簡単な方法があります、あなたはフィルタフックを使う必要がありますwp_insert_post_dataそれでコードは次のようになるはずです。

add_filter( 'wp_insert_post_data'、 'set_post_title_with_field_value');

function set_post_title_with_field_value( $data )
{
    if ($data['post_type'] == 'sentence' ){
        $sentence_number = get_field('sentencia_no', $data['ID']);
        $data['post_title'] = $sentence_number;
    }
    return $data;
}

このコードをテーマのfunctions.phpに追加する必要があります。だからコードを試してみて、結果を教えてください。ありがとう

1
Souvik Sikdar