我已经设置了一个名为“属性”的自定义帖子类型。这些帖子可以用“area”和“university”自定义分类法进行标记。
我想能够有一个表单,每个标签都有一个下拉列表。提交表单后,我想转到显示这些标签存档的URL。
有两个问题:
返回正确帖子的URL是什么如何用表单构造URL
我已经设置了一个名为“属性”的自定义帖子类型。这些帖子可以用“area”和“university”自定义分类法进行标记。
我想能够有一个表单,每个标签都有一个下拉列表。提交表单后,我想转到显示这些标签存档的URL。
有两个问题:
返回正确帖子的URL是什么如何用表单构造URL
要了解如何操作,首先需要知道url查询是如何工作的,或者更具体地说,需要什么查询变量,因此:
\'post_type\'
- 按PostType筛选\'area\'
- 按区域分类法过滤\'university\'
- 按大学分类法筛选// http://www.domain.com/?post_type=properties&area=area_term&university=university_term
现在我们知道了,我们使用所需的字段创建表单:function display_area_university_filter_form(){
?>
<form method="post" action="">
<p><label for="area_t">Area: </label> <select name="area_t"><option value="">Select Area:</option>
<?php
$area_terms = get_categories(\'taxonomy=area\');
if (isset($_POST[\'area_t\'])){
foreach ($area_terms as $term) {
$option = \'<option value="\'.$term->slug.\'"\';
if ($_POST[\'area_t\'] == $term->slug){
$option.= \' selected="selected"\';
}
$option .= \'>\'.$term->name;
$option .= \'</option>\';
echo $option;
}
}else{
foreach ($area_terms as $term) {
$option = \'<option value="\'.$term->slug.\'"\';
$option .= \'>\'.$term->name;
$option .= \'</option>\';
echo $option;
}
}
?>
</select>
</p>
<p><label for="area_t">University: </label> <select name="area_t"><option value="">Select University:</option>
<?php
$uni_terms = get_categories(\'taxonomy=university\');
if (isset($_POST[\'univer\'])){
foreach ($uni_terms as $term) {
$option = \'<option value="\'.$term->slug.\'"\';
if ($_POST[\'univer\'] == $term->slug){
$option.= \' selected="selected"\';
}
$option .= \'>\'.$term->name;
$option .= \'</option>\';
echo $option;
}
}else{
foreach ($uni_terms as $term) {
$option = \'<option value="\'.$term->slug.\'"\';
$option .= \'>\'.$term->name;
$option .= \'</option>\';
echo $option;
}
}
?>
</select>
</p>
<input type="hidden" name="custom_filter" value="area_uni">
<p><input type="submit" name="submit" value="submit"></p>
</form>
<?php }
那么剩下的就是处理它:if (isset($_POST[\'submit\']) && isset($_POST[\'custom_filter\']) && $_POST[\'custom_filter\'] == "area_uni"){
$url = get_bloginfo(\'url\');
$area = $uni = \'\';
if (isset($_POST[\'area_t\'])){
$area = \'&area=\'.$_POST[\'area_t\'];
}
if (isset($_POST[\'univer\'])){
$uni = \'&university=\'.$_POST[\'univer\'];
}
$url .= \'/?post_type=properties\'.$area.$uni;
wp_redirect( $url );
exit();
}
我一直在使用自定义YOURLS 系统为我的博客网络创建我自己的URL缩写器。一切都很好,只有少数例外(bug已经报告给开发人员)。但我的目标是实现现有WordPress YOURLS插件中未包含的更复杂的功能。目前,当发布帖子时,WordPress会自动登录到您的LS,创建一个简短的URL,并将通知推送到Twitter。它运行良好,可以为我跟踪所有内容(短URL由WordPress记忆并插入适当的<meta> 标签)。我想做的是,我把我的博客帖子安排在太平洋时间上午8点。如果你早上8点在推特上