web-dev-qa-db-ja.com

ホームページのカテゴリから投稿コンテンツを取得する方法

特定のカテゴリの投稿を自分のホームページのボックスに表示するようにしています。しかし、私のホームページに投稿できるのは1つだけです。以下のコードでこれを機能させるにはどうすればよいですか。タイトルを取得しながら、抜粋(文字数を制限 - もっと読むことなく)そして投稿リンク(下のもっと読むボタンに?)

echo '<section class="row"><div class="container-item">
            <div class="item">
            <div class="item-overlay">
            <div class="item-content">
            <div class="item-top-content">
            <div class="item-top-content-inner">
            <div class="item-product">
            <div class="item-top-title">
            <h2>';
            echo get_the_title();
            echo '</h2><p class="subdescription">';
            the_excerpt();
            echo '</p></div></div></div>
            <div class="item-add-content">
            <div class="item-add-content-inner">
            <div class="section">
            <a href="#" class="btn buy expand">Read More</a>
            </div>
            </div>
            </div>
            </div>
            </div>
        </div>
</section>';

編集:

ありがとうピーターグーゼン。これはあなたの提案といくつかのマイナーな編集を加えたコードで、私はかなりスライド式のボックスを作成するためにjqueryとcssを使いました。

function homepage_highlights() { ?>
<?php $my_query = new WP_Query('category_name=accommodation&posts_per_page=3'); ?>
<?php while ($my_query->have_posts()) : $my_query->the_post(); ?>
<section class="row"><div class="container-item">

       <div class="item" <body style="background-image:url(<?php echo catch_that_image() ?>)">
        <div class="item-overlay">
        <div class="item-content">
        <div class="item-top-content">
        <div class="item-top-content-inner">
        <div class="item-product">
        <div class="item-top-title">
        <h3 class="title-front-page"><?php echo '<a href="' . get_permalink() . '">' . get_the_title() . '</a>'; ?>
        </h2></div>
    </div>
    </div>  
    </div>
    <div class="item-add-content">
    <div class="item-add-content-inner">
    <div class="section">
    <p class="subdescription">
        <?php the_excerpt(); ?>
    </p>

        </div>
   </div>
</div>
</div>
</div>
</div>
</section>
1
sander

そんなにエコーすることが本当に必要ですか。開始と終了のphpタグを適切に使用すれば、echoの使用をやめることができます。そのためのビルドイン機能があるのに、なぜget_the_title()とエコーしているのですか。 the_title()はまったく同じです。

特定のカテゴリから投稿を取得するための特別なループを作成するには、 WP_Query を使用します。新しいループを開始するときには、ループをリセットすることを忘れないでください。複数のループの場合は、 ループ も確認してください。このページの作者は、一言で言うとquery_postsを使用しました。これは絶対に使用してはいけません。WP_Queryを使用してください。

抜粋としては、あなたは以下のように続きを読むリンクを変更することができます

function new_excerpt_more( $more ) {
    return ' <---the code of your button here--->';
}
add_filter( 'excerpt_more', 'new_excerpt_more' );

それで、結局、あなたのコードはこのようになるはずです

<?php $my_query = new WP_Query('category_name=special_cat&posts_per_page=10'); ?>

<?php while ($my_query->have_posts()) : $my_query->the_post(); ?>

<section class="row"><div class="container-item">
            <div class="item">
            <div class="item-overlay">
            <div class="item-content">
            <div class="item-top-content">
            <div class="item-top-content-inner">
            <div class="item-product">
            <div class="item-top-title">
            <h2>
            <?php the_title(); ?>
            </h2><p class="subdescription">
            <?php the_excerpt(); ?>
            </p></div></div></div>
            </div>
            </div>
            </div>
            </div>
        </div>
</section>

<?php endwhile; ?>
<?php rewind_posts(); ?>

<---Start your new loop here --->
0
Pieter Goosen