使用开始和结束日期重新排序 wordpress 提要中的所有项目

Reorder all items in wordpress feed with start and end date

我正在尝试重新排序 WordPress 中的默认 "yourdomainname.com/feed" 项目,以便在开始和结束日期元值之后进行排序。

我有一些代码可以在模板中完美运行并完成前端。但是,当我在 functions.php 文件中插入几乎相同的代码时,提要仍然保持 "untouched"。

任何人都可以发现或指出我做错事的正确方向吗?这是我放在 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>