繁体   English   中英

如何通过更改“首页”设置来强制主页重定向并禁用 Wordpress 站点上的主 header?

[英]How do I force home redirects and disable main header on a Wordpress site, by just changing the “Front page” settings?

我想要一个名为“placeholder-home”的空白页面,其中包含“/placeholder-home”,当设置为首页时(在 WP 阅读设置中),将 header 更改为基本内容并强制子页面重定向到主页.

为此,我使用 slug“placeholder-home”创建了一个空白页面。 以下方法比较了 header.php 和 functions.php 文件中的首页 ID 和“placeholder-home”的 ID。 如果匹配,则进行更改。

在 header.php 中,启用菜单更改:

<header>
       <?php
    //Gets the placeholder page's pagename
    $placeholderpage_slug = get_page_by_path( 'placeholder-home' );
    //then gets the ID from the placeholder's pagename
    $placeholderpage_id = $placeholderpage_slug->ID;
    
    //Gets the ID of the current front page
    $frontpage_id = get_option('page_on_front');
    
    if ( $frontpage_id == $placeholderpage_id ): ?>
            <!-- Nav for site under development -->
      <nav class="dev_site_nav">
    
         <div>
    <h3>Website under development</h3><p>Please check back later</p>
    </div>
    
    </nav>
    
      <?php else: ?>
           <!-- Nav for normal site -->
      <nav class="main_site_nav">
<!-- the content of your main navigation -->
    </nav>
            <?php endif; ?>
    </header>

在 functions.php 中,强制重定向到主页:

//Redirects when 'placeholder-home' is set as front page
add_action( 'template_redirect', 'redirect_to_homepage' );

function redirect_to_homepage() {
        $placeholderp_slug = get_page_by_path( 'placeholder-home' );
    $placeholderp_id = $placeholderp_slug->ID;
    $homep_id = get_option('page_on_front');
    
    if ( ! is_page( $homep_id ) && $homep_id == $placeholderp_id ) {                                                                                
         wp_redirect( home_url( 'index.php?page_id=' . $placeholderp_id ) ); 
    }
    exit();
}

可能有一个更优雅的解决方案,所以我欢迎评论。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM