将开始和结束日期中的所有项目重新排列在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'); 
+0

我已经更新了上面的代码来关闭我正在尝试做的事情。 – Johns3n

我通过创建我自己的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>