Мне дали задание, которое требует от меня создания новой конечной точки / постоянной ссылки.
Что-то вроде www.myswebsite.com/users
, где будет показан список пользователей. Тогда www.mywebsite.com/users/1
покажет информацию о пользователе 1.
ЭТО часть, если сделано. У меня есть URL-адрес, посещение URL-адреса служит соответствующий шаблон для пользователя. Индивидуальная информация отображается как и предполагалось.
Однако ... Я делаю ошибку, потому что шаблон users.php
отображается для ВСЕХ других URL-адресов. Таким образом, базовый URL www.mywebsite.com
также показывает шаблон www.mywebsite.com/users
. Как я могу это исправить?
Ниже приведен код в моем плагине. Если вам нужна дополнительная информация от меня, пожалуйста, не стесняйтесь спрашивать.
Я знаю, что моя проблема в функции get_new_template
, но я не очень хорошо разбираюсь в Wordpress, чтобы определить правильный блок if/else
.
<?php
/*
* Plugin Name: User Endpoint
* Description: Providing An Endpoint For Data Consumption
* Version: 1.0.0
*/
// Add a new var to query vars
function result_add_query_vars( $vars ){
$vars[] = 'users';
return $vars;
}
add_filter( 'query_vars', 'result_add_query_vars' );
// Register ReWrite-Rules
function myplugin_rewrite_tag_rule() {
add_rewrite_endpoint( 'users', EP_ROOT );
add_rewrite_rule(
'^users/([^/]*)/?',
'index.php?pagename=$matches[1]¶m=foo',
'top'
);
}
add_action('init', 'myplugin_rewrite_tag_rule', 10, 0);
// Register Template To Show At End POint
function get_new_template( $original_template ) {
if ( get_query_var('users/') ) {
return dirname(__FILE__) . '/user.php';
} else {
return dirname(__FILE__) . '/users.php';
}
}
add_filter( 'template_include', 'get_new_template' );
// Flush Permalinks
function flush_permalinks() {
flush_rewrite_rules();
}
register_activation_hook(__FILE__, 'flush_permalinks');