使用form
, 你唯一缺少的是,你必须提交你选择的内容。例如:
<form method="GET" action="">
<div>
<?php
$select = wp_dropdown_categories(\'show_option_none=Select category&orderby=name&echo=0\');
$select = preg_replace("#<select([^>]*)>#", "<select$1 onchange=\'return this.form.submit()\'>", $select);
echo $select;
?>
<noscript>
<div>
<input type="submit" value="View" />
</div>
</noscript>
</div>
</form>
代码改编自
example section of the wp_dropdown_categories() codex page, 还有其他的例子,看一看。我改变了一件事,表单操作是空的,因为我们想留在页面上
您想要的变量是
$_GET[\'cat\']
; 此外,通过查看浏览器地址栏,您可以直观地看到,现在有类似的内容
?cat=1
, 选择类别后的查询字符串。如果不想显示查询字符串,实际上可以将form方法更改为
POST
变量为
$_POST[\'cat\']
.
<小时>Edit:
在主页上,这将重定向到类别存档,因为wordpress会对查询字符串作出反应cat
. 在这种情况下,您必须添加name
参数到wp_dropdown_categories()
并选择一个唯一的名称,在上面的示例中,如下所示:
wp_dropdown_categories(\'show_option_none=Select category&orderby=name&echo=0&name=uniquename\');
这导致变量名为
$_GET[\'uniquename\']
或
$_POST[\'uniquename\']
.
<小时>2nd Edit:
在第一页加载时,没有设置$\\u GET[\'uniquename\']变量,因此您的GET\\u posts查询将使用空值操作,这将导致显示所有post。要防止这种设置,请使用如下所示的变量,并在参数数组中使用它。
$gp_cat = (isset($_GET[\'uniquename\']) ? $_GET[\'uniquename\'] : \'5\');
$args = array( \'posts_per_page\' => 5, \'category\' => $gp_cat);