【问题标题】:wordpress is_front_page() is not working (static front page)wordpress is_front_page() 不工作(静态首页)
【发布时间】:2013-09-09 08:19:12
【问题描述】:

我正在为 wordpress 网站使用 WP - Alert 插件。问题是它显示在所有页面上,即使它设置为仅在主页上显示。 (is_home)。但是,我的主页是一个静态主页,所以我将它设置为 is_front_page 并且它仍然显示在所有页面上。如果你能告诉我我是否遗漏了什么??

function wp_alert_add_sticky_alert(){
if(get_option('alert_show_on_site') == 'yes'){
    $display    = true;
    $homeOption = get_option('alert_show_on_home');
    $pageOption = get_option('alert_show_on_page');
    $postOption = get_option('alert_show_on_post');

    $getID = get_the_ID();

    if($homeOption == 'yes' && is_home ()){
      $display =  true ;
    }elseif($pageOption == 'yes' && is_page()){
      $display =  true ;
    }elseif($postOption == 'yes' && is_single()){
      $display =  true ;
    }else{
      $display =  false ;
    }
    if($display){
?>
<div class="sticky-box">
<div class="sticky-inner"><?php echo stripslashes(get_option('wp_alert_message')); ?>    
</div>
</div>
<?php
  }
}
}
?>

我在上面的代码中添加了这一行,但它仍然不会只显示在静态主页上。 } elseif($homeOption == '是' && is_front_page()){ $显示=真; }

提前谢谢大家:)

【问题讨论】:

    标签: php wordpress


    【解决方案1】:

    在当前页面设置$wp_query 对象之前,WordPress 会加载functions.phpis_front_page 是对 $wp_query-&gt;is_front_page() 的包装,如果尚未设置查询,它总是会返回 false。

    有关该主题的更多信息,请参阅此问题:https://wordpress.stackexchange.com/questions/41805/is-front-page-only-works-in-theme-file-and-does-not-work-in-functions-php

    要在您的functions.php 中使用它,您必须将其包装在 $wp_query 对象实例化之后的操作中。

    add_action('wp', function () {
        if (!is_front_page()) {
            add_action('wp_print_styles', function () {
                wp_deregister_style('wpos-slick-style');
                wp_deregister_style('wpsisac-public-style');
            }, 100);
        }
    });
    

    【讨论】:

      【解决方案2】:

      现在是否在您的静态主页中显示?

      试试这个

      function wp_alert_add_sticky_alert(){
      if(get_option('alert_show_on_site') == 'yes'){
          $homeOption = get_option('alert_show_on_home');
          $getID = get_the_ID();
          if($homeOption == 'yes' && is_home ()){
         ?>
      <div class="sticky-box">
      <div class="sticky-inner"><?php echo stripslashes(get_option('wp_alert_message')); ?>    
      </div>
      </div>
      <?php
        }
      }
      }
      ?>
      

      希望这对你有用

      【讨论】:

      • 您好流浪者,谢谢我在此处打开线程之前尝试过,但没有成功。也试过 if($homeOption == 'yes' && is_home || is_front_page()) { $display = true ; },这也不起作用。
      • 有什么帮助吗?非常卡在这里..只需要它显示在静态主页上。
      • 您好流浪者,感谢您的帮助。该功能很好,它显示在静态主页上,但它也显示在网站上的所有页面上。只需要它在静态主页上。还尝试了带有 'is_front_page' 的 Wordpress 条件标签的功能,当我使用它时,它根本不会在网站上显示警报。希望我们在这里没有遗漏任何东西:)
      猜你喜欢
      • 1970-01-01
      • 2016-02-08
      • 1970-01-01
      • 1970-01-01
      • 2015-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多