0

カスタム フィールドに Meta-Box プラグインを使用しており、カスタム投稿タイプもあります。ユーザーがカスタムフィールドに何かを入力してからカスタム投稿タイプを保存すると、何かを計算し、計算された値に応じて別のカスタムフィールドに何かを書き込みます。これは正しく動作しないため、動作をテストして問題を見つけるために、より単純な関数に分解しました。これは、より単純な関数が行うことです:

-カスタム投稿タイプには2つのドロップダウン(カスタムフィールド)が表示されます-ユーザーは最初のドロップダウンで何かを選択し、投稿を保存/更新します-次に、関数は最初のドロップダウンから同じ選択された値/項目を2番目のドロップダウンで選択します下

私は save_post フックを使用しています。これは、選択した値を正しく取得し、update_post_meta() 関数を使用して 2 番目のカスタム フィールドに同じ値を設定します。投稿を保存して更新した後、値は DB に正しく書き込まれますが、管理インターフェイスのカスタム フィールドには正しい値が表示されません。これはコードです:

add_action( 'save_post', 'update_second_custom_field' );

function update_second_custom_field( $post_id ) {
    $firstCustomFieldValue=get_post_meta($post_id, 'first_custom_field', true);
    update_post_meta($post_id, 'second_custom_field', $firstCustomFieldValue);
    $test = get_post_meta($post_id, 'second_custom_field', true);
    _log($test);
}

2 番目のカスタム フィールドは、管理ビューで更新されないようです。私が何をしても、投稿を再開して、もう一度更新します。データベースに正しい値があるように見えても、常に標準値が表示されます。

ここで何が欠けていますか?

編集 さて、最初の投稿を修正する必要があります。値がDBに書き込まれていないようです。理由がわかりません。get_post_meta が正しい値を表示するのに、DB が古い値を保持するのはなぜですか。get_post_meta は DB から値を取得しませんか? 完全に迷っています^^。

4

1 に答える 1

1

さて、私は自分で問題を見つけました。

DBへの書き込みが完了した時点でsave_postが呼び出されると思っていたのですが、そうではないようです。私の場合、コードで 2 番目のカスタム フィールドの値を設定しましたが、関数の後に投稿が最初に保存されました。だから私が設定した値は、標準値である管理エリアで行われた選択で上書きされました。

私の解決策は、save_post の代わりに wp_insert_post を使用することでした。

于 2013-09-18T11:46:28.833 に答える