2013-09-01 2 views
1

Я пытаюсь использовать вкладки начальной загрузки в моей теме index.php, чтобы показать различное содержание в теме главной страницы. Я внедрил вкладки в index.php и создал новую страницу под названием popular-post.php, связанную на вкладке Popular.Ссылка new php page wordpress

Но когда я нажимаю на ссылку, чтобы показать популярный контент я получаю

Фатальная ошибка: Вызов неопределенной функции get_header() в

Это код моего index.php

<?php get_header(); ?> 
    <div class="row" id="content"> 
     <div class="col-sm-8 col-md-8 col-lg-8" id="primary"> 
     <ul class="nav nav-tabs"> 
    <li class="active"><a href="#">Home</a></li> 
    <li><a href="<?php bloginfo('template_directory'); ?>/popular-post.php">Popular</a></li> 
    <li><a href="#">Recientes</a></li> 
</ul> 



     <?php if (have_posts()) : while (have_posts()) : the_post(); ?> 
      <?php 
       /* Include the Post-Format-specific template for the content. 
       * If you want to overload this in a child theme then include a file 
       * called content-___.php (where ___ is the Post Format name) and that will be used instead. 
       */ 
       get_template_part('content', get_post_format()); 
      ?> 

     <?php endwhile;?> 
      <?php /* Pagnavi plugin support */ wp_pagenavi(); ?> 

     <?php else: ?> 

      <?php get_template_part('no-results', 'index'); ?> 

     <?php endif; ?> 
     </div> 
     <div class="col-sm-4 col-md-4 col-lg-4" id="secondary"> 
     <?php get_sidebar(); ?> 
     </div> 
    </div><!--/content--> 

     <?php get_footer(); ?> 

это код популярного-post.php

<?php 
/* 
Template Name: Popular Posts 
*/ 
?> 
<?php get_header(); ?> 
    <div class="row" id="content"> 
     <div class="col-sm-8 col-md-8 col-lg-8" id="primary"> 
     <ul class="nav nav-tabs"> 
    <li><a href="<?php bloginfo('template_directory'); ?>">Home</a></li> 
    <li class="active"><a href="#">Popular</a></li> 
    <li><a href="#">Recientes</a></li> 
</ul> 

<ul class="popular_posts"> 
     <?php $pc = new WP_Query('orderby=comment_count&#038;posts_per_page=10'); 

     while ($pc->have_posts()) : $pc->the_post(); ?> 
      <li><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a> 
      <p>Posted by <strong><?php the_author() ?></strong> with <?php comments_popup_link('No Comments;', '1 Comment', '% Comments'); ?></p></li> 
     <?php endwhile; ?> 
    </ul> 

     </div> 
     <div class="col-sm-4 col-md-4 col-lg-4" id="secondary"> 
     <?php get_sidebar(); ?> 
     </div> 
    </div><!--/content--> 

     <?php get_footer(); ?> 

Спасибо преиму ce

ответ

2

Вы не можете ссылаться на файл темы напрямую: <a href="<?php bloginfo('template_directory'); ?>/popular-post.php">Popular</a>.
Это недопустимый URL: http://example.com/wp-content/themes/YOUR-THEME/any-theme-file.php.

Создать новую страницу «Популярные сообщения», выбрать шаблон (файл уже имеет Page Template заголовок Обратите внимание на идентификатор страницы (в URL) и ссылку, как:..

<a href="<?php echo get_permalink(THE-ID-OF-YOUR-PAGE); ?>">Popular</a> 

Этом производит действительный URL: http://example.com/popular-posts/, который является частью вашего контента (страница), который использует определенный файл шаблон страницы

Чтобы получить идентификатор страницы на титульном использовании get_page_by_title:.

$the_page = get_page_by_title('popular-posts'); 
echo '<a href="' . get_permalink($the_page->ID) . '">Popular</a>'; 

Чтение о Template Hierarchy также поможет.

+0

Отлично! Это отлично работает, только добавление эха в get_pemalink! Так просто, и я схожу с ума. Другой вопрос: теперь я работаю в локальном режиме, когда я загружаю тему на свой сервер, мне нужно будет создать популярную страницу сообщения в панели администратора Wordpress и изменить идентификатор? – Trenton

+0

Обновлен ответ обходным путем (и отсутствующим «эхом»). – brasofilo