Добавить "пользовательскую страницу" без страницы
Название может быть не совсем ясным, но я не знал, как спросить об этом по-другому.
Я хочу построить систему в Wordpress, где пользователь может объединить несколько проектов так, чтобы это было по URL- адресу, например http://mywordpress.com/projectbuilder/ или что-то в этом роде.
Обычно я создаю страницу в меню администратора и устанавливаю для нее определенный шаблон, а в контент добавляю такой текст, как: "Не удалять эту страницу, этот контент не отображается".
Но я думаю, что должен быть лучший способ добавить пользовательскую страницу к определенному URL, не добавляя ее в бэкэнд как страницу с "бесполезным контентом", так как в этом случае контент не может быть изменен из бэкэнда.
Я надеюсь это имеет смысл. Как я мог пойти об этом?
Я думаю, что я мог бы достичь этого с помощью собственного плагина, но я не могу найти какой-либо код, как это сделать. Я нашел способ добавить страницы администрирования в меню настроек справа. Но я хочу добавить страницу на сайт в передней части.
3 ответа
В вашем файле functions.php добавьте это куда угодно:
function themeslug_projects() {
$args = array(
'public' => true,
'label' => 'Projects',
'rewrite' => array( 'slug' => 'projects' ),
);
register_post_type( 'projects', $args );
}
add_action( 'init', 'themeslug_projects' );
После этого сохраните настройки постоянной ссылки снова, тогда это наверняка сработает.
Извините, я не правильно понял ваш вопрос. но кое что скажет для создания Custom post или таксономии:
Пожалуйста, проверьте ссылку ниже
В основном вы можете сделать это, создав правило перезаписи и затем указав на файл.
add_action('init', 'add_rewrite_rule');
function add_rewrite_rule(){
// add_rewrite_rule(REGEX url, location, priority (i.e. top is before other rewrite rules)
//basically tell wordress to add a query var if sidebar is added to url. change sidebar to what you want your link to be.
// i set up a custom post type to make this work called custompostype..it does nothing but just to give post_type a value.
add_rewrite_rule('^sidebar?','index.php?is_sidebar_page=1&post_type=customposttype','top');
}
// register a query var
add_action('query_vars','market_set_query_var');
function market_set_query_var($vars) {
array_push($vars, 'is_sidebar_page');
return $vars;
}
// associate a template with your quer_var
add_filter('template_include', 'market_include_template', 1000, 1);
function market_include_template($template){
if(get_query_var('is_sidebar_page')){
$new_template = (theme or plugin path).'/pages/yourpage.php'; // change this path to your file
if(file_exists($new_template))
$template = $new_template;
}
return $template;
}
после добавления любого правила перезаписи изменения не будут выполняться, пока вы не войдете в настройки-> постоянные ссылки и не нажмете кнопку "сохранить".