0

誰かが私を正しい方向に向けることができますか? ページにエントリが多すぎるため (以下のサンプル ページへのリンクを参照)、ページネーションを機能させようとしていますが、完全に雑草の中にいます。

これは、カスタム フィールド (開始日) に基づいてカスタム投稿をリストし、開始日が過ぎるとリストから削除するアーカイブ ページ用です。

サンプルページはこちら: http://www.musicfestivaljunkies.com/festival-guide/us-festivals/

これが私が取り組んできたコードです:

    <?php
    /**
    * Do we need to filter by event tag?
    */
    if(is_tax('event_tags') ) :
$tag = strip_tags( get_query_var('event_tags') );

$querystr = "
    SELECT wposts.*
    FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta, $wpdb->terms wterms, $wpdb->term_taxonomy wtax, $wpdb->term_relationships wrels
    WHERE wposts.ID = wpostmeta.post_id
    AND wterms.term_id = wtax.term_id
    AND wtax.term_taxonomy_id = wrels.term_taxonomy_id
    AND wrels.object_id = wposts.ID
    AND wterms.slug = '$tag'
    ";

    else:
$querystr = "
    SELECT wposts.*
    FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta
    WHERE wposts.ID = wpostmeta.post_id";
    endif;

    // Build the rest of the query, i.e. only get events with dates, and order newest first.
$querystr .= "
AND wpostmeta.meta_key = 'Date'
AND STR_TO_DATE(wpostmeta.meta_value,'%m/%d/%Y') >= CURDATE()
AND wposts.post_status = 'publish'
AND wposts.post_type = 'events'
ORDER BY STR_TO_DATE(wpostmeta.meta_value,'%m/%d/%Y') ASC
";


$events = $wpdb->get_results($querystr, OBJECT);

if ($events):
echo '<ul>';
foreach ($events as $post):
    global $post;
    setup_postdata($post);

    // Get a friendlier version of the date.
    $date = get_post_meta($post->ID, 'Date', true);
    $date = date_create($date);
    $date = date_format($date, 'jS F, Y');
    ?>

    <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> - <?php echo $date; ?></li>      
<?php endforeach;
echo '</ul>';
    endif; ?>
4

1 に答える 1

0

非常にユニークなデータを取得しようとしている場合を除き、独自のクエリを作成することは通常、WordPress では避けるべきことです。この場合、get_posts() メソッド ( http://codex.wordpress.org/Template_Tags/get_posts ) を調べる必要があります。目標を達成するためにどのパラメーターが必要になるかは 100% 確実ではありませんが、「post_type」引数、および「meta_key」と「meta_value」を確認することから始めてください。これらを使用して投稿を検索できます特定のメタ値が設定されている特定のカスタム タイプ (少なくとも部分的には達成しようとしているようです)。

これで正しい方向に向かわない場合は、達成しようとしていることをもう少し具体的に教えてください。さらに明確にすることができるかもしれません。

更新: get_posts() ドキュメントのこのセクションは、特にカスタム フィールドに役立つはずです。ボーナスとして、カスタムの post_type も使用しています: http://codex.wordpress.org/Template_Tags/get_posts#Custom_Field_Parameters

于 2012-08-09T06:17:42.610 に答える