※ ChatGPTを利用し、要約された質問です(原文:任意の数だけ繰り返した文字列をreturnで返したい)
任意の数だけ繰り返した文字列をreturnで返す方法をご教示ください
このQ&Aのポイント
WordPressで指定した数だけ文章を繰り返すショートコードを作りたいです。
while文を使用するとreturnで繰り返しが止まってしまうため、困っています。
printやechoではなく、returnで返す必要がある理由として、ショートコードハンドラ関数の返り値は投稿コンテンツの出力に挿入され、echoではなくreturnを使用する必要があります。しかし、returnを使うと繰り返しが止まってしまいます。解決策をご教示ください。
任意の数だけ繰り返した文字列をreturnで返したい
wordpressで指定した数だけ文章を繰り返すショートコードを作りたいです。
最終的にreturnで値を返したいのですが、whileを使うとreturnで繰り返しがとまってしまうので困っています。
↓書いてみたもの
-------------
function hogeList($atts) {
extract(shortcode_atts(array( //
"id" => '',
"num" => ''
),$atts));
$i=0;
do {
$block = "<li>IDは" .$id. "、番号は" .$num. "番です</li>\n";
++$i;
} while($i<$num); // numの数だけ繰り返す
return "<ul class=\"user\">" .$block. "番</ul>\n";
}
add_shortcode("hoge", "hogeList");//hogeListを[hoge]というショートコードにする
-------------
例えば[hoge id=hoge num=3]の時、
<ul>
<li class="user">IDはhoge、番号は0番です</li>
<li class="user">IDはhoge、番号は1番です</li>
<li class="user">IDはhoge、番号は2番です</li>
</ul>
となるようにしたいです。
printやechoではなく、returnで返す必要がある理由はこちらです。
『ショートコードハンドラ関数の返り値は、ショートコードマクロの代わりに投稿コンテンツの出力に挿入されます。 echo ではなくて return を使用するようにしてください。
echo されたものは全てブラウザに出力されますが、ページの適切な箇所に表示されません。』
引用元:http://www.c-styles.jp/archives/191#more-191
printやechoだと繰り返しは上手くいくのですが、確かに表示箇所がおかしくなります。
記事の続きに書いていても、他の文章を無視して本文の一番上に強制的に表示されていました。
しかしreturnを使うと繰り返しがとまってしまい、最初の1つしか表示されません。
確かにreturnやbreakで停止させると解説されていたので、仕方ないのですが、何か方法はないでしょうか?
初心者なので、google先生に聞いたりネットのPHP初心者向けの解説を見ながら見様見真似でやっています…。
色々なサンプルを見ていると、foreachというのが何か近そうな気がする…!と思ったのですが、サンプルが配列(で合ってるでしょうか…)が固定された状態のものが多く、任意の数値や文字を渡して使いたい場合にどう扱えばいいか分からないのです。
どなたかお知恵を貸していただけないでしょうか。
wordpressではありますが、内容的にはPHPの方だと思いこちらのカテゴリで質問させていただきました。
よろしくお願いいたします。
お礼
で、できましたー!! すごいです、嬉しいです、有難うございます><