Wordpress 使用下拉菜单按日期和标题对帖子进行排序
Wordpress sorting posts by date and title using a dropdown
我正在尝试设置一个 drop-down
来按从新到旧和字母顺序对我的帖子进行排序。
这是我目前拥有的:
我正在声明一个空变量,然后是一个可以更改此空变量内容的表单。
这部分不行
<form method="GET">
<select name="orderby" id="orderby">
<option value="<?php echo ($order = 'date'); ?>">Newest to Oldest</option>
<option value="<?php echo ($order = 'title'); ?>">Alphabetical</option>
<button type="submit">Apply</button>
</select>
</form>
并声明我传递变量的查询 'orderby' => $order
这部分有效(我正在获取所有帖子的列表并手动更改查询也有效)
$wpb_all_query = new WP_Query(array('post_type'=>'post', 'posts_per_page'=>-1, 'order'=>'ASC', 'orderby'=> $order)); ?>
if ( $wpb_all_query->have_posts() ) :
<ul>
<?php while ( $wpb_all_query->have_posts() ) : $wpb_all_query->the_post(); ?>
<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
<?php endwhile; ?>
</ul>
<?php endif;?>
我怎样才能使这个工作?
提前感谢您的帮助!
所以你 html 的形式应该是这样的:
<form method="GET">
<select name="orderby" id="orderby">
<option value="date">Newest to Oldest</option>
<option value="title">Alphabetical</option>
</select>
<button type="submit">Apply</button>
</form>
然后检查用户使用 isset
和 $_GET['orderby']
选择了哪个选项。然后根据返回的值,您可以设置自定义查询!所以您的自定义查询将是这样的:
$custom_orderby = isset($_GET['orderby']) ? sanitize_text_field($_GET['orderby']) : "";
if(!empty($custom_orderby) && "title" == $custom_orderby):
$custom_query = new WP_Query(array(
'post_type'=>'post',
'posts_per_page'=>-1,
'orderby'=> "title",
'order'=>'ASC',
));
endif;
if(!empty($custom_orderby) && "date" == $custom_orderby):
$custom_query = new WP_Query(array(
'post_type'=>'post',
'posts_per_page'=>-1,
'orderby'=> "date",
'order'=>'DESC',
));
endif;?>
<ul>
<?php while ( $custom_query->have_posts() ) : $custom_query->the_post(); ?>
<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
<?php endwhile; ?>
</ul>
我正在尝试设置一个 drop-down
来按从新到旧和字母顺序对我的帖子进行排序。
这是我目前拥有的:
我正在声明一个空变量,然后是一个可以更改此空变量内容的表单。
这部分不行
<form method="GET">
<select name="orderby" id="orderby">
<option value="<?php echo ($order = 'date'); ?>">Newest to Oldest</option>
<option value="<?php echo ($order = 'title'); ?>">Alphabetical</option>
<button type="submit">Apply</button>
</select>
</form>
并声明我传递变量的查询 'orderby' => $order
这部分有效(我正在获取所有帖子的列表并手动更改查询也有效)
$wpb_all_query = new WP_Query(array('post_type'=>'post', 'posts_per_page'=>-1, 'order'=>'ASC', 'orderby'=> $order)); ?>
if ( $wpb_all_query->have_posts() ) :
<ul>
<?php while ( $wpb_all_query->have_posts() ) : $wpb_all_query->the_post(); ?>
<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
<?php endwhile; ?>
</ul>
<?php endif;?>
我怎样才能使这个工作?
提前感谢您的帮助!
所以你 html 的形式应该是这样的:
<form method="GET">
<select name="orderby" id="orderby">
<option value="date">Newest to Oldest</option>
<option value="title">Alphabetical</option>
</select>
<button type="submit">Apply</button>
</form>
然后检查用户使用 isset
和 $_GET['orderby']
选择了哪个选项。然后根据返回的值,您可以设置自定义查询!所以您的自定义查询将是这样的:
$custom_orderby = isset($_GET['orderby']) ? sanitize_text_field($_GET['orderby']) : "";
if(!empty($custom_orderby) && "title" == $custom_orderby):
$custom_query = new WP_Query(array(
'post_type'=>'post',
'posts_per_page'=>-1,
'orderby'=> "title",
'order'=>'ASC',
));
endif;
if(!empty($custom_orderby) && "date" == $custom_orderby):
$custom_query = new WP_Query(array(
'post_type'=>'post',
'posts_per_page'=>-1,
'orderby'=> "date",
'order'=>'DESC',
));
endif;?>
<ul>
<?php while ( $custom_query->have_posts() ) : $custom_query->the_post(); ?>
<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
<?php endwhile; ?>
</ul>