Dropdown Users
-
День добрый. Может кто поможет.
Пытаюсь создать выпадающий список авторов с помощью wp_dropdown_users.
В принципе получается. Вот так вызываю в индексе:
<form action=»<?php bloginfo(‘url’); ?>/authors/» method=»get»>
<?php
$select = wp_dropdown_users(‘show_option_none=Select authors&order=ASC’);
$select = preg_replace(«#<select([^>]*)>#», «<select$1 onchange=’return this.form.submit()’>», $select);
echo $select;
?><noscript><input type=»submit» value=»View» /></noscript></form>.Есть одна проблема и один вопрос.
Проблема состоит в том, что переход осуществляется на страницу автора по id, т.е. в адресной страке появляется /?user=44, а необходимо чтобы /authorname. как это осущетсвтить? Если имя я сделал как выводить, то как избавиться от ‘?user=’ так и не понял. Помогите пожалуйста. Вот сама функция:function wp_dropdown_users( $args = » ) {
global $wpdb;
$defaults = array(
‘show_option_all’ => », ‘show_option_none’ => »,
‘orderby’ => ‘display_name’, ‘order’ => ‘ASC’,
‘include’ => », ‘user_level’ => 3, ‘exclude’ => », ‘multi’ => 0,
‘show’ => ‘display_name’, ‘echo’ => 1,
‘selected’ => 0, ‘name’ => ‘user’, ‘class’ => »
);$defaults[‘selected’] = is_author() ? get_query_var( ‘author’ ) : 0;
$r = wp_parse_args( $args, $defaults );
extract( $r, EXTR_SKIP );$query = «SELECT * FROM $wpdb->users»;
$query_where = array();
if ( is_array($include) )
$include = join(‘,’, $include);
$include = preg_replace(‘/[^0-9,]/’, », $include); // (int)
if ( $include )
$query_where[] = «ID IN ($include)»;if ( is_array($exclude) )
$exclude = join(‘,’, $exclude);
$exclude = preg_replace(‘/[^0-9,]/’, », $exclude); // (int)
if ( $exclude )
$query_where[] = «ID NOT IN ($exclude)»;if ( $query_where )
$query .= » WHERE » . join(‘ AND’, $query_where);$query .= » ORDER BY $orderby $order»;
$users = $wpdb->get_results( $query );
$output = »;
if ( !empty($users) ) {
$id = $multi ? «» : «id=’$name'»;$output = «<select name=’$name’ $id class=’$class’>\n»;
if ( $show_option_all )
$output .= «\t<option value=’0′>$show_option_all</option>\n»;if ( $show_option_none )
$output .= «\t<option value=’-1′>$show_option_none</option>\n»;foreach ( (array) $users as $user ) {
$user->ID = (int) $user->ID;
$_selected = $user->ID == $selected ? » selected=’selected'» : »;
$display = !empty($user->$show) ? $user->$show : ‘(‘. $user->user_login . ‘)’;
$output .= «\t<option value=’$user->ID’$_selected>» . esc_html($display) . «</option>\n»;
}$output .= «</select>»;
}$output = apply_filters(‘wp_dropdown_users’, $output);
if ( $echo )
echo $output;return $output;
}Заранее спасибо.
ps возможно ли в выпадающий список включать только авторов с определенным user_level? Cкажем тут: $select = wp_dropdown_users(‘show_option_none=Select authors&order=ASC&user_level=3’);
- Тема «Dropdown Users» закрыта для новых ответов.