单击按钮运行Wordpress查询

时间:2013-12-30 14:46:25

标签: php wordpress

我试图看到实现此功能的最佳方式。只要它们在日期参数范围内,我就会显示事件:

<?php $args = array(
                    'post_type' => 'events',

                    'orderby'   => '_cmb_event_date_timestamp',
                    'meta_key'  => '_cmb_event_date_timestamp',
                    'order'     => 'ASC',
                    'meta_query' => array(
                        array( /* Timestamp query to hide old dates */
                            'key' => '_cmb_event_date_timestamp',
                            'value' => strtotime('today'),
                            'compare' => '>'
                        )
                    ),
                );
                $q = new WP_Query($args);
                $loop = new WP_Query( $args );
                while ( $loop->have_posts() ) : $loop->the_post(); ?>

我有两个按钮:一个说upcoming events,另一个说past events。 我想在点击'compare' => '<'时运行反向查询past events,但我看不出如何最好地实现此功能。任何建议/方法来实现这一点将不胜感激。我尝试使用jquery重新加载但无法使其工作。

2 个答案:

答案 0 :(得分:4)

你如何获得内容?阿贾克斯?如果不是 - 只需添加特定的$ _GET参数即可链接并在构建wp查询时捕获它。 E.g:

<?php $args = array(
                    'post_type' => 'events',

                    'orderby'   => '_cmb_event_date_timestamp',
                    'meta_key'  => '_cmb_event_date_timestamp',
                    'order'     => 'ASC',
                    'meta_query' => array(
                        array( /* Timestamp query to hide old dates */
                            'key' => '_cmb_event_date_timestamp',
                            'value' => strtotime('today'),
                            'compare' => '>'
                        )
                    ),
                );

                if (isset($_GET['past_events'])) {
                  $args['meta_query'][0]['compare'] = '<';
                }

                $q = new WP_Query($args);
                $loop = new WP_Query( $args );
                while ( $loop->have_posts() ) : $loop->the_post(); ?>

链接:

<a href="<?php echo esc_attr( add_query_arg( 'past_events', '' ) ); ?>">past events</a>  

答案 1 :(得分:0)

两个简单的选择:

1)为使用该查询的“过去事件”创建一个新页面模板,只需将“过去事件”按钮链接到该页面(这是迄今为止最容易实现的)。

2)使用AJAX将请求发送到服务器,服务器然后可以运行查询并返回数据和/或HTML,然后使用jQuery在页面上更新(这是一项更多的工作,但不会导致要重新加载的页面。

Alex的回答也是解决问题的一个聪明而简单的解决方案。