Выпадающие авторы 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>

0

Решение

К сожалению для вас 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.

3

Другие решения

Других решений пока нет …