私はこれが含まれています…event-list.php
<?php
/**
* The loop that displays upcoming events
*/
?>
<ul class="event-items">
<?php
$yesterday = time() - 24*60*60;
$args = array(
'post_type' => 'wr_event',
'posts_per_page' => -1, // show all posts
'meta_key' => 'event_date',
'orderby' => 'meta_value_num',
'order' => 'ASC',
'meta_value' => $yesterday,
'meta_compare' => '>'
);
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();
get_template_part( 'inc/event', 'item' );
endwhile;
wp_reset_postdata();
?>
</ul>
ご覧のとおり、これはmeta_keyと現在の日付を比較し、昨日より「新しい」投稿のみを取得するカスタムクエリです。
しかし私のアーカイブでは私はそれを逆にしたいと思っています。
私のindex.phpに私はこれを持っている
<?php get_template_part( 'inc/event', 'list' ); ?>
したがって、上記のこのテンプレートは実行されており、過去24時間よりも新しいイベントのみを取得します。
私のarchives.php
では、meta_compare
の値を ">"から "<"に反転したいので、残りの投稿を取得します。
これを行う賢い方法はありますか?
だから私のarchives.php私もこれを持っている…
<?php get_template_part( 'inc/event', 'list' ); ?>
どういうわけか 'meta_compare'値をこのテンプレートに渡すことができますか?だから私は私のindex.phpと私のarchives.phpで同じテンプレートファイルを持つことができますが、 'meta_compare'の値が異なります。
それについて何かアイデアはありますか?
それを達成するために引数を指定した単純な関数を使用しないでください。コードは次のようになります。
function wpse63585_event_list( $fresh = true )
{
echo '<ul class="event-items">';
$yesterday = time() - 24*60*60;
$compare = $fresh ? '>' : '<';
$args = array(
'post_type' => 'wr_event',
'posts_per_page' => -1, // show all posts
'meta_key' => 'event_date',
'orderby' => 'meta_value_num',
'order' => 'ASC',
'meta_value' => $yesterday,
'meta_compare' => $compare,
);
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();
get_template_part( 'inc/event', 'item' );
endwhile;
wp_reset_postdata();
echo '</ul>';
}
そしてあなたのindex.php
の中で、ただコールしてください:
<?php wpse63585_event_list(); ?>
そしてarchives.php
では:
<?php wpse63585_event_list( false ); ?>
もう1つの解決策 $wpse63585_fresh = true
のようにグローバル変数を登録し、その変数をテンプレート部分event-list.php
で使用して条件を制御することができます。
index.php
内:
global $wpse63585_fresh;
$wpse63585_fresh = true;
get_template_part( 'inc/event', 'list' );
archive.php
内:
global $wpse63585_fresh;
$wpse63585_fresh = false;
get_template_part( 'inc/event', 'list' );
event-list.php
内:
<ul class="event-items">
<?php
global $wpse63585_fresh;
$compare = $wpse63585_fresh ? '>' : '<';
$yesterday = time() - 24*60*60;
$args = array(
'post_type' => 'wr_event',
'posts_per_page' => -1, // show all posts
'meta_key' => 'event_date',
'orderby' => 'meta_value_num',
'order' => 'ASC',
'meta_value' => $yesterday,
'meta_compare' => $compare
);
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();
get_template_part( 'inc/event', 'item' );
endwhile;
wp_reset_postdata();
?>
</ul>