- 締切済み
phpコードを解説して欲しいです。$str 多く困
$str = '<h3 id="trackbacks">Trackback</h3>'; $str .= '<ol class="trackback-list" id="custom-trackback">'; $i = 0; foreach ( $comments as $comment ) { if ( get_comment_type() != 'comment' ) { $str .= '<li class="clearfix" id="comment-' . get_comment_ID() . '">'; $str .= '<div class="trackback-author">'; $str .= '<p class="comment-author-name">'; $comment_author_url = $comment->comment_author_url; $comment_author = $comment->comment_author; if ( $comment_author_url ) { $str .= '<a href="' . esc_url( $comment_author_url ) . '" target="_blank" title="' . esc_attr( $comment_author ) . '">'; $str .= esc_html( $comment_author ); $str .= '</a>'; } else { $str .= esc_html( $comment_author ); } $str .= '</p>'; $str .= '<p class="comment-meta">' . '<a href="' . esc_url( get_comment_link( $comment->comment_ID ) ) . '">' . get_comment_date() .'<span>'. get_comment_time() . '</span><a class="edit" href="' . get_edit_comment_link() . '">(編集)</a></span></p>'; $str .='</div>'; $str .= '<div class="trackback-body">'; if ( $comment->comment_approved == '0' ) { $str .= '<p class="attention"><em>あなたのトラックバックは承認待ちです。</em></p>'; } $str .= '<p>' . esc_html( get_comment_text() ) . '</p>'; $str .= '</div>'; $str .= '</li>'; $i++; } } $str .= '</ol>'; if ( $i > 0 ) { echo $str;
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- t_ohta
- ベストアンサー率38% (5238/13705)
if文の中だろうがループの中だろうが .= の動作は同じです。 それ以前に定義されている $str に .= の右辺を追加していきます。 $str = '<h3 id="trackbacks">Trackback</h3>'; $str .= '<ol class="trackback-list" id="custom-trackback">'; の後の1回目のループでif文の判定が真なら $str .= '<li class="clearfix" id="comment-' . get_comment_ID() . '">'; 以降が実行され、偽の場合はelse文による処理が無いので $str には何も書き足されずに1回目のループを終えて2回目のループが実行されます。
- AsarKingChang
- ベストアンサー率46% (3467/7474)
>上記の左と右が等しくないので、 もしかして、こういう意味での質問でした? $a=なにか; $b=なにか; $str ="AとBは"; if ($a == $b) { $str.="同じです"; }else{ $str.="違います"; } のように、条件によって結合する文字を 変化させて、送り出す文字列を作っているにすぎません。 最後に、echoで送り出してるので、 極端に言えば、その時点で送り出しても、良いソースなんですがね。
お礼
<h3> Trackback </h3> <ol class="trackback-list" id="custom-trackback"> 等しくないなら <li class="clearfix" id="comment-' . get_comment_ID() . '"> 次 '<a href="' esc_url( $comment_author_url ) '" target="_blank" title="' esc_attr( $comment_author ) '">';$str .= esc_html( $comment_author );'</a>'; 違っても <p class="comment-author-name"></p> <div class="trackback-author">'<p class="comment-meta">' . '<a href="' . esc_url( get_comment_link( $comment->comment_ID ) ) . '">' . get_comment_date() .'<span>'. get_comment_time() . '</span><a class="edit" href="' . get_edit_comment_link() . '">(編集)</a></span></p></div> <li class="clearfix" id="comment-' . get_comment_ID() . '"></i> <div class="trackback-body"></div> もしコメント承認=0なら <p class="attention"><em>あなたのトラックバックは承認待ちです。</em></p> 違うなら <div class="trackback-author"><p>' . esc_html( get_comment_text() ) . '</p></div> <li class="clearfix" id="comment-' . get_comment_ID() . '"></li> <ol class="trackback-list" id="custom-trackback"></ol> もしコメントが1以上あるから数える ループから&str文字列含めた HTMLのマークアップになるのかわかりません。 ここまで解読中です。
補足
はい。そうです。 難しく考えて結局何がと何がを文字列の結合するのかわかりません。
- AsarKingChang
- ベストアンサー率46% (3467/7474)
この中の何を解説してほしいのかが、わかりません。 単に文字結合をしていって、 $comment 要するにコメント数が0より上なら、 表示してるだけに見えます。
補足
$str $str 続くのですが代入して文字列の意図がわかりません。 $str = '<h3 id="trackbacks">Trackback</h3>'; $str .= '<ol class="trackback-list" id="custom-trackback">'; 上記の文字列コードは、<h3 id="trackbacks">Trackback</h3><ol class="trackback-list" id="custom-trackback ですが、 if ( get_comment_type() != 'comment' ) 上記の左と右が等しくないので、 $str .= '<li class="clearfix" id="comment-' . get_comment_ID() . '">'; $str .= '<div class="trackback-author">'; $str .= '<p class="comment-author-name">'; どのように代入して読み解くのがわかりません。 <?php $text = "私の名前は"; $text .= "ジョン"; $text .= "です。"; echo $text; ?> 上記は例ですが理解します。ドットイコールこのことですね。 文字列がわかりません。
お礼
<h3> Trackback </h3> <ol class="trackback-list" id="custom-trackback"> 等しくないなら <li class="clearfix" id="comment-' . get_comment_ID() . '"> 次 '<a href="' esc_url( $comment_author_url ) '" target="_blank" title="' esc_attr( $comment_author ) '">';$str .= esc_html( $comment_author );'</a>'; 違っても <p class="comment-author-name"></p> <div class="trackback-author">'<p class="comment-meta">' . '<a href="' . esc_url( get_comment_link( $comment->comment_ID ) ) . '">' . get_comment_date() .'<span>'. get_comment_time() . '</span><a class="edit" href="' . get_edit_comment_link() . '">(編集)</a></span></p></div> <li class="clearfix" id="comment-' . get_comment_ID() . '"></i> <div class="trackback-body"></div> もしコメント承認=0なら <p class="attention"><em>あなたのトラックバックは承認待ちです。</em></p> 違うなら <div class="trackback-author"><p>' . esc_html( get_comment_text() ) . '</p></div> <li class="clearfix" id="comment-' . get_comment_ID() . '"></li> <ol class="trackback-list" id="custom-trackback"></ol> もしコメントが1以上あるから数える ループから&str文字列含めた HTMLのマークアップになるのかわかりません。 ここまで解読中です。
補足
最初: $str = h3 $str = ol <H3></h3><ol></ol> 結合文書 1回目のIF comment type -が、comment と等しくないなら <div></div><p></p> 結合文書 2回目のIF <a href="' . esc_url( $comment_author_url ) . '" target="_blank" title="' . esc_attr( $comment_author ) . '">';esc_html( $comment_author );</a>'; ここまで読み解いています。皆様。。。汗