我已经设置了一个插件,可以创建自定义帖子类型('程序')以及分类和一些自定义元。我有一个名为' broadcast-date'的自定义元值。我试图创建一个短代码,它只显示广播日期等于或大于今天的节目(以显示即将播出的节目的时间表)。
目前我只显示帖子,我不知道从哪里开始查询日期。这是我到目前为止所得到的:
add_shortcode('programme-schedule', 'programme_schedule_shortcode');
function programme_schedule_shortcode($atts, $content){
extract(shortcode_atts(array( // a few default values
'posts_per_page' => '-1',
'post_type' => 'programmes')
, $atts));
global $post;
$posts = new WP_Query($atts);
$output = '';
if ($posts->have_posts())
while ($posts->have_posts()):
$posts->the_post();
$out = '<p>' . get_the_title() . '</p>';
endwhile;
else
return;
wp_reset_query();
return html_entity_decode($out);
}
我可以添加什么,以便它只显示即将推出的节目?
谢谢:)
编辑:
事实证明代码也没有用,我现在正在处理这个问题(目前仍然只收到帖子,而不是过滤它们):
add_shortcode( 'hiblio-schedule', 'rmcc_post_listing_shortcode1' );
function rmcc_post_listing_shortcode1( $atts ) {
ob_start();
$query = new WP_Query( array(
'post_type' => 'programmes',
) );
if ( $query->have_posts() ) { ?>
<ul class="schedule-listing">
<?php while ( $query->have_posts() ) : $query->the_post(); ?>
<li id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
</li>
<?php endwhile;
wp_reset_postdata(); ?>
</ul>
<?php $myvariable = ob_get_clean();
return $myvariable;
}
}
非常感谢任何帮助!
EDIT2:
这是我目前的代码:
add_shortcode( 'hiblio-schedule', 'hiblio_schedule_shortcode' );
function hiblio_schedule_shortcode( $atts ) {
$todaysDate = date("Y/m/d");
$date = '24/12/2014';//get_post_meta( $post->ID, 'broadcast-date', true );
$parts = explode('/',$date);
$newDate = $parts[2]."-".$parts[1]."-".$parts[0];
ob_start();
$query = new WP_Query(array(
'post_type' => 'programmes',
'meta_query' => array(
array(
'key' => 'broadcast-date',
'value' => $todaysDate , //The date what you want...
'compare' => '>='
),
),
));
if ( $query->have_posts() ) {
?>
<ul class="schedule-listing">
<?php while ( $query->have_posts() ) : $query->the_post(); ?>
<li id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
</li>
<?php endwhile;
wp_reset_postdata(); ?>
</ul>
<?php $myvariable = ob_get_clean();
return $myvariable;
}
}
答案 0 :(得分:2)
您可以使用meta_query
或键/值对。阅读 here 。
$query = new WP_Query(array(
'post_type' => 'programmes',
'meta_query' => array(
array(
'key' => 'broadcast-date',
'value' => '2014-12-11', //The date what you want...
'compare' => '>='
),
),
));