Я хочу обновить все мои custom_field, указав определенный номер для каждого из моих сообщений. Проблема: я не хочу добавлять числа с 0 внутри.
$i = 1; // Start from 1
if ($ajax_query->have_posts()) :
while ($ajax_query->have_posts()) :
$ajax_query->the_post();
update_post_meta( get_the_ID(), 'the_custom_field', $i++ );
// $i++ will be the specific number for each my post.
endwhile;
endif;
Теперь в моем сообщении 1 есть the_custom_field 1, в моем сообщении 2 есть the_custom_field 2.... в моем сообщении 10 есть the_custom_field 10.
Но должно быть так:
Я думаю, пост 11 будет номером 12.
Да, пост 11 будет 12 и т.д.
Итак, проверьте, содержит ли идентификатор сообщения символ 0, и если да, добавьте еще один в $i? «Это должно отложить остальные» — как «отложить»? Вы просто имеете в виду, что хотите вообще не обновлять посты 10, 20, …?
Я отредактировал вопрос. Отложить, возможно, было не лучшим словом.
if ( strpos( (string)get_the_ID(), '0' ) !== false ) …
Используйте цикл while.
@04FS Я не хочу проверять идентификатор сообщения. Все сообщения должны быть обновлены с номером. Я просто не хочу добавлять число с 0 внутри. Если $i++ имеет ноль, то не обновляйте это конкретное число, а добавляйте следующее число, у которого нет 0






<?php
if ($ajax_query->have_posts()) :
while ($ajax_query->have_posts()) :
$ajax_query->the_post();
update_post_meta( get_the_ID(), 'the_custom_field', $i++);
while (strpos(strval($i),'0') !== false):
$i++;
endwhile;
endwhile;
endif;
Что ж, как только мы назначаем идентификатор, мы запускаем цикл while до тех пор, пока не получим значение, которое не содержит 0.
Логика - это то, что я хочу, но она не работает, она продолжает загружаться
@Youstart Естественно, потому что это метод грубой силы. Похоже, вы обновляете много строк, но не могли бы вы сообщить мне, почему такое требование?
Я не уверен, потому что у меня около 60 сообщений, и если я обновлю свои сообщения (с обычным $i), это займет меньше секунды. Я мог бы вручную добавить свое поле custom_post_field, но пытался найти более быстрый способ на будущее.
@Youstart Я внес изменения в свой код. Теперь все должно работать нормально.
@Youstart Рад помочь :). Но обратите внимание, что это может замедляться при большом количестве строк из-за самих вычислений, а также из-за запроса к БД, запускаемого каждый раз в цикле.
Да, конечно, мне нужно будет делать это время от времени, а не каждый день. Спасибо
Как это возможно человек?