web-dev-qa-db-ja.com

投稿がデータベースに挿入される前に、新しい投稿を作成してwp_die()を実行する方法を教えてください。

Codexからのwp_dieに関する情報:WordPressの実行を終了し、エラーメッセージ付きのHTMLメッセージを表示します。この関数を呼び出すと、die()PHP関数が補完されます。違いは、HTMLがユーザーに表示されることです。実行をこれ以上続行しない場合にのみ、この機能を使用することをお奨めします。

私はコードがあります:

function myHook( $post_ID, $post )
{
     wp_die('Error', 'Error',  array( 'response' => 500, 'back_link' => true ));
}
add_action( 'save_post', 'myHook', 0, 2 );

問題はエラーページが表示されますが、投稿がまだ挿入されていることです。このフックによって保存が中断されるべきではありませんか?説明を誤解した場合、投稿が保存されないように実行を中断するにはどうすればよいですか。

編集:私はちょうどsave_postが前にではなくデータベースへの挿入後に呼び出されることを発見しました。私がフックすることができます挿入前に呼び出された任意の関数はありますか?

前もって感謝します

2
user1666774

代わりにwp_insert_post_dataでフィルタリングしてみてください。 2864行目のwp-includes/post.phpからです。

add_filter( 'wp_insert_post_data', 'post_publish_filter_wpse_82356' );
function post_publish_filter_wpse_82356( $data ) {
    // view/manipulate $data
    if ('publish' == $data['post_status']) {
        $msg = '<pre>' . var_export($data, true) . '</pre>';
        wp_die($msg);
    }
    return $data;
}

publishは、発行または更新ボタンをクリックしたときのpost_statusです。私が見つけた4つのステータスは以下のとおりです。

  • 自動下書き - 自明(また、クリックするとステータスがこれに設定されます新規追加
  • 下書き - 下書きを保存ボタンをクリックしたとき
  • 継承 - プレビューボタンをクリックしたとき
  • 公開 - クリックしたとき公開または更新ボタン
2
akTed