前提・実現したいこと
Wordpressにて「投稿ページURLの自動更新」を制作してみたところ、関数による「日時」の呼び出し等の更新は実現出来ましたが、数字をカウントアップさせるための記載が分からず質問させていただきました。
テストの状態では、末尾の数字がカウントアップされない状態で、カウントは「1」のまま。
とうとう行き詰まってしまったので、ご教示いただけないでしょうか。
※結果の確認がしやすいため現在は「1分毎に1を加算」でテストしております。
該当のソースコード
PHP
1function my_add_intervals($schedules) { 2 $schedules['1min'] = array( 3 'interval' => 60, 4 'display' => __('every 1 minute') 5 ); 6 return $schedules; 7} 8add_filter( 'cron_schedules', 'my_add_intervals'); 9 10if ( !wp_next_scheduled( 'update_post_slug_cron' )) { 11 wp_schedule_event( time(), '1min', 'update_post_slug_cron' ); 12} 13 14function update_post_slug() { 15 $args = array( 16 'posts_per_page' => -1, 17 'post_type' => 'post' 18 ); 19 $posts = get_posts($args); 20 foreach ($posts as $post) { 21 if(preg_match('/aaaaa/', $post->post_name)) { 22 date_default_timezone_set('Asia/Tokyo'); 23 24 $countnum = 1; 25 $countplus = $countnum++; 26 27 $base_slug = $post->post_name; 28 if(strpos($base_slug,'_')) { 29 $base_slug = substr($base_slug, 0, strcspn($base_slug, '_')); 30 } 31 $my_post = array( 32 'ID' => $post->ID, 33 'post_name' => $base_slug . '_' . $countplus, 34 ); 35 wp_update_post($my_post); 36 } 37 } 38} 39add_action ('update_post_slug_cron', 'update_post_slug'); 40
PHP
1$countnum = 1; 2$countplus = $countnum++;
この箇所が
PHP
1$my_post = array( 2'ID' => $post->ID, 3'post_name' => $base_slug . '_' . $countplus, 4);
この箇所が毎分「_1」「_2」「_3」と反映されず、結果が「_1」のままなのが、詰まっているポイントです。
試したこと
色々と試してみましたが、foreachで加算させる事に無理があるのでしょうか…
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答3件
あなたの回答
tips
プレビュー