使用$_GET制作随机查询按钮

时间:2011-08-15 作者:Jeremy Love

当我用$\\u GET点击我的按钮时,我试图使我的帖子随机,但它只是不断刷新我的页面,而不是用随机帖子刷新。

    <a href="<?php echo $my_query; ?>?p=random"><img src="<?php bloginfo(\'template_directory\'); ?>/images/shakeup.png" alt="" /></a>

<?php if(isset($_GET[\'p\']) && $_GET[\'p\']==\'random\') {?> 
<?php $my_query = new WP_Query(\'orderby=rand\'); ?>
<?php while ($my_query->have_posts()) : $my_query->the_post(); ?>
我现在遇到这个错误“对中的非对象调用成员函数have\\u posts()”

2 个回复
最合适的回答,由SO网友:Mark Duncan 整理而成

不能使用直接类方法have_posts()the_post() 除非您使用的是主查询。要修改主查询,必须使用query_posts.

如果要创建新的查询对象,需要从新的查询对象调用这些方法,如Rarst在其示例中所示。

所以你要么。。。

更改主查询

<?php query_posts(\'orderby=rand\'); ?>

<div id="front-video-container">

<?php if( have_posts() ) : ?>           
<?php while( have_posts() ) : the_post(); ?>
NOTE: 如果此查询有其他用途,则可能需要使用数组合并或条件query_posts 思维方式

或者,创建新查询

<?php $my_query = new WP_Query(\'orderby=rand\'); ?>

<div id="front-video-container">

<?php if( $my_query->have_posts() ) : ?>           
<?php while( $my_query->have_posts() ) : $my_query->the_post(); ?>
很难说没有看到更多的代码,也不知道放在哪里,我假设您需要保留查询参数,在这种情况下,我建议使用第一个示例并将query_posts 线例如:。

<?php 
if( isset( $_GET[\'p\'] ) && \'random\' == $_GET[\'p\'] ) {
    query_posts(\'orderby=rand\');
}
?>
希望这有帮助。

SO网友:Rarst

您正在使用新WP_Query 对象,但主查询的包装函数。

尝试:

<?php if ($my_query->have_posts()) : ?>           
<?php while ($my_query->have_posts()) : $my_query->the_post(); ?>

结束

相关推荐