正确的PHP语法的自定义WP循环(Correct PHP Syntax for custom WP

2019-07-30 02:31发布

我试图插入排序选项到我的WordPress网站。 我已经有工作,但需要使用它与正确的WordPress的循环帮助。 目前,我有:

在页面上,有选择按字母顺序或按时间顺序进行排序:

<a href="?sort=date">Newest</a>
<a href="?sort=title">Alphabetical</a>

排序代码开始在这里,摆放上述循环:

<?php $sort= $_GET['sort']; 
    if($sort == "title") { $order= "'orderby'=>'title','order'=>ASC'"; } 
    elseif($sort == "date") { $order= "'orderby'=>'date'"; } 
    else{ $order= "'orderby'=>'date','order'=>'DESC'"; } 
?>

注意:我敢肯定问题出在上面的变量$秩序

WordPress的循环中使用的变量$order作为一个参数

<?php $loop = new WP_Query( array( $order, 'post_type' => 'films', 'post_parent' => 0, 'posts_per_page' => -1 ) ); ?>

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

    Wordpress loop stuff here

<?php endwhile; ?>

循环正确显示项目,但分拣环节不工作。 此代码的工作非常好,query_posts但我试图让这个为WP_Query(以上)的工作。 这里的任何想法?

更新 :这种技术使用query_posts大如以下(但我仍然需要工作WP_Query):

<?php $sort= $_GET['sort']; 
    if($sort == "title") { $order= "&orderby=title&order=ASC"; } 
    elseif($sort == "date") { $order= "&orderby=date"; } 
    else{ $order= "&orderby=date&order=DESC"; } 
?>

<?php $posts = query_posts($query_string . $order); ?>
<?php if(have_posts()) : while(have_posts()) : the_post(); ?>
       Wordpress Stuff Here
<?php endwhile; ?>
<?php endif; ?>

Answer 1:

WP_Query期望的参数关联数组( array('param' => 'value')而query_posts仅接受“查询字符串”( "param=value&param=value" )。 你是混合了两个选项,这就是为什么它不工作。 需要更改$order变量是数组,而不是字符串,例如: $order = array('orderby' => 'title', 'order' => ASC');

答上面是不完整的,可能会产生误导。 WP_Query文档是在这里: https://codex.wordpress.org/Class_Reference/WP_Query 。 这个类接受boths风格,但它们必须有所不同形成的。 我不知道究竟是如何做到这一点,因为它不是在课堂上写的文档,但你最好使用数组,那么:

if($sort == "title") { $order = array('orderby' => 'title', 'order' => 'ASC'); } 
elseif($sort == "date") { $order= array('orderby' => 'date'); } 
else{ $order= array('orderby' => 'date', 'order' => 'DESC'); } 

FYI转换之间的两种类型的使用功能parse_str() http://php.net/manual/en/function.parse-str.php和http_build_query() http://www.php.net/manual/en/ function.http -建造- query.php 。



文章来源: Correct PHP Syntax for custom WP loop