teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

追記

2019/05/08 05:22

投稿

CHERRY
CHERRY

スコア25234

answer CHANGED
@@ -35,7 +35,7 @@
35
35
 
36
36
  追記
37
37
 
38
- そのまま、`save_post` フックで登録するならこんな感じでしょうか。
38
+ そのまま、`save_post` フックで登録するならこんな感じでしょうか。(今回の例では、if 内の remove_action と add_action は、なくても問題なく動作すると思いますが、そのまま残しておきます。)
39
39
 
40
40
  ```
41
41
  function force_update_post_188290( $post_id ) {

1

コード例を追加

2019/05/08 05:21

投稿

CHERRY
CHERRY

スコア25234

answer CHANGED
@@ -9,11 +9,11 @@
9
9
  投稿等を検索するのに利用する wp オプジェクトが使用できるのは、 [wp](https://codex.wordpress.org/Plugin_API/Action_Reference/wp) フック以降になります。
10
10
 
11
11
 
12
- 通常通りに `save_post` フックで呼び出される関数のなかで、投稿IDを取得して、条件判断するほうが簡単だと思いますが...
12
+ 通常は、[save_post#無限ループ回避](https://wpdocs.osdn.jp/%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3_API/%E3%82%A2%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E3%83%95%E3%83%83%E3%82%AF%E4%B8%80%E8%A6%A7/save_post#.E7.84.A1.E9.99.90.E3.83.AB.E3.83.BC.E3.83.97.E5.9B.9E.E9.81.BF) の例のように `save_post` フックで呼び出される関数のなかで、投稿IDを利用してステータスを確認して、条件判断するほうが簡単だと思いますが...
13
13
 
14
14
  どうしても、投稿ID をチェックしてから HOOK を登録したいということであれば、無駄が多いですが、全体を function で囲って、 `wp` フックで、実行されるようにしてください。
15
15
 
16
- コードの中は確認していませんが、こんな感じで、外側を function で囲って、`add_action('wp', '外側の関数名');` を追加してください
16
+ 質問のコードの中は確認していませんが、こんな感じで、外側を function で囲って、`add_action('wp', '外側の関数名');` を追加してください
17
17
 
18
18
  ```
19
19
  functuon add_hook_188290() {
@@ -29,4 +29,22 @@
29
29
  }
30
30
  }
31
31
  add_action('wp', 'add_hook_188290');
32
+ ```
33
+
34
+ ----
35
+
36
+ 追記
37
+
38
+ そのまま、`save_post` フックで登録するならこんな感じでしょうか。
39
+
40
+ ```
41
+ function force_update_post_188290( $post_id ) {
42
+ if ( get_post_status( $post_id ) == 'publish' ) {
43
+ remove_action( 'save_post', 'force_update_post_188290' );
44
+ $args = array( 'ID' => $post_id, 'post_status' => 'pending' );
45
+ wp_update_post( $args );
46
+ add_action( 'save_post', 'force_update_post_188290' );
47
+ }
48
+ }
49
+ add_action( 'save_post', 'force_update_post_188290' );
32
50
  ```