我正试图通过在URL中设置参数来为我的wordpress站点中的帖子添加一个简单的过滤器,但是它根本没有过滤帖子,这让我抓狂。所有的教程或论坛都不会显示如果URL没有过滤你的帖子会发生什么。
我的帖子有我想学习过滤的类别(测试、windows和Wordpress),例如,每个类别类型都有复选框。但是,当URL设置为/站点/?orderby=日期(&M);订单=描述(&D);类别%5B%5D=windows是否未更改显示的任何内容?
如果有人能帮我理解为什么不过滤帖子,我会很感激的。
我的代码:
<form method="GET">
<select name="orderby" id="orderby">
<option
value="date"
<?php echo selected($_GET[\'orderby\'], \'date\'); ?>
>
Newest to Oldest
</option>
<option
value="title"
<?php echo selected($_GET[\'orderby\'], \'title\'); ?>
>
Alphabetical
</option>
</select>
<input
id="order"
type="hidden"
name="order"
value="<?php echo (isset($_GET[\'order\']) && $_GET[\'order\'] == \'ASC\') ? \'ASC\' : \'DESC\'; ?>"
/>
<?php
$terms = get_terms([
\'taxonomy\' => \'category\',
\'hide_empty\' => false
]);
foreach ($terms as $term) :
?>
<label>
<input
type="checkbox"
name="category[]"
value="<?php echo $term->slug; ?>"
<?php checked(
(isset($_GET[\'category\']) && in_array($term->slug, $_GET[\'category\']))
) ?>
/>
<?php echo $term->name; ?>
</label>
<?php endforeach; ?>
<button type="submit">Apply</button>
</form>
<div class="wrapper">
<?php
$arg = array(
\'type\' => \'post\',
\'order\' => \'ASC\'
);
$blog_posts = new WP_Query( $arg );
if ($blog_posts->have_posts()) :
while( $blog_posts->have_posts() ) : $blog_posts->the_post();
echo the_title();
echo "<br>";
endwhile;
endif;
?>
</div>
SO网友:Botond Vajna
您必须过滤查询参数中的帖子。
尝试:
$mycat = $_GET[\'category\'];
$arg = array(
\'type\' => \'post\',
\'order\' => \'ASC\',
\'category_name\' => $mycat
);
只需从链接中删除方括号,或使用:
$mycat[0]
$mycat = $_GET[\'category\'];
$arg = array(
\'type\' => \'post\',
\'order\' => \'ASC\',
\'category_name\' => $mycat[0]
);