2012-02-20 6 views
0

Я создаю свой собственный тип сообщений, и все работает хорошо, но у меня просто есть простой вопрос о том, как я могу его показать.Работа с созданием типов сообщений Wordpress

Я создал свой собственный тип сообщения в моем файле fuctions.php и сделал файл single-speakers.php. Как я могу направить свою страницу динамиков типа post на вкладку «SAFETY SPEAKERS» в основной навигации?

THIS IS MY SITE

This is the actual link to my custom post type page with my speakers on it

fuctions.php

add_action('init', 'create_my_post_types'); 

function create_my_post_types() { 
    register_post_type('speakers', 
     array(
      'labels' => array(
       'name' => __('Speakers'), 
       'singular_name' => __('Speakers') 
      ), 
      'public' => true, 
     ) 
    ); 
} 

одного speakers.php

<?php get_template_part('header', '2');  // Header #2 (header-2.php) ?> 

<?php query_posts('post_type=speakers'); ?> 
    <?php if (have_posts()) : while (have_posts()) : the_post(); ?> 

      <div id="speakersBox" class="clearfix"><?php the_title('<h6>', '</h6>'); ?><br/><?php the_content(); ?></div> 
      <hr> 

    <?php endwhile; endif; ?> 


<?php get_template_part('footer', '2');  // Footer #2 (footer-2.php) ?> 

Любая помощь или совет и оценен по достоинству!

ответ

0

Предполагая, что у вас есть single-speakers.php шаблон для отображения Single Speaker Post type. Добавить template_redirect действие, проверяя сообщение. Поместите это в свой файл functions.php. т.е.

add_action('template_redirect', 'redirect_to_speaker'); 
function redirect_to_speaker(){ 
    global $post; 
    if(is_single() && $post->post_type == 'speakers'){ 
     include (TEMPLATEPATH . '/single-speakers.php'); 
     exit; 
    } 
} 

В качестве альтернативы. Вы можете использовать фильтр template_include. На самом деле использовать этот один:

add_filter('template_include', 'my_speaker_template'); 
function my_speaker_template($template){ 
     global $post; 
     if(is_single() && $post->post_type == 'speakers'){ 
      $template = get_template_directory() . '/single-speakers.php'; 
     } 
     return $template; 
} 

Кроме того, прочитайте эту статью с некоторыми очень хорошей информации о шаблонах: http://xazure.net/2011/06/tips-snippets/wordpress/changing-wordpress-template-with-template_include/

+0

Я добавил в код, который у меня есть для моего файла с одним динамиком. Php, в мой вопрос. Я пробовал ваш код, но он не закрыт должным образом? Он говорит, что есть ошибка закрытия, мне нужно поставить ее в определенном месте? (это выше моего создания пользовательского действия типа сообщения в файле functions.php). – kia4567

+0

Извините, я забыл упомянуть, что поместил этот код в ваш файл 'functions.php'. И я редактировал код. Попробуй. –

+0

Я добавил его, однако я не совсем понимаю, что он должен делать. Не могли бы вы рассказать об этом мне? – kia4567

0

Хорошо, хорошо, я понял, способ. Я создал новую страницу шаблона с информацией из файла single-speakers.php (и назвал ее page-speakers.php) и указал мою страницу Speakers Speakers на эту новую страницу. Он отлично работает!

Спасибо за помощь. Навед, я ценю это в любом случае.

Смежные вопросы