Sidear.php中的IF语句正在检查页面ID、模板或标题

时间:2011-09-09 作者:circey

我的侧栏中有以下代码。php文件:

<ul class="list-posts">

    <?php
        $lastposts = get_posts(\'numberposts=5&orderby=date&cat=-52\');
        foreach($lastposts as $post) :
        setup_postdata($post); 
        $page_name = $wp_query->post->post_name;

        if (is_page_template(\'news-page.php\')) { ?>
        <p>yes!</p> 
        <?php } else { ?>
        <li<?php if ( $post->ID == $wp_query->post->ID ) { 
       echo \' class="current"\'; } else {} ?>>
            <a href="<?php the_permalink() ?>"><?php the_title(); ?></a>
        </li>         
         <?php }  ?>
    <?php endforeach; ?>
</ul>
其目的是,如果边栏出现在模板以外的任何页面中news-page.php, 它执行列出类别内所有帖子的代码。如果没有,则打印<p>yes!</p> (此代码将更改-它只是一个占位符atm)。

老实说,我没有嫁给is_page_template, 但我试过了is_page, the_titlewp_title, 所有这些似乎都没有输出<p>yes</p>.

我是不是走错了方向?是不是因为它在侧边栏中查找页面模板,所以无法正常工作。php?

我是WP的新手,所以非常感谢您的具体建议!MTIA。

编辑:

好吧,这真的很奇怪。我在代码中添加了“get\\u page\\u template”,这样我就可以准确地看到它使用的是哪个模板,而不是使用新闻页面。php,尽管我已经在管理区域中指定了它。

我创建了一个新页面,还使用了新闻页面。php作为模板。同样,当我查看页面时,它不会使用新闻页面。php作为模板。

在这两种情况下,使用的模板都是“todaysmenu页面”。php’。我已在这两个文件中检查是否指定了正确的模板名称。它们是:

<?php
/*
Template Name: Todays menu page
*/
?>
以及

<?php
/*
Template Name: News page
*/
?>
我是否完全错过了什么?我需要刷新db还是什么?

编辑编号2:

所以这个页面肯定是在使用新闻页面。然而,php是侧栏。php仍在输出使用的模板是今天的菜单页。php。

那为什么不呢is_page_template 说出正确的模板?

编辑编号3:

回答:我把query_posts 在错误的地方。非工作代码:

<?php get_header(); ?>

      <?php
         query_posts(\'cat=4\');
         if (have_posts()) : while (have_posts()) : the_post();
      ?>

  <div id="content-wrap">
    <div id="side-column"><?php get_sidebar(); ?></div>
    <div id="content-column">
      <h2>News</h2>
      <article>             
        <h3><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h3>
         <div class="entry-content">
           <?php the_excerpt(); ?>
           <?php wp_link_pages(array(\'before\' => \'Pages: \', \'next_or_number\' => \'number\')); ?>      
         </div>
      </article>
      <?php endwhile; endif; ?>
    </div><!--content column-->
  </div><!--content wrap-->
<?php get_footer(); ?>
工作代码:

<?php get_header(); ?>
  <div id="content-wrap">
    <div id="side-column"><?php get_sidebar(); ?></div>
    <div id="content-column">
      <h2>News</h2> 

      <?php
         query_posts(\'cat=4\');
         if (have_posts()) : while (have_posts()) : the_post();
      ?>

      <article>             
        <h3><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h3>
         <div class="entry-content">
           <?php the_excerpt(); ?>
           <?php wp_link_pages(array(\'before\' => \'Pages: \', \'next_or_number\' => \'number\')); ?>      
         </div>
      </article>
      <?php endwhile; endif; ?>
    </div><!--content column-->
  </div><!--content wrap-->
<?php get_footer(); ?>
谢谢大家的建议和评论!

3 个回复
最合适的回答,由SO网友:circey 整理而成

好吧,我的query_posts 新闻页面中的代码。php放错地方了。请参阅我更新的问题(编辑编号3)。

SO网友:Chip Bennett

需要检查两件事:

页面模板实际命名为page-news.php.page-next.php 已分配模板您是否有实时链接?

EDIT

好的,所以出于某种原因,页面使用todaysmenu-page.php 模板文件。真奇怪。

如果重命名会发生什么todaysmenu-page.phptodaysmenu-page.php.old? 页面现在使用的模板文件是什么?

SO网友:byronyasgur

简化测试代码

if (is_page_template(\'news-page.php\')) { ?>
    <p>yes!</p> 
    <?php } else { ?>
    <p>not \'news-page.php\'</p>         
     <?php }

结束

相关推荐

Sidebar Generator? :)

我厌倦了编辑功能。每次我想添加/删除侧栏时,都会使用php。我知道有Sidebar Generator plugin, 但我想自己开发一些东西,不用插件就可以开箱即用。无论如何,我已经知道如何列出所有侧边栏,如何注册和删除它们,但我不知道如何从选项页自动执行此操作(当然我已经有了一个)。我已经分析了插件的代码,但我的PHP很烂,所以我不懂一半甚至更多。也许这里有人开发了自己的边栏生成器,可以帮助我掌握一些基本知识,比如如何使用$\\u POST等注册新的边栏。?我在考虑fopen(“functions.p