我有一个名为“展厅”的自定义帖子类型。这是代码
<?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 );
?>
这会创建一个管理面板等,我可以很好地创建帖子。我有一个单一的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(); ?>
我创建了一个Showroom页面并将模板设置为“Showroom 2”但是,此页面不会显示。而是显示archive.php页面。
我有另一个名为“拍卖”的自定义帖子类型,当使用此模板文件进行测试时,显示“拍卖”标题很好。所以这让我觉得我在帖子类型创建中有错误。我看不到它!
为什么我的陈列室帖子类型没有显示此模板?
我在本地运行所有这些因此我安装了另一个新的wordpress副本,创建了我的自定义帖子类型(我把它作为插件),复制到我想要使用的模板文件上并且工作正常!
我唯一能想到的是,在将自定义帖子类型转移到插件之前,我创建了“陈列室”帖子。当我创建“拍卖”自定义帖子时,我已经将其作为“拍卖”自定义发布了一个插件。
所以也许有一些古怪的冲突。
我要从数据库中删除'陈列室'帖子,看看会发生什么......
经过进一步调查,只有当我将永久链接设置为“帖子名称”时才会出现此问题。例如,如果我选择“数字”,则会显示模板文件。
有谁知道为什么会这样?
感谢大家的建议。最后,就像Fyn提出了一个命名问题。
我最终将自定义帖子类型名称从“陈列室”更改为“汽车”,一切都很好!
太可怕了!失去了我生命中的一天......编码的乐趣啊:)
答案 0 :(得分:1)
我认为可能存在名称冲突。好吧,我有一次。如果您的帖子类型有一个存档,它的名称将自动为“陈列室”,因此它可能会在展厅页面上选择展厅存档。您是否尝试重命名页面以检查是否存在冲突?
或许您应该考虑使用archive-showroom.php来展示您的所有展厅帖子!这将是最简单的方法。
以下是一些可能对您有帮助的参考资料:
https://codex.wordpress.org/Post_Type_Templates
https://developer.wordpress.org/themes/template-files-section/page-template-files/
答案 1 :(得分:0)
答案 2 :(得分:0)
您可以通过以下方式实现这一目标:
global $post;
if ($post && $post->ID = 123) {
include TEMPLATEPATH . '/single-123.php';
exit();
}
将此代码放在 functions.php 文件的末尾。通过您的帖子ID更改123
答案 3 :(得分:0)
您应该首先创建分类,然后创建归档页面的自定义帖子类型才能正常工作。另外一件事,你的代码中有一个错误。这一行中缺少一个参数
'add_new' => _x( 'Add Showroom Car' ),
应该是
'add_new' => _x( 'Add Showroom Car', 'post type general name' ),
如果您确实需要page.php
模板来显示自定义帖子类型,可以查看{我在上面做过的{3}}
答案 4 :(得分:0)
我注意到有时有时会进入“设置”->“永久链接”下并单击“保存更改”会解决此问题。