Как обрабатывать url функцией wordpress

169
01 апреля 2019, 16:40

Так вопрос! Хочу , что бы если юзер запрашивал например /some-url его обрабатывала бы функция worpress. Нужен такой себе контроллер. Задача стоит такая: Нужно сформировать url на основании url будет формироваться контент, но страниц созданных нету и не будет.

Ковырялся с query_var , пробовал банально

function my_fun_witch_router() {
if ($_SERVER['REQUEST_URI'] == '/some-url') { 
echo 'Hello'; 
} 
add_action('init' , 'my_fun_witch_router');

Получаю 404 ошибку и поверх ответ если url совпадает. А мне нужно формировать отдельную страницу. Спасибо.

Еще так пробую:

function cvk_year_rule() {
  add_rewrite_rule('^foobar?','index.php?is_foobar_page=1');
  set_query_var('is_foobar_page' , 1);
}
add_action('init' , 'cvk_year_rule');
function cl_year_view() {
  if(get_query_var('is_foobar_page')){
    echo 'done';
  }
}
add_action('init' , 'cl_year_view');
Answer 1

Для создания таких "виртуальных страниц" я использую следующий код:

add_action( 'init', 'virtual_page' );
public function virtual_page() {
    $page_slug = 'some_url';
    $uri  = $_SERVER['REQUEST_URI'];
    $path = wp_parse_url( $uri, PHP_URL_PATH );
    if ( '/' . trailingslashit( $page_slug ) === trailingslashit( $path ) ) {
        include 'virtual_page.php';
        exit;
    }
}

И в файле virtual_page.php делаю то, что нужно. Этот код легко расширить на любое количество виртуальных страниц.

READ ALSO
wordpress robots 404

wordpress robots 404

Есть сайт на ВП, на нем почти ничего нет, кроме YOAST плагинаRobots

221
Laravel - при отображении Views выдает failed to open stream: Permission denied

Laravel - при отображении Views выдает failed to open stream: Permission denied

Для работы с Laravel развернул HomesteadСоздал laravel-проект, делаю все по документации Laravel

222
Обход бинарного дерева без рекурсии

Обход бинарного дерева без рекурсии

Помогите, два дня уже мучаюсь, не пойму как перебрать дерево: с неограниченным числом вложений, без рекурсии и без ООППросто циклами

120