У меня есть собственный тип сообщений под названием «выставочный зал». Вот код
<?php
function register_showroom_post_type() {
$labels = array(
'name' => _x( 'Showroom Cars', 'post type general name' ),
'singular_name' => _x( 'Showroom Car', 'post type singular name' ),
'add_new' => _x( 'Add Showroom Car' ),
'add_new_item' => __( 'Add New Showroom Car' ),
'edit_item' => __( 'Edit Showroom Car' ),
'new_item' => __( 'New Showroom Car' ),
'all_items' => __( 'All Showroom Cars' ),
'view_item' => __( 'View Showroom Car' ),
'search_items' => __( 'Search Showroom Listings' ),
'not_found' => __( 'No Showroom listings found' ),
'not_found_in_trash' => __( 'No Showroom listings found in the Trash' ),
'parent_item_colon' => '',
'menu_name' => 'Showroom Cars',
);
$args = array(
'labels' => $labels,
'description' => 'Holds the showroom cars and specific data',
'public' => true,
'menu_position' => 5,
'supports' => array( 'title', 'thumbnail' ),
'has_archive' => true,
'menu_icon' => 'dashicons-admin-network',
);
register_post_type( 'showroom', $args );
}
add_action( 'init', 'register_showroom_post_type' );
function showroom_updated_messages( $messages ) {
global $post, $post_ID;
$messages['showroom'] = array(
0 => '',
1 => sprintf( __('Car listing updated. Nice one. <a href="%s">View Car</a>'), esc_url( get_permalink($post_ID) ) ),
2 => __('Custom field updated.'),
3 => __('Custom field deleted.'),
4 => __('Car listing updated.'),
5 => isset($_GET['revision']) ? sprintf( __('Car listing restored to revision from %s'), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false,
6 => sprintf( __('Car listing published. Sell that beast! <a href="%s">View the listing</a>'), esc_url( get_permalink($post_ID) ) ),
7 => __('Car listing saved.'),
8 => sprintf( __('Car listing submitted. <a target="_blank" href="%s">Preview car listing</a>'), esc_url( add_query_arg( 'preview', 'true', get_permalink($post_ID) ) ) ),
9 => sprintf( __('Car listing scheduled for: <strong>%1$s</strong>. <a target="_blank" href="%2$s">Preview car listing</a>'), date_i18n( __( 'M j, Y @ G:i' ), strtotime( $post->post_date ) ), esc_url( get_permalink($post_ID) ) ),
10 => sprintf( __('Car listing draft updated. <a target="_blank" href="%s">Preview Car listing</a>'), esc_url( add_query_arg( 'preview', 'true', get_permalink($post_ID) ) ) ),
);
return $messages;
}
add_filter( 'post_updated_messages', 'showroom_updated_messages' );
function taxonomies_showroom() {
$labels = array(
'name' => _x( 'Car Manufacturers', 'taxonomy general name' ),
'singular_name' => _x( 'Car Manufacturer', 'taxonomy singular name' ),
'search_items' => __( 'Search Car Manufacturers' ),
'all_items' => __( 'All Car Manufacturers' ),
'parent_item' => __( 'Parent Car Manufacturer' ),
'parent_item_colon' => __( 'Parent PCar Manufacturer:' ),
'edit_item' => __( 'Edit Car Manufacturer' ),
'update_item' => __( 'Update Car Manufacturer' ),
'add_new_item' => __( 'Add New Car Manufacturer' ),
'new_item_name' => __( 'New Car Manufacturer' ),
'menu_name' => __( 'Car Manufacturers' ),
'show_ui' => true,
);
$args = array(
'labels' => $labels,
'hierarchical' => true,
);
register_taxonomy( 'car_manufacturers', 'showroom', $args );
}
add_action( 'init', 'taxonomies_showroom', 0 );
?>
Это создает панель администратора и т. д., и я могу нормально создавать сообщения. У меня есть файл single-showroom.php, который отлично отображает тип сообщения.
Я хочу создать страницу шаблона, которая отображает только этот тип сообщений. Поэтому я создал эту очень простую страницу, чтобы проверить это.
<?php
/**
*Template Name: Showroom 2
*Description: Creates a gallery of featured images from the showroom post type
*/
get_header();
?>
<p>SHOWROOM 2 PAGE</p>
<?php
$args = array( 'post_type' => 'showroom', 'posts_per_page' => 10 );
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();
the_title();
echo '<div class="entry-content">';
the_content();
echo '</div>';
endwhile;
?>
<?php get_footer(); ?>
Я создал страницу демонстрационного зала и установил шаблон «Шоурум 2», но эта страница не отображается. Вместо этого отображается страница archive.php.
У меня есть другой настраиваемый тип сообщений, называемый «аукцион», и при тестировании с этим файлом шаблона заголовки «аукцион» отображаются нормально. Так что это заставляет меня думать, что у меня что-то не так в создании типа сообщения. Я не вижу!
Почему мой тип сообщения Showroom не отображается с этим шаблоном?
[РЕДАКТИРОВАТЬ]
Я запускаю все это локально, поэтому я установил еще одну свежую копию Wordpress, создал свой собственный тип записи (у меня он есть в виде плагина), скопировал файл моего шаблона, который я хотел использовать, и все заработало нормально!
Единственное, о чем я могу думать, это то, что я создал посты «демонстрационный зал» до того, как перенес пользовательский тип поста в плагин. Когда я создал пользовательские сообщения «аукцион», я уже сделал это настраиваемым сообщением «аукцион» с помощью плагина.
Так что, возможно, есть какой-то изворотливый конфликт.
Я собираюсь удалить сообщения «выставочного зала» из базы данных и посмотреть, что произойдет...
[РЕДАКТИРОВАТЬ 2]
После дальнейшего изучения эта проблема возникает только тогда, когда я устанавливаю постоянные ссылки на «Имя сообщения». Например, если я выберу «Числовой», отобразится файл шаблона.
Кто-нибудь знает, почему это может быть?
[РЕШЕНИЕ]
Спасибо всем за ваши предложения. В конце концов, это было так же, как Fyn предложил проблему с именем.
В конце концов я изменил имя пользовательского типа сообщения с «выставочный зал» на «автомобиль», и все в порядке!
Это было ужасно! Потерял около дня своей жизни... ах, радости кодирования :)