【问题标题】:Wordpress conditional statements not workingWordpress 条件语句不起作用
【发布时间】:2013-03-24 13:12:30
【问题描述】:

我正在设置一些条件语句来更改不同页面的页面布局。我的第一个条件是

if (is_page('15030')) {
}

里面的内容是首页的,效果很好。然后我的下一个说

elseif (is_page('Sales')){
}

而且它根本不起作用。我尝试使用页面名称、页面 ID、将 elseif 更改为 if、使用 in_category - 根本没有显示任何内容。知道我应该寻找什么可能会导致这种情况吗?我注意到我将“销售”设置为帖子类别,当我创建“销售”页面时,它会自动显示来自销售类别的帖子,这是我想要的,但我不确定这是否会有影响吗?

代码位于 custom_functions.php 中。完整代码如下:

function custom_template() {
if (is_page('15030')) : ?>
    <!--Technology Section-->
    <div id="content">
        <div id="post-<?php the_ID(); ?>" class="post_box top">
            <a class="scroll" id="technology"></a>
            <div class="left">
                <a href="index.php?page_id=15174"><img src="../../../images/businessbee/blog/tech-bubble.gif" alt="Technology" class="bubble"/></a>
                <h3><a href="index.php?page_id=15174">Technology</a></h3>
                <p>Technology upgrades don't have to break the bank. From improving your hardware to streamlining your IT management, we've compiled cost-effective solutions to cover your needs. </p>
                <hr/>
                <ul class="catCount">
                    <?php
                        $catList = wp_list_categories('title_li=&show_count=1&echo=0&child_of=3527&hide_empty=0');
                        $catList = preg_replace('@\<li([^>]*)>\<a([^>]*)>(.*?)\<\/a>@i', '<li$1><a$2><span class="name">$3</span></a>', $catList);
                        $catList = ereg_replace('</a> \(([0-9]+)\)', ' <span class="count">\\1</span><br class="clear"/></a>', $catList);
                        echo $catList;
                    ?>
                    <br class="clear"/>
                </ul>
                <hr/>
                <a href="index.php?page_id=15174" class="allLink">View all Technology Resources</a>
            </div><!--left-->
            <div class="right">
                <h4>Featured Resources</h4>
                    <?php global $post; ?>
                    <?php if (have_posts()) : ?>
                        <?php query_posts('cat=3527'); ?>
                       <?php while (have_posts()) : the_post(); ?>
                            <?php $categories = get_the_category(); ?>
                            <?php if ( has_post_thumbnail() ) { ?>
                                <a href="<?= the_permalink() ?>" class="box">
                                  <div class="thumbnailBox">
                                    <h3><?= the_title()?>
                                    <span>posted in <?= $categories[0]->cat_name; ?></span>
                                    </h3>
                                    <?php the_post_thumbnail('medium'); ?>
                                    <div class="overlay"></div>
                                    </div>
                                </a>
                            <?php } ?>
                    <?php endwhile; ?>
                    <?php endif; ?>
                    <?php wp_reset_query(); ?>
            </div><!--right-->
            <br class="clear"/>
            <img src="../../../images/businessbee/blog/page-div.png" alt="" class="blog-page-div"/>

            <!--SALES SECTION-->
                <a class="scroll" id="sales"></a>
                <div class="left">
                    <a href="index.php?page_id=15206"><img src="../../../images/businessbee/blog/sales-bubble.gif" alt="Sales" class="bubble"/></a>
                    <h3><a href="index.php?page_id=15206">Sales</a></h3>
                    <p>Every sales team needs a solid method for tracking leads and identifying its top performers. Take a look at these great resources, designed to help maximize your conversion rate.</p>
                    <hr/>
                    <ul class="catCount">
                    <?php
                        $catList = wp_list_categories('title_li=&show_count=1&echo=0&child_of=3536&hide_empty=0');
                        $catList = preg_replace('@\<li([^>]*)>\<a([^>]*)>(.*?)\<\/a>@i', '<li$1><a$2><span class="name">$3</span></a>', $catList);
                        $catList = ereg_replace('</a> \(([0-9]+)\)', ' <span class="count">\\1</span><br class="clear"/></a>', $catList);
                        echo $catList;
                    ?>
                        <br class="clear"/>
                    </ul>
                    <hr/>
                    <a href="index.php?page_id=15206" class="allLink">View all Sales Resources</a>
                </div>
                <div class="right">
                <h4>Featured Resources</h4>
                    <?php global $post; ?>
                    <?php if (have_posts()) : ?>
                        <?php query_posts('cat=3536'); ?>
                       <?php while (have_posts()) : the_post(); ?>
                            <?php $categories = get_the_category(); ?>
                            <?php if ( has_post_thumbnail() ) { ?>
                                <a href="<?= the_permalink() ?>" class="box">
                                  <div class="thumbnailBox">
                                    <h3><?= the_title()?>
                                    <span>posted in <?= $categories[0]->cat_name; ?></span>
                                    </h3>
                                    <?php the_post_thumbnail('medium'); ?>
                                    <div class="overlay"></div>
                                    </div>
                                </a>
                            <?php } ?>
                    <?php endwhile; ?>
                    <?php endif; ?>
                    <?php wp_reset_query(); ?>
            </div><!--right-->
            <br class="clear"/>
            <img src="../../../images/businessbee/blog/page-div.png" alt="" class="blog-page-div"/>

    </div><!-- post id div-->
    </div><!--content-->

<!--End of Homepage Content-->

     elseif (is_page('Sales')){
        <h2>Test Content</h2>
    }

<?php endif; ?>

【问题讨论】:

  • 你能把这个位置的代码贴出来吗?
  • 当然@DavidChase - 以上更新。
  • 观看那些打开和关闭php 标签:)
  • 是的,我不太擅长识别何时使用它们
  • 看看我的回答,看看是否适合你

标签: wordpress


【解决方案1】:

看起来它需要if 而不是elseif 并像这样包装在php标签中

<?php endif; ?> // this closes the 1st if statement aka the if for is_page('15030').

<?php if ( is_page('Sales') ): ?>
<h2>Test Content</h2>
<?php endif; ?>

【讨论】:

  • 似乎应该可以工作,但事实并非如此。类别页面似乎完全抵抗任何类型的条件定位。我有添加正文类的条件语句,效果很好,但即使我在自定义模板函数之外使用条件语句在网站的另一部分添加内容,页面也无法识别它的类别、ID或任何东西
  • 尝试使用is_category() 而不是is_page,它采用“类别 ID、类别标题、类别段或 ID、名称和段的数组”。来源:is category function
  • 不幸的是仍然无法正常工作。页面将响应自定义循环,但我不认为我想用它来控制整个页面的显示。
  • 销售是页面/帖子或类别还是其他分类法?
  • 我设置了一个销售类别和一个销售页面。当我打开销售页面时,它会自动显示所有标记为销售的帖子。我没想到会发生这种情况,但这实际上是我正在寻找的最终结果,所以我没有研究它。但是,我需要在页面上显示更多内容而不仅仅是帖子,这就是我尝试编辑自定义模板的原因。为了节省一些时间,我已经尝试将 is_category() 切换到 is_archive(),并仔细检查以确保页面设置为使用自定义模板。
【解决方案2】:

根据法典:

由于某些全局变量在循环期间被覆盖,is_page() 将无法工作。为了在循环之后使用它,您必须在循环之后调用 wp_reset_query()。

在我看来,您正在在循环中使用它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-27
    • 2011-01-08
    • 2011-12-04
    • 2012-08-15
    • 1970-01-01
    • 1970-01-01
    • 2012-03-27
    相关资源
    最近更新 更多