2015-01-05 2 views
0

Im пытается сделать что-то вроде этого.Добавить пользовательскую страницу интерфейса без пункта меню - wordpress

Add "custom page" without page

Я знаю о добавлении WordPress страницы из панели администратора, Pages->Add New, а затем связать эту страницу в PHP-файл с помощью слизняка. Я уже это сделал. Я просто хочу, чтобы эта страница работала без добавления ее с панели администратора, в случае удаления страницы с панели администратора она не будет работать, даже если она существует в каталоге.

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

Спасибо!

Update:

Благодаря @ Mike я был в состоянии решить эту проблему, изменив его код. Мне просто нужно было добавить add_rewrite_rule() и теперь он работает хорошо. Не забудьте очистить постоянные ссылки.

function add_application_endpoint() { 
add_rewrite_endpoint('view', EP_PERMALINK); 
} 

add_action('init', 'add_application_endpoint'); 

function add_endpoint_queryvar($query_vars) { 
    $query_vars[] = 'view'; 
    $query_vars[] = 'ptag'; 
    $query_vars[] = 'product_cat'; 

    return $query_vars; 
} 

add_filter('query_vars', 'add_endpoint_queryvar'); 
add_rewrite_rule('^view/([^/]+)/([^/]+)/?$', 'index.php?pagename=custom-product-tags&ptag=$matches[1]&product_cat=$matches[2]', 'top'); 

/** 
* Setting up job app template redirect for custom end point rewrite 
*/ 

function job_application_template_redirect() { 
    global $wp_query; 
    if ($wp_query->query_vars['name'] != 'custom-product-tags') { 
     return; 
    } 

    include dirname(__FILE__) . '/page-custom-product-tags.php'; 

    exit; 
} 

add_action('template_redirect', 'job_application_template_redirect'); 

ответ

1

Вы можете сделать это путем создания пользовательской конечной точки и настройки шаблона перенаправления в файле functions.php .. Вот пример для страницы приложения работы. С этим кодом, добавленным в мой файл functions.php, если я нахожу «/ apply» на своем сайте, то отображается page-job_application.php.

Надеюсь, что это сработает для ваших нужд.

/** 
* Rewrite custom endpoint for job post applications 
*/ 
function add_application_endpoint() { 
    add_rewrite_endpoint('apply', EP_PERMALINK); 
} 
add_action('init', 'add_application_endpoint'); 

/** 
* Register our custom endpoint as a query var 
*/ 
function add_endpoint_queryvar($query_vars) { 
     $query_vars[] = 'apply'; 
    return $query_vars; 
} 
add_filter('query_vars', 'add_endpoint_queryvar'); 

/** 
* Setting up job app template redirect for custom end point rewrite 
*/ 
function job_application_template_redirect() { 
    global $wp_query; 
if (! isset($wp_query->query_vars['apply']) || ! is_singular()) 
    return; 
include dirname(__FILE__) . '/page-job_application.php'; 
exit; 
} 
add_action('template_redirect', 'job_application_template_redirect'); 
+0

Спасибо за код, я сумел сделать код работу после некоторых модификаций, а также я должен был добавить add_rewrite_rule() для того, чтобы получить доступ к URL и передать параметры в строках запроса. Есть только одна проблема, даже если страница работает нормально, но на вкладке браузера отображается «Страница не найдена». Любая идея почему? – Kevin

+0

Если я понимаю вас, вы имеете в виду заголовок, который отображается на самой вкладке браузера, но страница правильно отображается? Этот заголовок вытягивается из вашего заголовка, поэтому сама страница должна иметь динамический набор названий. Я думаю, фильтр на wp_title будет работать лучше всего: function add_title_to_custom_page() { add_filter ('wp_title', 'filter_function_name', 10, 2) –

+0

извините, нажмите ввод по ошибке. Вот мой комментарий: Я думаю, что фильтр на 'wp_title' в вашем' functions.php' файл будет работать лучше: функция add_title_to_custom_page ($ название) { если (is_page_template ('страниц job_application.php')) { \t $ title = "Мое пользовательское название страницы"; } else { \t $ title = $ title; } return $ title } add_filter ('wp_title', 'add_title_to_custom_page'); Надеюсь, что работает. –

Смежные вопросы