Добавить "пользовательскую страницу" без страницы

Название может быть не совсем ясным, но я не знал, как спросить об этом по-другому.

Я хочу построить систему в 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;
}

после добавления любого правила перезаписи изменения не будут выполняться, пока вы не войдете в настройки-> постоянные ссылки и не нажмете кнопку "сохранить".

Другие вопросы по тегам