插件内容仅在首页。没有别的地方了

时间:2017-07-25 作者:Livi17

使用我正在开发的插件,我试图在网站首页的标题后放置一些内容。

在我的插件PHP文件中,我有以下内容(为了节省空间,我删去了html内容):

add_action( \'__after_header\' , \'add_promotional_text\', 4 );
function add_promotional_text() {
    // If we\'re on the home page, do something
    if ( ! is_admin() ) {
        if ( is_front_page() && is_home() ){

            return;


            //HTML goes here
        }
    }
}

do_action ( \'__after_header\' );
这几乎达到了我想要的效果。内容未显示在管理区域中。。。它确实出现在头版,就像它应该。。。然而,它也会出现在每个页面或帖子上,这是不应该发生的。

它最好只出现在头版上,而不出现在任何其他正面页面上。

我不知道该怎么做。

编辑:

我将插件代码简化为:

if ( is_front_page() && is_home() ){
    echo "<script>console.log( \'Debug Objects: is_front_page() && Home()\' );</script>";
} else {
    echo "<script>console.log( \'Debug Objects: ! is_front_page() && Home()\' );</script>";
}
无论在“设置”>“读取”中如何设置,这个if条件永远不会为真。无论我在网站的哪个位置导航,无论是前端还是管理区域,它都是错误的。

Settings > Reading:enter image description here

Front Page with console output:enter image description here

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

打开WP\\U调试后,

define(\'WP_DEBUG\', true);
我收到错误:Conditional query tags do not work before the query is run. Before then, they always return false.

在Google上搜索该错误后,我找到了一个有效的解决方案:

add_action( \'template_redirect\', \'check_for_frontpage\' );

function check_for_frontpage() {
    if ( is_front_page() || is_home() ) {
        echo "<script>console.log( \'Debug Objects: is_front_page() && Home()\' );</script>";
    } else {
        echo "<script>console.log( \'Debug Objects: ! is_front_page() && Home()\' );</script>";
    }
}

SO网友:Rick Hellewell

此代码似乎错误。如果首页或主页为真,则您的版本正在返回。将该部分更改为:

if ( is_front_page() && is_home() ){
    // output the content because frontpage/home is true
   } else
    {
      // output content for any not frontpage/home
    }
添加每个条件所需的任何代码

SO网友:Cesar Henrique Damascena

所以在docsis_homeis_front_page, 可以根据页面返回不同的值。以下是一些示例:

如果\'posts\' == get_option( \'show_on_front\' ):

网站首页:

  • is_front_page() 将返回trueis_home() 如果指定,WordPress将忽略指定用于显示网站首页或博客文章索引的页面

    如果\'page\' == get_option( \'show_on_front\' ):

    在指定用于显示网站首页的页面上:

    • is_front_page() 将返回trueis_home() 将在指定用于显示博客帖子索引的页面上返回false:

      • is_front_page() 将返回falseis_home() 将返回true,因此如果您将静态页面设置为显示在站点前面home_url 将返回false。如果将代码更改为:

        if ( is_front_page() && is_page(\'home\') ){
          // output the content because frontpage/home is true
        } 
        else {
         // output content for any not frontpage/home
        }
        
        在哪里\'home\' 是您标记要显示在前面的页面的slug,将起作用。

结束

相关推荐

FrontPage管理栏消失

我在一个多站点网络上。最近,我的frontpage管理栏消失了,但仍在后端显示。我禁用了所有插件,将主题也更改为210和212,但没有成功。但当我将插件文件夹的名称更改为其他名称时,它开始显示,但当我在不更改插件文件夹名称的情况下停用所有插件时,它不会显示。我认为网络禁用所有插件和/或更改插件文件夹名称是同一回事,所以它应该通过两种方式工作。但管理栏只显示当我将插件文件夹名称更改为其他名称时,而不是通过禁用网络范围内的所有插件。请尽快帮助。