wordpress判断是否首页的if(is_home())不起作用?(转)

本文讨论了如何在WordPress中使用is_home()和is_front_page()函数判断首页,并解决在多站点开发中遇到的问题。重点介绍了在指定页作为首页时如何确保正确判断首页,以及如何在使用query_posts()时避免is_home()失效的方法。
利用is_home()判断是否为首页,如果不起作用,大致有如下两个常见原因:
第一种:
  当你的首页不是默认的index.php的时候,而是在后台指定了一个page页面。这种情况下is_home()会失效,也就是说这样子的情况下就不能再用is_home()来判断。
  is_front_page()是判断当前页是不是指定的首页,我们在上面描述的情况下需要的就是这个函数。
<?php if (is_home() || is_front_page()) { ?>
我只会在首页显示
<?php } ?>
  ps:我在使用多站点wordpress进行二次开发时,需要所有的站点均指定一个page作为首页来显示;而且,该page作为首页显示时,页头还要显示一个banner图片。这就需要对所有theme主题的page.php文件内使用上述代码以判断是否首页。
第二种:
  如果is_home()之前有个 query_posts(),则会让它本身判断失效。原因是 is_home() 函数在首页的时候会返回一个 true 来判断,而 query_posts()会阻断这一判断。
  解决方案是在 is_home()之前加一个 wp_reset_query()。
<?php wp_reset_query(); if ( is_home() ) { ?>
我只会在首页显示
<?php } ?>
<?php if ( ! defined( 'ABSPATH' ) ) exit; ?> <!DOCTYPE html> <html <?php language_attributes(); ?> <?php SWELL_Theme::root_attrs(); ?>> <head> <meta charset="utf-8"> <meta name="format-detection" content="telephone=no"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, viewport-fit=cover"> <?php wp_head(); $SETTING = SWELL_Theme::get_setting(); // SETTING取得 ?> <meta itemprop="name" content="你的页面标题"> <meta itemprop="description" content="页面描述,建议不超过40字"> <meta itemprop="image" content="https://example.com/thumb.jpg"> </head> <body> <?php if ( function_exists( 'wp_body_open' ) ) wp_body_open(); ?> <div id="body_wrap" <?php body_class(); ?> <?php SWELL_Theme::body_attrs(); ?>> <?php // SPメニュー $cache_key = $SETTING['cache_spmenu'] ? 'spmenu' : ''; SWELL_Theme::get_parts( 'parts/header/sp_menu', null, $cache_key ); // ヘッダー $cache_key = ''; if ( $SETTING['cache_header'] ) { $cache_key = ( SWELL_Theme::is_top() && ! is_paged() ) ? 'header_top' : 'header_notop'; } SWELL_Theme::get_parts( 'parts/header/header_contents', null, $cache_key ); // Barba用 wrapper if ( SWELL_Theme::is_use( 'pjax' ) ) { echo '<div data-barba="container" data-barba-namespace="home">'; } // メインビジュアル if ( SWELL_Theme::is_use( 'mv' ) ) { $cache_key = $SETTING['cache_top'] ? 'mv' : ''; SWELL_Theme::get_parts( 'parts/top/main_visual', null, $cache_key ); } // MV下通知バー // if ( 1 ) { // $cache_key = $SETTING['cache_top'] ? 'mv_info' : ''; // SWELL_Theme::get_parts( 'parts/top/mv_info', null, $cache_key ); // } // 記事スライダー if ( SWELL_Theme::is_use( 'post_slider' ) ) { $cache_key = $SETTING['cache_top'] ? 'post_slider' : ''; SWELL_Theme::get_parts( 'parts/top/post_slider', null, $cache_key ); } // タイトル(コンテンツ上) if ( SWELL_Theme::is_show_ttltop() ) SWELL_Theme::get_parts( 'parts/top_title_area' ); // ぱんくず if ( 'top' === $SETTING['pos_breadcrumb'] ) SWELL_Theme::get_parts( 'parts/breadcrumb' ); ?> <div id="content" class="l-content l-container" <?php SWELL_Theme::content_attrs(); ?>> <?php // ピックアップバナー if ( SWELL_Theme::is_show_pickup_banner() ) { $cache_key = $SETTING['cache_top'] ? 'pickup_banner' : ''; SWELL_Theme::get_parts( 'parts/top/pickup_banner', null, $cache_key ); }
最新发布
10-09
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值