Я собрал несколько выпадающих поисков, и у меня возникли проблемы с авторами.
Это сайт для моей страницы архивов: 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>
К сожалению для вас 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.
Других решений пока нет …