功能不能在一个地方工作

时间:2017-11-21 作者:The WP Intermediate

function some_function() {
    $template_options = get_post_meta(get_the_ID(), \'the_s_t_l_id\', true);
    if (\'layout_7\' === $template_options || \'layout_8\' === $template_options || \'layout_9\' === $template_options){
        echo \'displaynone\';
    }
}
类别→

.displaynone {display:none;}
但当我调用函数时,它在这里不起作用→

<aside class="sidebar <?php some_function(); ?>">
然而,如果我在其他地方调用这个函数,并且如果逻辑为true,那么它会打印预期的类。

那么,它不在理想的地方工作的原因是什么呢?

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

这是因为您的函数只能在WordPress循环中工作,如get_the_id(). 这将在模板文件中的WP循环内返回正确的值,但在其他位置调用时不会返回正确的值,并且检查失败。

有关WordPress循环的更多信息,请参见此

https://codex.wordpress.org/The_Loop

当超出循环时,您可以使用全局$post 对象以获取如下id

global $post
$id = $post->ID;
或者你可以试试这个

$id = get_queried_object_id();

结束

相关推荐

如何在不使用模板的情况下加载PHP页面?

我一直在用WordPress的“包装器”构建一个网站,进展相当顺利。我有一个插件,它保存了我的一些代码,我有一个主题,它保存了我的其他代码,总体来说,事情似乎按照我希望的方式进行。我的网站不是一个博客,也不会包含博客风格的内容,只有很少几种代表WordPress安装的“页面”元素,而且总体上不会使用人们认为“WordPress”的其余大部分内容。我主要使用WordPress,因为我希望通过WordPress和第三方插件处理用户帐户管理和货币化,我可以使用WordPress。因此,为了在WordPress中