Настройка настраиваемой постоянной позиции типа

Я понимаю, как зарегистрировать пользовательский тип сообщения, настроить пул и решить, нужно ли добавлять «фронт» (параметры постоянной ссылки WP) или нет.

То, что я хотел бы сделать, – настроить постоянную ссылку, добавив

?username 

В конце URL настраиваемого типа сообщения. Теперь я знаю, что очищенное Имя автора может быть добавлено в настройках постоянной ссылки WP, но я не хочу этого – я ищу имя пользователя, используемое для входа в систему.

Например: я создаю пользовательский тип сообщения, называемый «Главная» (единственное), с пользовательскими пулями «дома». URL будет:

www.mydomain.com/homes/postname

Я хочу, чтобы URL-адрес выглядел следующим образом:

www.mydomain.com/homes/postname?username

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

 add_action( 'init', 'create_posttype' ); function create_posttype() { register_post_type( 'home', array( 'labels' => array( 'name' => __( 'Homes' ), 'singular_name' => __( 'Home' ) ), 'public' => true, 'has_archive' => true, 'rewrite' => array('slug' => 'homes'), ) ); } 

Я немного экспериментировал и закончил тем, что сделал свой сайт полностью недоступным, поэтому я решил, что какая-то помощь будет стоить того: P

Solutions Collecting From Web of "Настройка настраиваемой постоянной позиции типа"

Примечание для кураторов / admin: Я хотел оставить комментарий, но у меня не было достаточной репутации. Я знаю, что я формально не даю ответа, но пытаюсь помочь человеку задать вопрос.

Используете ли вы какие-либо плагины членства? Можете ли вы дать нам немного больше информации об общей карте сайта и функциональности? Мы видим очень узкую область для более масштабного вопроса для оценки.

Вы на правильном пути с настраиваемым типом сообщения, но я думаю, что есть лучший способ разобраться в ситуации.

Я предположил бы из вашего приведенного примера кода, что у вас есть достойное понимание PHP / WordPress codex, чтобы лучше всего объяснить, что я хочу сказать, было бы лучшей идеей здесь.

Более практичный подход к созданию публичных страниц профиля пользователя будет контролирующей функцией темы, такой как /profile/<foo> которая ищет соответствующую информацию пользователя. Оттуда вы передадите разрешения на каждую страницу профиля пользователю, которому необходимо будет войти в систему и отредактировать их информацию либо через панель инструментов WordPress. Или пользователи заполняют информацию профиля с другой интерфейсной страницы, которая передает общую страницу.

Если вы запутались в написании пользовательских типов сообщений, вы можете захотеть установить решение «под ключ». Без упоминания каких-либо фирменных имен существует много существующих (и бесплатных) плагинов членства, которые предоставляют пользователю общедоступный профиль + область управления учетными записями.

Чтобы добавить строки запроса, чтобы опубликовать постоянную ссылку, вы должны использовать фильтр post_link в сочетании с функцией add_query_arg .

 add_filter( 'post_link', 'cyb_append_query_string', 10, 3 ); function cyb_append_query_string( $url, $post, $leavename ) { //Change for the post type you want if ( $post->post_type == 'home' ) { $url = add_query_arg( 'username', 'username_value', $url ); } return $url; } 

Если вы хотите использовать этот аргумент запроса в wp_query, вы также должны запустить фильтр query_vars :

 add_filter( 'query_vars', 'cyb_query_vars' , 10, 1 ); function cyb_query_vars( $qvars ) { $qvars[] = 'username'; return $qvars; } 

Теперь вы можете получить запрос var username следующим образом:

  $username = get_query_var( 'username' ); //Or, if working with a WP_Query object $username = $wp_query->get( 'username' );