我整理了几个下拉搜索,我与作者有问题。
这是我的档案页面的网站:http://goo.gl/p1RLUm
所以,如果我搜索一位作者,它就会发给我这样的东西:
mydomain.com/?author=67
什么时候应该发送给我:
mydomain.com/author/username
here's an actual working author page
我已经尝试了很多东西,但它始终将查询字符串作为答案,并且永远不会让它消失。
感谢任何帮助!
<form action="<?php bloginfo('url'); ?>/author/" method="get">
<?php
$args = array(
'show_option_none' => __( 'Select Author' ),
'name' => 'author',
'orderby' => 'ASC',
'echo' => 0,
'who' => 'authors',
);
?>
<?php $select = wp_dropdown_users( $args ); ?>
<?php $replace = "<select$1 onchange='return this.form.submit()'>"; ?>
<?php $select = preg_replace( '#<select([^>]*)>#', $replace, $select ); ?>
<?php echo $select; ?>
<noscript>
<input type="submit" value="View" />
</noscript>
</form>
好的,我的代码更新了。我是在正确的轨道上吗?
<?php $users = wp_list_authors($args); ?>
<?php
$args = array(
'show_option_none' => __( 'Select Author' ),
'name' => 'author',
'orderby' => 'ASC',
'echo' => FALSE,
'who' => 'authors',
);
?>
<select name="author-dropdown" onchange='return this.form.submit()'>
<?php foreach($users as $user):?>
<option name="<?php echo $user->name; ?>">
<?php echo $user->name; ?>
</option>
<?php endforeach;?>
</select>
答案 0 :(得分:3)
不幸的是,wp_dropdown_users( $args )
函数没有设置名称值的选项。这是ids,就是这样。
你应该做的是使用wp_list_authors( $args )
然后做这样的事情:
<?php $users = wp_list_authors($args); ?>
<select name="yourname" onchange='return this.form.submit()'>
<?php foreach($users as $user):?>
<?php //just check how to access the $user name url friendly tag ?>
<option name="<?php echo $user->name; ?>"><?php echo $user->name?></option>
<?php endforeach;?>
</select>
通过这样做,您不需要替换/正则表达式并且可以更好地控制用户输出。我猜你的JS做了window.location.href =
重定向工作。
另外,您的重定向出错了。你应该删除?提交时您的网址中的字符。我想这也是在你的JS中完成的。