web-dev-qa-db-ja.com

ワードプレスが投稿を更新または公開しているかどうかを確認する

非常に単純な質問:wpが更新を行っているのか、投稿を公開しているのかを確認するにはどうすればよいですか?私はpostmetaの値をチェックしなければなりません。これは、投稿が実際に公開されている場合にのみ当てはまります。そのため、システムに既に存在している必要はありません。例えば。 if(defined( 'DOING_AUTOSAVE')&& DOING_AUTOSAVE)は、wpが自動保存を行っているときに定義されます。アップデートしているときにこのようなことはありますか?ありがとうございました!!

そうだね

add_action('save_post', 'fields_news_save');
function fields_news_save($post_id){
$errors = false;
       if(get_check_key($_POST['checks_news'])==0){
    $errors = true;     
    update_option('custom_token', $errors);
    update_option('custom_admin_errors', $txt_err=error_text($errors, 2));

    remove_action('save_post','fields_news_save');
    wp_update_post(array('ID' => $post_id, 'post_status' => 'draft'));
    add_action('save_post', 'fields_news_save');

    return false;
}
}

"if"節は、$ _POST ['checks_news']に設定されたメタ投稿値があるかどうかをチェックします。これは、クエリを実行する関数です。function get_check_key($checker){ global $wpdb; $data = array(); $wpdb->query(" SELECT * FROM $wpdb->wp_postmeta WHEREmeta_value= $checker; "); return $wpdb->num_rows; }

今私がやりたいことはbeginnigの "if"が行数が0であり、wpが更新ではなくパブリッシュをしているかどうかをチェックすることです。

1
Tony

投稿のIDがすでにデータベースに存在するかどうかをチェックするだけで問題を回避できます。

get_post($id)==NULL

おそらくそれが私が必要なことをする最も簡単な方法です。

1
Tony

"投稿を投稿"、 "投稿を保存"、または "ドラフト投稿"アクションが開催中のときにアクションを実行する必要がある場合は、適切なactionフックにコールバックを追加します。すなわち、publish_postsave_post、またはdraft_postです。

アクションを実行する必要がある場合は{あるステータスから別のステータスへの投稿の遷移中}、適切な 投稿ステータス遷移フック を使用することをお勧めします。

0
Chip Bennett