2017-02-27 31 views
0

投稿が画面に表示される前に投稿のメタデータのフィールドを編集しようとしています。投稿編集ページを表示する前にポストメタデータを編集するWordpressフック

私は 'load-post.php'フックを見てきましたが、これはポストがロードされる前に呼び出されています(正しく理解していれば)ので、ポストIDとメタデータはnullです。 私は他のフックを試しましたが、私はこの作業を行うことができませんでした。

次の投稿メタフィールドは、編集ページに表示される前に変更する必要があります。

$post_price = get_post_meta(get_the_ID(), 'price', TRUE);

例:データベース内= 10価格が、それは後の編集ページに表示されたとき、私はそれが= 15価格になりたいです。

リンク、ヒント、アイデアは大変ありがたいです。 :)

編集:
私の現在のソリューション:

add_action('load-post.php','calculate_price'); 
function calculate_price(){ 
    $post_id = $_GET['post']; 
    //get price from post by post_id and do stuff 
} 

は、これは正しい方法ですか?

答えて

0

編集:大丈夫私はポストのIDで作業する必要があると思った。ポストオブジェクトを変更する必要がある場合(既にdbからロードされ、印刷準備が整っている場合)、代わりに'the_post'を使用することができます。

は必要ありません

get_post_type()== '製品':

function my_the_post_action($post) { 
    $screen = get_current_screen(); 
    if(is_admin() && $screen->parent_base == 'edit' && get_post_type() == 'product') { 
     $post_id = $post->ID; 
     $price = (int) get_post_meta($post_id, 'price', true); 
     update_post_meta($post_id, 'price', $price + 5); 
    } 
} 
add_action('the_post', 'my_the_post_action'); 

この部分は:あなただけのIDを投稿するアクセスする必要があるので、私はこのような何かをするだろうこのコードを実行するポストの種類(ポストの種類、カテゴリ、メタフィールドなどに基づいて)を決定する必要があります。それがなければ、管理者の問い合わせのたびに実行されます。何か間違っていても、このコードはテストされていません。

+0

ご返信ありがとうございますが、このフックではクエリを変更することはできません。私はクエリを変更する必要はありません、私はクエリ結果からデータを変更することができますフックが必要です。 – aboeka

+0

ありがとう、私の解決策をより良く見えるが、 'the_post'は無視されるようだ。何か案は? add_actionは、クラス内の構築関数内にあります。私はフックやワードプレスにはかなり新しいです。 – aboeka

+0

このコードスニペットをクラスの外で、テーマfunctions.phpで使用してみてください。そして、何も起こらなければ、エコーを働かせてください。 my_the_post_actionの開始時には何も起こらないと確信しています。管理領域では、身体に近いソースコードを見て、beacuse 'works'はおそらく隠されています。 – keyBeatz

関連する問題