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'"; }
?>
注:問題は上記の変数 $order にあると確信しています
$order
引数として変数を使用したWordpressループ
<?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 (上記) で機能させようとしています。ここに何かアイデアはありますか?
UPDATE : この手法は、以下のように 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; ?>