0

私はPHPをあまりよく知らないので、この質問をするときに十分なコードを表示できることを願っています。ホームページの一部に最新の5つのブログ投稿が表示されるので、次のように設定します。

<?php
function get_latest_post_html() {
    $content = "";
    query_posts('showposts=5');
    while (have_posts()){
        the_post();
        $content .= "<p class='title'><a href='" . get_permalink() . "'>" . get_the_title() . "</a></p>\n" .
                "<p class='excerpt'><a href='" . get_permalink() . "'><img src='" . wp_get_attachment_url( get_post_thumbnail_id($post->ID) ) . "' class='rt-image img-left wp-post-image' style='max-width:175px;'/></a>" . get_the_excerpt() . "</p><br/><hr/>";
    }
    wp_reset_query();

    return "<div class='latest-post'>\n$content\n</div>";
}

add_shortcode('get_latest_post', 'get_latest_post_html');
?>

<hr/>最後の5つの投稿は問題なく呼び出されますが、5番目の投稿の下部にを表示させたくありません。

4

3 に答える 3

5

while条件付きでを表示するために、ループ内にいくつかのロジックを設定します<hr >

例えば:

$i = 0;
while (have_posts()) {
  ++$i;
  the_post();

  // ...

  if ($i < 5) {
    $content .= '<hr />';
  }
}

注: WordPressは5つの投稿を返さない可能性があるため、そのパスを検討する必要があります。また、タイトなループでの文字列の連結はお勧めしません。コードをリファクタリングして、を使用しますecho

于 2012-08-22T19:09:41.120 に答える
4

あなたは最後を取り除く必要があるだけなので<hr/>

substr()を使用してみてください 。したがって、あなたの場合、whileループが終了した後にこれを追加してください

$content = substr($content, 0, -5)

于 2012-08-22T19:12:01.620 に答える
0
<?php

function get_latest_post_html() {
    $content = "";
    query_posts('showposts=5');
    $i = 0;
    while (have_posts()){
    i++;
        if(i < 5){
        the_post();
            $content .= "<p class='title'><a href='" . get_permalink() . "'>" . get_the_title() . "</a></p>\n" .
                    "<p class='excerpt'><a href='" . get_permalink() . "'><img src='" . wp_get_attachment_url( get_post_thumbnail_id($post->ID) ) . "' class='rt-image img-left wp-post-image' style='max-width:175px;'/></a>" . get_the_excerpt() . "</p><br/><hr/>";
        }
        else{
        $i = 0;
        //do something
        }
    }
    wp_reset_query();

    return "<div class='latest-post'>\n$content\n</div>";
}

add_shortcode('get_latest_post', 'get_latest_post_html');
?>
于 2012-08-22T19:12:28.240 に答える