如何从表单域中获取选项并将其转化为链接?

时间:2011-10-24 作者:jimilesku

我在WordPress中有一个表单,当单击时,它们会检索过滤后的帖子。我想从表单中选取选项,并将其像普通链接一样放置。这能做到吗?提前感谢大家:)

<form action="" method="get" id="filter">
<select id="sort_by" name="sort_by" onchange="this.form.submit()">
<option value="most_recent"<?php if( !$_GET[\'sort_by\'] || $_GET[\'sort_by\'] == \'most_recent\' ) echo " selected"; ?>><?php print   
    __(\'Most Recent\', \'bo\'); ?></option>
<option value="most_favorites"<?php if( $_GET[\'sort_by\'] == \'most_favorites\' ) echo " selected"; ?>><?php print __(\'Most Favorites\', \'bo\'); ?></option>
<option value="most_viewed"<?php if( $_GET[\'sort_by\'] == \'most_viewed\' ) echo " selected"; ?>><?php print __(\'Most Viewed\', \'bo\'); ?></option>
<option value="most_commented"<?php if( $_GET[\'sort_by\'] == \'most_commented\' ) echo " selected"; ?>><?php print __(\'Most Commented\', \'bo\'); ?></option>
</select>
</form>

1 个回复
最合适的回答,由SO网友:Stephen Harris 整理而成

对首先,为了能够突出显示当前的排序方法,我们尝试检索GET变量sort_by 在url中发生:

<?php switch ($_GET["sort_by"]) {
    case \'most_recent\':
        $active = \'most_recent\';
        break;
    case \'most_favourite\':
        $active = \'most_favourite\';
        break;
    case \'most_viewed\':
        $active = \'most_viewed\';
        break;
    default:
        // However you sort by default
        $active = \'most_recent\';
}?>
如果存在有效的排序顺序,$active 设置为此。否则将设置为默认顺序。我们稍后会用到这个。

接下来,我们检索url,然后删除sort_by 获取变量。这允许我们稍后手动将其添加到链接中,而无需重复。

<?php
//Retrieve _GET variables
$params = $_GET;

//Retrieve \'sort_by\' variable
unset($params[\'sort_by\']);;

//Rebuild url without \'sort_by\' variable
$url = get_pagenum_link();
$url = strtok($url, \'?\');
$url =$url.\'?\'.http_build_query($params);
?>
最后,我们构建链接。这里我用过$active 在当前使用排序方法时有条件地添加“active”类。

<ul>
    <li <?php if($active == "most_recent"): ?> class="active"<? endif ?>><a href="http://<?php echo $url ?>&sort_by=most_recent">Most recent </a></li>
    <li <?php if($active == "most_favourite"): ?> class="active"<? endif ?>><a  href="http://<?php echo $url ?>&sort_by=most_favourite">Most favourite</a></li>
    <li <?php if($active == "most_viewed"): ?> class="active"<? endif ?>><a href="http://<?php echo $url ?>&sort_by=most_viewed">Most viewed </a></li>
</ul>
以上所有代码都应该出现在您希望链接出现的任何地方。你可以把它放在你的functions.php, 但是,在函数内部,然后在希望链接出现的任何地方调用该函数。

希望这有帮助:D

结束

相关推荐

Search options/filters

我正在尝试向侧栏搜索框添加一些复选框选项,similar to this, 用户可以选择是否搜索All Words, Some Word, 或者Entire phrase.我确实在搜索后找到了这个-Wordpress Search Phrases. “句子”选项似乎很有效,但其他选项则不太好。下面的代码是我目前正在处理的,但如果能得到一些帮助使其正常工作,我将不胜感激。非常感谢S(我不想为此使用插件)。<form action=\"<?php bloginfo(\'home\'); ?>