Я думал о петле while, но не могу найти способ обойти это:
$foo1 = get_post_meta( $post->ID, '_item1', true ); if (!empty($foo1)){ echo ("<div class='$foo1'></div>"); } $foo2 = get_post_meta( $post->ID, '_item2', true ); if (!empty($foo2)){ echo ("<div class='$foo2'></div>"); }
И так далее … сто раз, пока я не достиг $ foo100 и _item100. Любая идея достичь этого, чтобы не повторять эти 4 строки снова и снова?
Для этого вам не нужны переменные переменные , а просто цикл for
:
for( $i=1; $i<101; $i++ ) { $klass = get_post_meta( $post->ID, '_item' . $i, true ); if( !empty($klass) ) { echo "<div class='$klass'></div>"; } }
Это работает до тех пор, пока вам не понадобятся переменные $fooX
. Если вам это нужно, вам нужно будет использовать либо упомянутые переменные переменные, либо массив для сбора всех значений.
вы хорошо думаете в цикле while
Вы можете использовать:
$conter = 1; while ($counter< 100) // or whatever limit you have { $foo = get_post_meta( $post->ID, '_item' . $counter , true ); if (!empty($foo)){ echo ("<div class='$foo' . $counter .' ></div>"); } $conter++; }
Если вы скопируете этот код, вы, вероятно, попадете в некоторые компиляционные ошибки из-за строки concat.
В основном вам нужно объединить строку «_item» с вашим текущим счетчиком $.
Вот несколько примеров строк.
Дайте знать, если у вас появятся вопросы.