ATUALIZAÇÃO:
Com base na atualização da pergunta, preciso declarar explicitamente que o que é perguntado na pergunta pode ser feito com a resposta abaixo, apenas usei campos personalizados na postagem personalizada "Carro" digite para cada um dos itens que você deseja exibir em todas as páginas de um determinado carro.
Se desejar, basta simplesmente codificar a barra lateral no arquivo de modelo single-car.php
incluído abaixo e usar sua instrução if
para determinar qual conteúdo será exibido para os diferentes URLs. Você poderia se esforçar para organizar sua barra lateral e desenvolver um widget personalizado onde o widget extrairia as informações para o ID do post atual, mas por que ambos, a menos que você esteja construindo isso como um tema para outras pessoas usarem?
Na verdade, existem várias maneiras sutilmente diferentes de realizar isso, mas a que estou sugerindo deve ser maravilhosa para suas necessidades.
Oi @cannyboy:
Na verdade, não sei qual seria a melhor maneira de compartilhar campos personalizados entre as postagens. Mas isso pode ser apenas a bandeira vermelha que você precisa. Se algo parece muito difícil, talvez ...
Uma abordagem alternativa?
... você poderia considerar arquitetar de forma diferente ? Eu acho que você estará muito melhor criando um Tipo de postagem personalizada de "Carro" e então poderá armazenar tudo para cada "página" no tipo de um carro. Aqui estão alguns exemplos de URLs:
http://example.com/cars/volvo850/ <-- overview
http://example.com/cars/volvo850/tech-specs/
http://example.com/cars/volvo850/pictures/
Aprendendo sobre os tipos de postagem personalizados
Você pode aprender mais sobre os tipos de postagem personalizada nas respostas a estas perguntas:
- Dicas para usar o WordPress como um CMS?
- Pode um CrunchBase.com clone ser implementado usando o WordPress?
Um tipo de postagem personalizada e uma regra de reconfiguração
Para implementar os tipos de postagem personalizada e as várias páginas, você usa um código como o seguinte, que registra seu "Carro" Tipo de postagem personalizada e define um Regra de reescrita para as páginas do seu carro . Coloque este código no arquivo functions.php
do seu tema ou em um plug-in, o que você preferir:
<?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
}
Um Arquivo de modelo de tema específico do carro
Em seguida, você precisará de um arquivo de modelo específico do Car em seu tema ; o nome padrão para isso seria single-car.php
. Eu codifiquei um template inicial para você que renderiza todas as três URLs (o (visão geral) , 'especificações técnicas' e 'fotos' ) em um modelo usando uma instrução if para determinar qual conteúdo renderizar:
<?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(); ?>
Observe no exemplo acima que estou sendo muito simplista com o uso de get_post_meta()
; site real precisaria ter muito mais complexidade lá.
Tags de modelo a.k.a. Funções auxiliares
É claro que usei algumas tags de modelo e funções auxiliares para minimizar a complexidade no arquivo de modelo nas condições da declaração if . Aqui estão eles e você também pode colocar estes no arquivo functions.php
do seu tema:
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);
}
Screenshots preenchidos com o tipo personalizado de postagem Love
Assim que tiver todo esse código em vigor e tiver adicionado uma Car publicação como Volvo 850 , pode fazê-lo funcionar como os seguintes capturas de ecrã:
Página de visão geral
Páginadeespecificaçõestécnicas
Página de Fotos