下拉Wordpress作者错误永久链接|请求参数

时间:2015-04-18 21:59:56

标签: php wordpress drop-down-menu query-string author

我整理了几个下拉搜索,我与作者有问题。

这是我的档案页面的网站: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>

1 个答案:

答案 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中完成的。