サポート » 使い方全般 » 親ページxxの子ページとカテゴリーyyのポスト一覧の表示方法

  • 解決済 naotone

    (@naotone)


    親ページID141の子ページとカテゴリー3、8の投稿一覧を表示できず困っています。
    get_postsを使用してページとポストの両方を表示できないことに気が付き、直接データベースから引っ張ってこようとしているのですがうまくいきません。
    どなたかお力をおかしください。

    <?php
    $today=date('Ymd');
    $args = array( 'numberposts' => 6,
    				'order'=> 'DESC',
    				'post_type' =>  array(page , post),
    				'meta_key' => 'end',
    				'meta_compare' => '>',
    				'meta_value' => "$today",
    				'post_parent' => '141',
    				'category' => '3,8'
    
    			);
    $postslist = get_posts( $args );
    foreach ($postslist as $post) :  setup_postdata($post);
    ?>
    <?php
    $postslist = $wpdb->get_results( "
    SELECT DISTINCT p.*
    FROM	$wpdb->posts as p,
    	$wpdb->term_relationships as r
    WHERE	p.ID = r.object_id
    AND	(
    	( p.post_type = 'page' AND (p.post_parent = 141) )
    OR	( p.post_type = 'post' AND (r.term_taxonomy_id = 3) )
    OR	( p.post_type = 'post' AND (r.term_taxonomy_id = 8) )
    	)
    AND	p.post_status = 'publish'
    ORDER BY post_date DESC
    LIMIT	6" );
    
    foreach ($postslist as $post) :  setup_postdata($post);
    ?>
3件の返信を表示中 - 1 - 3件目 (全3件中)
  • naotoさん

    アイデアレベルの話で恐縮ですが……
    get_posts() でページと投稿のオブジェクトを別個につくり、マージする方法はどうでしょう?
    ソートが必要であれば、マージ後にPHPの usort() や array_multisort() でソート、という感じで。

    トピック投稿者 naotone

    (@naotone)

    teckingさま

    ありがとうございます。
    その方法で試して見ようと思います。

    array_mergeで検索してみたところ海外のフォーラムに似たような事例がありました。
    http://wordpress.org/support/topic/multiple-queries-compiling-into-one-loop

    トピック投稿者 naotone

    (@naotone)

    <?php
    
    $posts = $wpdb->get_results( "
    SELECT DISTINCT p.*
    FROM	$wpdb->posts as p,
    		$wpdb->term_relationships as r
    WHERE	p.ID = r.object_id
    AND	(
    	( p.post_type = 'post' AND (r.term_taxonomy_id = 3) )
    OR	( p.post_type = 'post' AND (r.term_taxonomy_id = 8) )
    	)
    OR p.ID
    AND	(
    	( p.post_type = 'page' AND (p.post_parent = 141) )
    	)
    AND	p.post_status = 'publish'
    ORDER BY post_date DESC
    LIMIT	6" );
    
    foreach ($posts as $post) :  setup_postdata($post);
    ?>

    SQL WHEREの場所が間違っていたようです。
    解決しました。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「親ページxxの子ページとカテゴリーyyのポスト一覧の表示方法」には新たに返信することはできません。