【问题标题】:Home Page Only Footer仅主页页脚
【发布时间】:2011-05-08 06:27:48
【问题描述】:

我有一个博客http://sweatingthebigstuff.com,我想在页脚中添加一个额外的行,该行仅在主页上显示。我找到了这段代码,但它对我不起作用。是我的语法错误还是我可以尝试其他方法来让它工作?

<?php if ( is_home() ) { ?>
text
<?php } ?>

这里是 footer.php 被调用的地方

<?php include (TEMPLATEPATH . '/sidebar1.php'); ?>

<div class="cleared"></div>

<?php get_footer(); ?>

这是页脚代码:

文本 2


联系方式 |免责声明 |隐私声明
版权所有 © 2009-2010 Sweating The Big Stuff。版权所有。

然后是一些站点计废话。

【问题讨论】:

    标签: wordpress footer


    【解决方案1】:

    is_home() 设置了一个似乎不会自行重置或重新评估的全局变量,wp 有点奇怪。

    尝试将wp_reset_query() 放在 if 语句代码的 end 开头
    实际上,最好先调用它,因为我们可以确保查询被重置

    <?php wp_reset_query();
    if ( is_home() ) { ?>
    text
    <?php }  ?>
    

    现在 php 正在运行,理想情况下您会想要上面的代码。
    文本

    我刚刚做了一个查看源代码,我可以清楚地看到 php 代码,它不应该是可见的,因为它是用来解析服务器端的。视图源中不应存在以下内容....正在编辑错误的文件?

    <p>
    <?php if ( is_home() ) { ?> 
    text 
    <?php } ?>
    <wp_reset_query()>
    <br />
    <br />
    

    footer.php 文件应该位于 wp-content/themes/nameofyourtheme 文件夹中

    【讨论】:

    • 在您调用 is_home() 以确保下次调用时,查询被重置。或者你可以把它放在它前面。看看它是否有效。
    • 编辑:我刚刚快速浏览了您的 html,wp_reset_query() 需要放在 标签内 - 目前,它显示为不正确的 html。嗯....我唯一能想到的另一件事是让您尝试 is_front_page() 而不是 is_home(),如果这不起作用,我就没有想法了...
    • 我知道字面上是 0 php。你能告诉我如何将 wp_reset_query() 放在 标签中吗?
    • 看我的编辑,wp_reset_query() 是一个 php 函数调用,所以当你想使用 php 函数时,如果你不确定,只要在函数周围放一个
    • 这些都不适合我。同样的问题,它出现在所有页面上。
    【解决方案2】:

    is_home() 是一个应该返回 true 或 false 的方法。您需要在某处实现此方法。如果 blogspot 没有为你实现这个方法,你需要自己做。对于您的网站,我认为此功能可以满足您的要求:

    <?php
    function is_home(){
        $r = $_SERVER['REQUEST_URI'];
        return $r == '/' || $r == '' || $r == '/index.php';
    }
    
    if(is_home()) {
    ?>
    text
    <?php } ?>
    

    你想要页脚的地方,放:

    <?php include 'footer.php'; ?>
    

    而不是行:

    <?php get_footer(); ?>
    

    我相信您的问题是 get_footer() 正在将页脚作为文本读取,因此它没有事先执行 PHP。如果您这样做,您可以在标头中添加任意数量的 PHP。

    【讨论】:

    • 您的系统某处存在缺陷,因为我在查看您的文档源时看到了您的 php 代码。要么你的文件没有正确的扩展名,要么你没有做正确的事情,因为 php 代码没有被执行。
    • 该文件必须是正确的,因为文本显示,但它显示无处不在。
    • 不,这是错误的。正在显示文本是因为浏览器只是忽略了无效标签。作为测试尝试输入“hello, world”。 “你好,世界”即使无效,仍然会显示。如果您转到您的页面并查看源代码,您会看到您的 PHP 没有被执行,它只是像 HTML 一样被输出。我刚刚通过复制所有内容来测试您的页面,唉,它只在主页上显示“文本”。
    • 我明白你在说什么。我以为你说它根本不调用footer.php。
    • 在我的网站上,它只显示“文本”,但它在每个页面上都显示,那么您认为解决方案是什么?
    【解决方案3】:

    您的语法没有问题,当我查看您的页面源时,我看到“文本”

    页脚的文件扩展名是什么?如果它是“footer.php”,那么我不应该看到 php() 的开始和结束术语。除非文件扩展名为“.php”,否则 php 不会运行

    关于之前的回答:

    &lt;?php wp_reset_query();?&gt; 在这种情况下应该在 &lt;?php if(is_home()){?&gt;text&lt;?php } ?&gt; 之前。 is_home() 取决于页面上存在的循环。也许您在某个地方使用了自定义查询,或者您的某个插件使用了一个自定义查询,这会破坏默认查询变量。就像我说的,在 if 语句之前使用 reset 语句。

    【讨论】:

    • 谢谢,但这仍然不能解决问题。它仍然显示在每个页面上。
    【解决方案4】:

    您需要修改代码以包括对is_front_page() 的检查,如下所示:

    <?php
        $ishomepage = ( is_home() || is_front_page() );
        switch( $ishomepage )
        {
            case true :
                echo 'Your homepage-only snippet of text goes here';
                break;
    
            case false :
            default :
                // Do nothing... or do something else...
                break;
        }
    
    ?>
    

    参考:WordPress Codex: is_front_page()

    默认 WP 安装没有定义主页,它使用您的 index.php 并检查其他模板,例如 home.php 模板作为起点(home.php 仅当您的主题有它时。)这是一个图表从他们的在线文档中可以看出他们的层次结构是如何工作的:WordPress Template Hierarchy

    默认情况下,WordPress 会在首页显示您最近的帖子 您的网站。但是很多 WordPress 用户希望有一个静态的前端 页面或启动页面作为首页。这种“静态前 页面”外观对于那些希望没有“博客”外观的人来说很常见 他们的网站,给人一种更像 CMS(内容管理系统)的感觉。

    如果您想知道如何设置静态主页,请阅读本文并按照说明操作:Creating a Static Frontpage。当您设置静态首页时,is_home() 将按预期工作。

    【讨论】:

      猜你喜欢
      • 2014-12-08
      • 1970-01-01
      • 2012-12-30
      • 2014-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-06
      相关资源
      最近更新 更多