Wordpress, как использовать тип записи в качестве страницы с постоянной ссылкой? - PullRequest
1 голос
/ 13 марта 2019

Вопрос в том, как создать маршрут, подобный экспрессу узла в WordPress.
/ gallery / {: id or: name}, которая переходит на страницу галереи

У меня сейчас есть проекты, страница галереи (оба используют шаблон)

 /**
 * Template Name: Gallery page
 *
 * @package WordPress
 * @subpackage  A Theme
 * @since  A Theme 1.0
 */

Создан пользовательский тип галереи, содержащий изображения и прикрепленный к проекту.

Заменено название темы на A

add_action( 'init', 'gallery_post_type' );
function gallery_post_type() {
    register_post_type( 'gallery',
        array(
        'labels' => array(
            'name'               => __('Gallery Page - gallery', 'A'),
            'singular_name'      => __('Gallery', 'A'),
            'add_new_item'       => __('Add Gallery', 'A'),
            'edit_item'          => __('Edit Gallery', 'A'),
            'new_item'           => __('New Gallery', 'A'),
            'view_item'          => __('View Gallery', 'A'),
            'search_items'       => __('Search Gallery', 'A'),
            'not_found'          => __('No Gallery Found', 'A'),
            'not_found_in_trash' => __('No Gallery found in Trash', 'A')
        ),
        'description'          => 'Gallery in the gallery page',
        'hierarchical'         => false,
        'menu_icon'            => 'dashicons-networking',
        'menu_position'        => 5,
        'public'               => true,
        'show_in_admin_bar'    => false,
        'show_in_nav_menus'    => true,
        'show_ui'              => true,
        'supports'             => array('title')
        ));
}

Когда пользователь щелкает ссылку из блока проекта, я хотел бы изменить маршрут к странице галереи.

Что-то вроде домена / галереи / имени проекта / Но он продолжает показывать не найдено или ничего. Единственный способ увидеть страницу галереи - это домен / галерея

Что я должен сделать, чтобы создать галерею / название проекта? Страница галереи - Постоянная ссылка: http://wordpresslocal -clone.local / gallery / {: name} <- Могу ли я сделать что-то вроде этого, например, выражение узла </strong>

Сообщение в галерее - Постоянная ссылка: http://wordpresslocal -clone.local / gallery / test /

Я попробовал этот код в качестве комментария

add_action( 'init', 'wpse26388_rewrites_init' );
  function wpse26388_rewrites_init(){
      add_rewrite_rule(
          'gallery/([a-zA-Z_0-9]+)/?$',
          'index.php?pagename=gallery&project_name=$matches[1]',
          'top' );
  }
  add_filter( 'query_vars', 'wpse26388_query_vars' );
  function wpse26388_query_vars( $query_vars ){
      var_dump($query_vars);
      $query_vars[] = 'project_name';
      return $query_vars;
  }

1 Ответ

0 голосов
/ 13 марта 2019

Пожалуйста, отметьте это, это нормально работает на моем конце:

add_action('init', 'mjt_gallery_post_init');
function mjt_gallery_post_init() {
    global $data;
    register_post_type(     
        'gallery',      
    array(          
        'labels' => array(              
        'name' => 'Gallery Page',   
        'singular_name' => 'Gallery'    
        ),  
        'public' => true,
        'has_archive' => 'gallery', 
        'rewrite' => array('slug' => 'gallery', 
        'with_front' => true),
        'supports' => array('title', 'editor', 'author',  'revisions', 'custom-fields' ),   
        'can_export' => true,
        )
    );
}

и, пожалуйста, заново сохраните настройки постоянной ссылки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...