将开始和结束日期中的所有项目重新排列在WordPress Feed中
问题描述:
我试图重新排序WordPress中的默认“yourdomainname.com/feed”项目,以便在开始日期和结束日期元值之后进行排序。将开始和结束日期中的所有项目重新排列在WordPress Feed中
我有一些代码在模板中工作得很完美,并做了前端。但是,当我在functions.php
文件中插入几乎相同的代码时,Feed仍然“未被触摸”。
任何人都可能是现场或指向我在正确的方向,我做错了什么?这里是我放入functions.php
文件的代码。
/*
Sort all posts to be ordered by meta start date.
*/
function feed_filter($query){
if($query->is_feed){
// Find todays date
$date = date('Ymd');
$query_args = array(
'meta_query' => array(
array(
'key' => 'end_date',
'compare' => '>=',
'value' => $date,
)
),
'meta_key' => 'start_date',
'orderby' => 'meta_value_num',
'order' => 'ASC'
);
debugIt($query_args);
$query->set('meta_query', $query_args);
}
}
add_action('pre_get_posts', 'feed_filter');
答
我通过创建我自己的RSS提要模板解决了这个问题。这是一个例子。
<?php /* Template Name: Event RSS layout */ header("Content-type: text/xml"); echo '<?xml version="1.0" encoding="UTF-8" ?>'; ?>
<rss version="2.0">
<channel>
<?php
$date = date('Ymd');
$args = array(
'numberposts' => -1,
'meta_query' => array(
array(
'key' => 'end_date',
'compare' => '>=',
'value' => $date,
)
),
'meta_key' => 'start_date',
'orderby' => 'meta_value_num',
'order' => 'ASC'
);
$posts = get_posts($args);
foreach ($posts as $post){ setup_postdata($post);
$date = get_field('start_date');
$date = strftime("%A den %e. %B", strtotime($date));
?>
<item>
<title><?php echo $date; ?> - <?php the_title(); ?></title>
<link><?php the_permalink(); ?></link>
<guid><?php the_permalink(); ?></guid>
<description>
<![CDATA[
<img src="<?php the_post_thumbnail_url('thumbnail'); ?>" /><?php echo wp_trim_words(get_the_excerpt(), 40, '...'); ?>]]>
</description>
<pubDate><?php echo date('r', strtotime(get_the_date())); ?></pubDate>
</item>
<?php } ?>
</channel>
</rss>
我已经更新了上面的代码来关闭我正在尝试做的事情。 – Johns3n