Специальный шаблон сообщения типа персонализированного сообщения

Я создал пользовательский тип сообщения, и вот весь код:

// Register Custom Post Type function wrestler_register() { $labels = array( 'name' => _x( 'Wrestlers', 'Post Type General Name', 'text_domain' ), 'singular_name' => _x( 'Wrestler', 'Post Type Singular Name', 'text_domain' ), 'menu_name' => __( 'Wrestler Profiles', 'text_domain' ), 'parent_item_colon' => __( 'Parent Item:', 'text_domain' ), 'all_items' => __( 'All Items', 'text_domain' ), 'view_item' => __( 'View Item', 'text_domain' ), 'add_new_item' => __( 'Add New Profile', 'text_domain' ), 'add_new' => __( 'Add New', 'text_domain' ), 'edit_item' => __( 'Edit Item', 'text_domain' ), 'update_item' => __( 'Update Item', 'text_domain' ), 'search_items' => __( 'Search Item', 'text_domain' ), 'not_found' => __( 'Not found', 'text_domain' ), 'not_found_in_trash' => __( 'Not found in Trash', 'text_domain' ), ); $rewrite = array( 'slug' => 'wrestler', 'with_front' => true, 'pages' => false, 'feeds' => false, ); $args = array( 'label' => __( 'wrestler_profiles', 'text_domain' ), 'description' => __( 'Profiles of WWE Superstars & Divas', 'text_domain' ), 'labels' => $labels, 'supports' => array( 'title', 'thumbnail', 'custom-fields', ), 'hierarchical' => true, 'public' => true, 'show_ui' => true, 'show_in_menu' => true, 'show_in_nav_menus' => true, 'show_in_admin_bar' => true, 'menu_position' => 5, 'menu_icon' => url + '/icon.png', 'can_export' => true, 'has_archive' => false, 'exclude_from_search' => false, 'publicly_queryable' => true, 'rewrite' => $rewrite, 'query_var' => 'wrestler', 'capability_type' => 'page', ); register_post_type( 'wrestler_profiles', $args ); } // Hook into the 'init' action add_action( 'init', 'wrestler_register', 0 ); 

Теперь я также добавил single-wrestler.php в корень моей темы, но каждый раз, когда я просматриваю страницу, он попадает на «Single.php».

Благодарю.

По какой-то причине WordPress не соблюдает Template_Hierarchy . Лучший способ обойти эту проблему – «заставить» WordPress использовать пользовательский шаблон single.php, который вы создали. Для этого добавьте следующую функцию под своим CPT.

  /* Information Posts Template selection - a single.php just for our wrestler_profiles */ function pietergoosen_info_template_include( $original_template ) { if ( isset( $wp->query_vars['wrestler_profiles'] ) && false == $wp->query_vars['wrestler_profiles'] ) { return get_template_directory() . '/single-wrestler.php'; } else { return $original_template; } } add_filter( 'template_include', 'pietergoosen_info_template_include' ); 

Просто помните, что если вы используете свой CPT в дочерней теме или в плагине, измените get_template_directory() соответственно

Я немного опаздываю в игру, но я подумал, что стоит упомянуть для будущей ссылки, что ваш пользовательский тип сообщения называется «wrestler_profiles», а ваш шаблон «single-wrestler.php». Ваш шаблон должен быть назван «single-wrestler_profiles.php» в соответствии с вашим пользовательским именем типа сообщения. В соответствии с иерархией шаблонов ( http://codex.wordpress.org/Template_Hierarchy ), чтобы переопределить один шаблон для настраиваемого типа сообщения, имя должно быть «single-$ posttype.php»,

Если вы добавляете настраиваемый тип сообщения через плагин, отличное решение Pieter – это единственное, что я нашел, что работает.