サポート » 使い方全般 » カスタム投稿,通常投稿から、ピックアップ記事5件をシングルページへ表

  • 解決済 mitsu666

    (@mitsu666)


    すみません。件名が切れてしまったので再投稿します。
    お世話になります。
    PHP初心者です。

    全記事(カスタム投稿,通常投稿)の中から、
    任意のカテゴリ記事5件を
    single.phpにピックアップ記事として表示させたいと思っております。
    ————————
    通常投稿:
    ・NEWSカテゴリー
    ・FEATURESカテゴリー
    ・PICKUPカテゴリー

    カスタム投稿(REVIEWS):
    ・NEWSカテゴリー
    ・FEATURESカテゴリー
    ・PICKUPカテゴリー
    ————————
    以上共通カテゴリーとして、
    http://ja.forums.wordpress.org/topic/6123
    こちらを参考に、
    「PICKUPカテゴリー」を使って表示させようと
    single.phpに以下のように記述しました。
    (カテゴリースラッグはpick-upです)

    <?php
    $wp_query = new WP_Query( array(
    'com_category' => 'pick-up',
    'posts_per_page' => 5,
    ));
    ?>
    
    <?php while ( $wp_query->have_posts() ) : $wp_query->the_post(); ?>
    
    ">
    <div>
    <h3><?php the_title();?></h3>
    <p>Category :  <?php the_category(' ');?></p>
    </div>
    
    <?php endwhile; ?>

    すると、通常投稿がすべて反映され、
    カスタム投稿がいっさい反映されず、
    しかも記事タイトルリンクを押すとURLは正しいのに
    表示されるページ内容が同一の記事内容になってしまいました。
    (URLはnews01とあるのに記事のタイトルや内容がfuture08のまま、
    他URLへ飛んでも記事のタイトルや内容がfuture08のままです)
    (トップページ等、すべての挙動がこうなってしまいました)

    途方に暮れております。
    どうかご教授ください。
    お待ちいたしております。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • モデレーター gatespace

    (@gatespace)

    http://wpdocs.sourceforge.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/WP_Query

    ヒント1: WP_Query はデフォルトでpost_type=post のみを対象とする。
    カスタム投稿タイプも加えたければそのようにコードを書く必要がある。

    ヒント2: WP_Query 使った後はリセットしましょう
    リンク先の「用例」参照

    トピック投稿者 mitsu666

    (@mitsu666)

    gatespaceさま

    ご連絡をありがとうございます!
    アドバイスを参考に下記へ書き直してみましたが
    変化がありませんでした。。

    <?php
    	$wp_query = new WP_Query( array(
    		'com_category' => 'pick-up',
    		'posts_per_page' => 5,
    		'post_type' => 'post','review',
    	));
    ?>
    
    <?php while ( $wp_query->have_posts() ) : $wp_query->the_post(); ?>
    
    	<li>
    		<a class="slide" href="<?php the_permalink(); ?>">
    			<div>
    				<h3><?php the_title();?></h3>
    
    				<p>Category :&nbsp;&nbsp;
    				<?php $cats = get_the_category();
    				$exclude = array(1,4,'review'); // 不要なカテゴリのID
    				foreach((array)$cats as $cat)
    				  if(!in_array($cat->cat_ID, $exclude))
    					echo '<a href="' . get_category_link($cat->cat_ID) . '">' . $cat->cat_name . '</a>'; ?>
    				</p>
    				<?php the_post_thumbnail(array('pick-up')); ?>
    				</a><!--thumbnail-->
    
    				<!--<?php the_post_thumbnail('pickup') ?>-->
    
    			</div>
    		</a>
    	</li>
    <?php endwhile; wp_reset_postdata(); ?>

    ひょっとして、single.phpだけでなく、function.phpにもなにかしらの記述が必要なのでしょうか?お忙しい中、申し訳ありません。
    お返事いただければ幸いです。

    モデレーター gatespace

    (@gatespace)

    Codexより抜粋

    post_type (string / array) – 投稿を[[投稿タイプ]によって取得する。デフォルト値は ‘post’。’tax_query’ がクエリーにセットされている場合、デフォルト値は ‘any’ になります。

    post_type が複数の時は配列(array())で。
    (Codexにも例が書いてあります)

    トピック投稿者 mitsu666

    (@mitsu666)

    gatespaceさま

    お返事ありがとうございます!
    下記に変更したところ、投稿、カスタム投稿両方の記事が反映されました!

    <?php
    	$wp_query = new WP_Query( array(
    		'category' => 'pick-up',
    		'posts_per_page' => 5,
    		'post_type' => array( 'post', 'review'),
    	));
    ?>
    
    <?php while ( $wp_query->have_posts() ) : $wp_query->the_post(); ?>
    
    	<li>
    		<a class="slide" href="<?php the_permalink(); ?>">
    			<div>
    				<h3><?php the_title();?></h3>
    
    				<p>Category :&nbsp;&nbsp;
    				<?php $cats = get_the_category();
    				$exclude = array(1,4,'review'); // 不要なカテゴリのID
    				foreach((array)$cats as $cat)
    				  if(!in_array($cat->cat_ID, $exclude))
    					echo '<a href="' . get_category_link($cat->cat_ID) . '">' . $cat->cat_name . '</a>'; ?>
    				</p>
    				<?php the_post_thumbnail(array('pick-up')); ?>
    				</a><!--thumbnail-->
    
    				<!--<?php the_post_thumbnail('pickup') ?>-->
    
    			</div>
    		</a>
    	</li>
    <?php endwhile; wp_reset_postdata(); ?>

    。。。ですが、
    pikupカテゴリーのみを表示させることが
    実現出来ておらず、最新記事がカテゴリと関係なく反映されております。
    また、
    シングルページの記事部分が最新記事を先頭に、複数記事がぶら下がる状態で表示されてしまっております。たびたびで申し訳ないのですが、もしお分かりになる事があれば、アドバイスをいただけますでしょうか。
    夜分遅くにに何度もすみません。
    何卒よろしくお願い致します。

    モデレーター gatespace

    (@gatespace)

    ちゃんとCodex読んでくださいね。
    WP_Query でのカテゴリーの指定方法が違います。

    カテゴリーパラメータ
    あるカテゴリーに関連付けられた投稿を表示する。
    cat (int) – use category id.
    category_name (string) – use category slug (NOT name).
    category__and (array) – use category id.
    category__in (array) – use category id.
    category__not_in (array) – use category id.

    上記の「カテゴリー」は元々あるカテゴリー(category)です。
    カスタムタクソノミー(分類)であれば tax_query パラメーターになります。

    タクソノミーパラメータ
    あるタクソノミーに関連付けられた投稿を表示する。
    {tax} (string) – use taxonomy slug. Deprecated as of Version 3.1 in favor of ‘tax_query’.
    tax_query (array) – use taxonomy parameters (available with Version 3.1).
    taxonomy (string) – Taxonomy.
    field (string) – Select taxonomy term by (‘id’ or ‘slug’)
    terms (int/string/array) – Taxonomy term(s).
    operator (string) – Operator to test. Possible values are ‘IN’, ‘NOT IN’, ‘AND’.

    シングルページの記事部分が最新記事を先頭に、複数記事がぶら下がる状態で表示されてしまっております。

    これは意味が分からないです。
    マークアップをシンプルにタイトルとパーマリンクだけ、とかで確認した方がいいのでは?
    (ぱっと見、不要な閉じタグや a が入れ子になっていたりでマークアップとして間違っています)

    トピック投稿者 mitsu666

    (@mitsu666)

    gatespaceさま

    承知いたしました。
    夜分になんどもありがとうございました。
    至らぬところが多くすみません。
    ご指摘頂いたところをふまえ、作業してみます。
    ありがとうございました!

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • トピック「カスタム投稿,通常投稿から、ピックアップ記事5件をシングルページへ表」には新たに返信することはできません。