使用 is_page() WordPress 函数时,当使用 $this 或 self 时,结果混合

Mixed results with is_page() WordPress function, when using either $this, or self

提问人:level42 提问时间:11/1/2023 最后编辑:level42 更新时间:11/1/2023 访问量:41

问:

我试图理解一些东西。我继承了一个旧的 Wordpress 插件,我正在咀嚼将其从 PHP5 -> PHP8 转换。

我遇到了这个检查,它在执行时导致错误:

注意:将静态属性 PropertySearch::$listing_details_template_name 作为非静态属性进行访问

我在网上发现,这可以通过使用而不是访问静态成员来解决。但是,当我将版本传递给 Wordpress 函数时,它会返回 ,而当我 pas 版本时,它会返回 .self$thisselfis_pagefalse$thistrue

当我查看两者的值时,它们包含完全相同的字符串。self::$listing_details_template_name$this->listing_details_template_name

我通过调试注意到的一件事是,在输入函数时,变量在使用 时为 NULL,并且在使用 时包含模板名称,并且由于 NOT NULL ,这会传递函数,并返回 。is_page$page$this->listing_details_template_nameself::$listing_details_template_name$pagefalse

这是我所说的内容的快速演示。

最终,我试图找出为什么会发生这种情况,以及我能做些什么来规避原始错误,以及/或我面临的这个新问题。

is_page():https://wp-kama.com/function/is_page

global $wp_query;

    if (is_page(self::$listing_details_template_name)) {
        echo nl2br ("[DEBUG] - self2 = " . self::$listing_details_template_name . " \r\n");
    }

    if (is_page($this->listing_details_template_name)) {
        echo nl2br ("[DEBUG] - this2 = " . self::$listing_details_template_name . " \r\n");
    }

[编辑] - 目前,我已将其添加到WordPress的文件中。query.php

    if ($page = 'property-search-single-property-details-template.php') {
        $page = NULL;
    }

但是,这只是一个创可贴,所以我可以继续调试。我想要一个不涉及我修改核心 WordPress 文件的解决方案。或者至少,对为什么会发生这种情况有进一步的了解。

php wordpress 这个 自己

评论


答: 暂无答案