2

functions.php にショートコードを作成しました。これは、「ハイライト」のタグが付いた 3 つの最新のブログ投稿 (タイトル、サムネイル、続きを読むリンク) を返すように設計されています。私のショートコードの PHP はタグ パラメータを正常に認識しますが、1 つの投稿しか返しません。

ご覧のとおり、「posts_per_page」パラメーターを使用して、返す投稿の数を定義しています。現時点では、1、2、または 3 を入力すると、最新の 3 つの投稿ではなく、日付順に 1、2、または 3 番目の投稿が単純に返されます。「numberposts」と「showposts」を試してみましたが失敗しました (試行錯誤!)。

ここで何が欠けているのか教えてください。これは私の functions.php ファイルにあります:

function highlight_posts() {
    $args = array('tag' => 'highlight' , 'posts_per_page' => 4);
    $the_query = new WP_Query( $args );
        while ( $the_query->have_posts() ) : $the_query->the_post();
            $return_string = '<div class="blog-post-highlight"><div class="blog-post-img"><a href="'.get_permalink().'">'.get_the_post_thumbnail($page->ID, array( 300, 168 )).'</a></div><div class="blog-post-content"><h3><a href="'.get_permalink().'">'.get_the_title().'</a></h3><p class="read-more"><a href="'.get_permalink().'">Read More...</a></p></div><div class="clear"></div></div>';
        endwhile;
    wp_reset_postdata();
    return $return_string;
}

add_shortcode( 'highlightposts', 'highlight_posts' );

そして、これは [highlightposts] を挿入することで WYSIWYG エディター内に展開されます。

4

1 に答える 1

4

これを試して:

function highlight_posts() {
    $args = array('tag' => 'highlight' , 'posts_per_page' => 4);
    $return_string ="";
    $the_query = new WP_Query( $args );
        while ( $the_query->have_posts() ) : $the_query->the_post();
            $return_string .= '<div class="blog-post-highlight"><div class="blog-post-img"><a href="'.get_permalink().'">'.get_the_post_thumbnail($page->ID, array( 300, 168 )).'</a></div><div class="blog-post-content"><h3><a href="'.get_permalink().'">'.get_the_title().'</a></h3><p class="read-more"><a href="'.get_permalink().'">Read More...</a></p></div><div class="clear"></div></div>';
        endwhile;
    wp_reset_postdata();
    return $return_string;
}

add_shortcode( 'highlightposts', 'highlight_posts' );

新しい値を追加するのではなく、$return_string に新しい値を与えていました。そうだったか確認

于 2012-10-16T10:50:24.730 に答える