更新:
根据问题的更新,我想我需要明确指出,问题中的问题可以通过下面的答案来完成,只需使用“汽车”自定义贴子类型中的自定义字段,就可以在给定汽车的所有页面上显示每个项目。
如果您想这样做,只需将侧栏硬编码到single-car.php
我在下面包含的模板文件,然后使用if
语句确定要为不同URL显示的内容。你可以努力将你的边栏widget化,并开发一个定制的小部件,在这里小部件可以提取当前帖子ID的信息,但为什么两者都要做,除非你将其构建为供其他人使用的主题?
实际上有很多微妙不同的方法来实现这一点,但我建议的方法应该非常适合您的需要。
嗨
@cannyboy:实际上,我不知道在帖子中共享自定义字段的最佳方式是什么。但这可能正是你需要的危险信号。如果事情看起来太难,也许。。。
另一种方法
。。。你可以穿上鞋子
architecting it differently? 我想你最好创建一个
Custom Post Type 然后,您可以将每个“页面”的所有内容存储到一个汽车贴子类型中。以下是一些示例URL:
http://example.com/cars/volvo850/ <-- overview
http://example.com/cars/volvo850/tech-specs/
http://example.com/cars/volvo850/pictures/
了解自定义帖子类型
您可以在以下问题的答案中了解有关自定义帖子类型的更多信息:
<?php
add_action(\'init\',\'car_init\');
function car_init() {
register_post_type(\'car\',
array(
\'label\' => \'Cars\',
\'public\' => true,
\'show_ui\' => true,
\'query_var\' => \'car\',
\'rewrite\' => array(\'slug\' => \'cars\'),
\'hierarchical\' => true,
//\'supports\' => array(\'title\',\'editor\',\'custom-fields\'),
)
);
global $wp,$wp_rewrite;
$wp->add_query_var(\'car-page\');
$wp_rewrite->add_rule(\'cars/([^/]+)/(tech-specs|pictures)\',\'index.php?car=$matches[1]&car-page=$matches[2]\', \'top\');
$wp_rewrite->flush_rules(false); // This should really be done in a plugin activation
}
一个特定于汽车的主题模板文件
need a Car-specific template file in your theme; 默认名称为
single-car.php
. 我为您编写了一个初学者模板,通过使用if语句来确定要呈现的内容,它可以在一个模板中呈现所有三个URL(概述、技术规范和图片):
<?php get_header(); ?>
<div id="container">
<div id="content">
<?php if ( have_posts() ): the_post(); ?>
<div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<h1 class="entry-title"><?php the_title(); ?></h1>
<div class="entry-content">
<?php if(is_car_techspecs()): ?>
<a href="..">Back</a>
<h1>Tech Specs</h1>
The tech specs go here!
<?php get_post_meta($post->ID,\'_car_tech_specs\'); ?>
<?php elseif (is_car_pictures()): ?>
<a href="..">Back</a>
<h1>Pictures</h1>
Car Pictures go here!
<?php get_post_meta($post->ID,\'_car_pictures\'); ?>
<?php else: ?>
<ul>
<h1>Overview</h1>
<li><a href="tech-specs/">Tech Specs</a></li>
<li><a href="pictures/">Pictures</a></li>
</ul>
<?php the_content(); ?>
<?php endif; ?>
<?php the_content(); ?>
</div>
<?php endif; ?>
</div>
</div>
<?php get_sidebar(); ?>
<?php get_footer(); ?>
注意,在上面的示例中,我对
get_post_meta()
; 真正的网站需要有更多的复杂性。
模板标记a.k.a.Helper函数当然,我使用了一些模板标记a.k.a.Helper函数来最小化if语句条件下模板文件的复杂性。它们在这里,你可以把它们放在你的主题中functions.php
文件也是:
function is_car_techspecs() {
global $wp_query;
return is_car_page(\'tech-specs\');
}
function is_car_pictures() {
global $wp_query;
return is_car_page(\'pictures\');
}
function is_car_page($page) {
global $wp_query;
return (isset($wp_query->query[\'car-page\']) && $wp_query->query[\'car-page\']==$page);
}
充满自定义贴子类型Love的屏幕截图一旦你有了所有的代码,并且你添加了一辆类似沃尔沃850的贴子,你就可以让它像下面的屏幕截图一样工作:
概述页面
(来源:mikeschinkel.com)技术规格页
图片页面