タグ付けされた質問 「save-post」

1
新しい投稿を作成するときにsave_postアクションが発生するのはなぜですか?
save_post管理ダッシュボードの[新しい投稿]リンクをクリックすると、アクションに追加した私の機能が実行されることに驚かされます。注-これは、Saveまたはを押す前Updateであり、経過時間または自動更新の後ではなく、すぐに起動します。 一方、何かを入力してPublishor UpdateまたはSave Draftボタンを押すと、アクションハンドラー内に配置したechoステートメントはエコーアウトされないため、それ以外の時間にアクションが起動しないように見えます。これは無関係かもしれません。 ここに私のコードがあります: add_action('save_post', 'MyNS\save_event_metabox', 10, 2); function save_event_metabox($post_id, $post){ echo "<h1>YES!</h1>"; } この「YES」は、「新しい投稿」リンクを押すと(ページの上部に)エコーしますが、何かを入力してからUpdateまたはPublishまたはを押すとエコーしませんSave Draft。これは、save_postアクションとwp_insert_post()機能に関するドキュメントと矛盾しているようです。 誰も私のためにこれをクリアできますか?

7
カスタムフィールドを保存するときに検証とエラー処理を追加しますか?
投稿タイプのカスタムフィールドを定義する関数があります。フィールドが「サブヘッド」であるとします。 投稿が保存されたら、入力に対して何らかの検証を行い、必要に応じて投稿編集画面にエラーメッセージを表示します。何かのようなもの: // Handle post updating function wpse_update_post_custom_values($post_id, $post) { // Do some checking... if($_POST['subhead'] != 'value i expect') { // Add an error here $errors->add('oops', 'There was an error.'); } return $errors; } add_action('save_post','wpse_update_post_custom_values',1,2); これをsave_postアクションにフックしようとしていますが、エラーの処理方法がわかりません。関数に渡されたエラーオブジェクトは存在しないようで、独自のWP_Error objを作成してそれを返す場合、ポスト編集ページでエラーを吐き出すメカニズムによって尊重されません。 現在、カスタムメタボックス内にページ上のエラーメッセージがありますが、これは理想的とは言えません。WPが通常表示するような、大きくて赤くて上部にエラーがあります。 何か案は? 更新: @Denisの回答に基づいて、いくつかの異なることを試しました。エラーをグローバルとして保存することは機能しませんでした。これは、Wordpressがsave_postプロセス中にリダイレクトを行うため、グローバルを表示する前に強制終了するためです。 私はそれらをメタフィールドに保存することになりました。これに伴う問題は、それらをクリアする必要があることです。そうしないと、別のページに移動しても消えないため、エラーをクリアするだけのadmin_footerに追加された別の関数を追加する必要がありました。 非常に一般的なもの(投稿の更新)のエラー処理がこれほど不格好になるとは思いませんでした。明らかな何かを見逃していますか、これが最良のアプローチですか? // Handle post updating function wpse_5102_update_post_custom_values($post_id, $post) …


4
メタボックスから「admin_notices」にエラー/警告メッセージを渡す
投稿カスタムフィールドを更新するシンプルなメタボックスがあります(を使用update_post_meta())。 ユーザーが投稿を公開/更新し、メタボックスフィールドの1つを埋めない(または無効なデータを埋める)後にエラーまたは警告メッセージを次のページに送信するにはどうすればよいですか?

2
投稿を更新するときにフックする正しい方法は何ですか
私は投稿が更新されたときにフックしようとしますが、すべてのフックは決して実行されません updated_post_meta add_action('updated_post_meta', 'my_function'); function my_function($post_id) { echo 'This is my post ID : '.$post_id; } 私はこれを試しましたadd_action('save_post', 'my_function');が、IDはエコーアウトされませんでした、またはおそらくこのメッセージはすでにエコーされていますが、リダイレクトヘッダーが送信されているためレンダリングされません。
19 php  hooks  actions  save-post 

5
カスタムフィールドが入力されていない場合、投稿が公開されないようにします
Event開始日時と終了日時のカスタムフィールドを含むカスタム投稿タイプがあります(投稿編集画面のメタボックスとして)。 イベントデータを表示するテンプレートで問題が発生するため(必要な要件であるという事実に加えて!)、日付を入力しないとイベントを公開(またはスケジュール)できないことを確認したいと思います。ただし、準備中に有効な日付を含まないドラフトイベントを使用できるようにしたいと思います。 私はsave_postチェックを行うためにフックすることを考えていましたが、ステータスの変化が起こらないようにするにはどうすればよいですか? EDIT1:これは、post_metaを保存するために現在使用しているフックです。 // Save the Metabox Data function ep_eventposts_save_meta( $post_id, $post ) { if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return; if ( !isset( $_POST['ep_eventposts_nonce'] ) ) return; if ( !wp_verify_nonce( $_POST['ep_eventposts_nonce'], plugin_basename( __FILE__ ) ) ) return; // Is the user allowed to edit the post …

4
save_postを使用して投稿のタイトルを置き換える
私はカスタム投稿を使用していますが、これらではタイトルは必要ありません。 これにより、Wordpressは私の投稿のタイトルを「自動ドラフト」に設定します。 タイトルの値を、投稿内の他のフィールドから計算された別の値に変更したいと思います。 save_postまたは他の手段を使用してこれを行うにはどうすればよいですか?

2
save_postコールバックで無限ループを回避する方法
私は自分の問題を解決するためにこのサイトをたくさん使ってきましたが、今回は問題の発見と回答に成功しませんでした。 wp_update_post呼び出される関数内で使用すると、無限ループが発生しsave_postます。これはよくある問題ですが、どうすれば回避できるかわかりません。 投稿の順序を保存したい(投稿タイプの「セクション」)。だから私はいくつかのソート可能なhtml要素を含むカスタムメタボックスを作りました。各要素には、name = 'sectionorder []'の非表示の入力タグがあります。したがって、標準のWordPressの「更新」ボタンをクリックすると、投稿のすべてのIDを(順番に)含む配列がPOST経由で送信されます。だからここに私が配列を取得し、順序を保存したいコードがあります: // Update section sort order $sectionorder = $_POST['sectionorder']; if (isset($sectionorder)) { // Avoid error if there is no sections added yet foreach( $sectionorder as $no => $sectionID ) { $post_update = array(); $post_update['ID'] = $sectionID; $post_update['menu_order'] = $no; wp_update_post( $post_update ); } } しかし問題は、それが無限ループを開始することです。どうすればそれを回避できますか?多分私はそれを完全に異なる方法で行うことができますか? …

2
チェックボックス付きのメタボックスが更新されない
単一のチェックボックスでmeta_boxを設定しようとすると、すべてがうまくいきますが、チェックを外して投稿を保存すると、再びチェック済みのマークが付きます。 私のコードを見てみましょう。 function am_checkbox_option() { global $post; $custom = get_post_custom($post->ID); $front_event = $custom["front_event"][0]; wp_nonce_field(__FILE__, 'am_front_event'); if ( $front_event ) { $checked = "checked=\"checked\""; } else { $checked = ""; } ?> <label>Display Content? (type yes):</label> <input type="checkbox" name="front_event" value="true" <?php echo $checked; ?> /> <?php } } add_action('save_post', function() { …


2
DOING_AUTOSAVEのときに$ post_idを返しますか?
このサイトや他の場所で、次のパターンが繰り返し見られます。 add_action( 'save_post', 'wpse14169_save_post' ); function wpse14169_save_post( $post_id ) { if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) { return $post_id; } // Other code... } なぜ戻る必要があり$post_idますか?save_postはアクションであり、アクションハンドラの戻り値は無視されます。WordPressコア自体もそれを行いません。 コーデックスの例はを返しますが$post_id、コーデックスの最初の不正な(または古い)行ではありません。 何か不足していますか?戻る必要があり$post_idますか?これが必要な時期はありましたか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.