Выпадающий список авторов Wordpress неверная постоянная ссылка | Строка запроса

Я собрал пару выпадающих поисков, и у меня возникли проблемы с авторами.

Это веб-сайт страницы моего архива: http://goo.gl/p1RLUm

Поэтому, если я ищу автора, меня отправляет примерно так:
mydomain.com/?author=67

Когда он должен отправить меня на это: mydomain.com/author/username
вот реальная рабочая страница автора

Я пробовал так много вещей, но он всегда вытаскивает строку запроса в качестве ответа и никогда не может заставить ее уйти.

Любая помощь приветствуется!

<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>

person Jupago    schedule 18.04.2015    source источник


Ответы (1)


К сожалению для вас, функция wp_dropdown_users( $args ) не имеет возможности установить значение имен. Это идентификаторы и все.

Что вам нужно сделать, так это использовать 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 =.

Кроме того, есть ошибка с вашим перенаправлением. Вы должны удалить ? символ в вашем URL-адресе при отправке. Я думаю, это также делается в вашем JS.

person Pobe    schedule 18.04.2015
comment
Спасибо! Думаю, я на правильном пути. Ваш код должен быть $users нет пользователей правильно? Кажется, что пользователи показывают и указывают на правильный URL-адрес, но теперь раскрывающийся список исчез [goo.gl/p1RLUm] - person Jupago; 19.04.2015
comment
Вы должны заменить users на $users и user на $user. - person Jonathan; 19.04.2015
comment
@Jupago Вы правы, ошибка python вместо $. Что касается выбора, то echo $select больше нет. Просто добавьте это как обычный html. - person Pobe; 19.04.2015
comment
@Jupago мой код исправлен. Я сделал несколько ошибок с $user, как упомянул Джонатан. Обязательно проверьте, существует ли $user-›name, если нет, получите имя автора с идентификатором. Вы на самом деле хотите слизняк этого. - person Pobe; 19.04.2015
comment
Пока не повезло @AntoineLeBel, но спасибо! изучая ссылку на WP tryint, чтобы выяснить, как проверить, существует ли пользователь. Не удается отобразить параметры раскрывающегося списка и убрать список - person Jupago; 19.04.2015
comment
@Jupago проверьте $args, по умолчанию это echo список, вам это не нужно. Установите его на ложь. - person Pobe; 19.04.2015
comment
@AntoineLeBel отредактировал мой код выше, вы это имели в виду? создать массив и эхо-ложь? Я также не могу понять, как проверить дружественный тег, вы имеете в виду что-то вроде if (username_exists($username)) - person Jupago; 19.04.2015
comment
@Jupago Теперь ты должен быть в порядке, я отредактировал это. $args необходимо передать функции. Вы можете это сделать :) Не забудьте принять ответ, если он правильный. - person Pobe; 19.04.2015
comment
:) Большое спасибо за всю помощь, я добавил ваши правки, список исчез, но выпадающий список пуст.. :/ спасибо за терпение (goo.gl/p1RLUm) - person Jupago; 19.04.2015
comment
@Jupago debug, var_dump($users) ты справишься! - person Pobe; 19.04.2015