【问题标题】:How to load a block of code conditionally using PHP?如何使用 PHP 有条件地加载代码块?
【发布时间】:2011-01-15 05:05:44
【问题描述】:

我有一个单独安装的 Wordpress,它支持两个域名。简而言之,站点 A 有四个静态页面,站点 B 有四个静态页面,但它们都共享一个共同的博客文章页面。

站点 A 的顶部应该有一个指向其他站点 A 页面的导航栏,站点 B 应该有一个指向其他站点 B 页面的导航栏。

由于他们(必然)共享一个共同的 WordPress 主题,我想在 header.php 文件中为一个代码块放置一个 PHP if 语句,该代码块是站点 A 导航,另一个是站点 B 导航。但我不确定实际检查什么条件。有什么方法可以让一些页面在 PHP 中识别为属于站点 A,而其他页面属于站点 B?

【问题讨论】:

    标签: php wordpress if-statement blogs


    【解决方案1】:

    您可以在标头调用之前在两个站点中设置变量,然后使用 if 语句来显示正确的导航。

    网站 A

    <?
    $site = 'A';
    require('header.php');
    ?>
    

    header.php

    <?
    if($site == 'A') {
      //Site A nav
    } else {
      //Site B nav
    }
    ?>
    

    但是,如果您的两个站点具有不同的域名,您可以查看 $_SERVER 全局并直接在您的 header.php 中关闭它。

    【讨论】:

    • 这种方法增加了标题和包含它的页面之间的耦合,但不幸的是,这是我所知道的唯一 100% 可靠的方法。按照其他人的建议检查 $_SERVER 中的变量可能会充满问题,更糟糕的是,所述问题可能不会立即显现。
    • 谢谢迈克尔。如果是这种情况,那么安装 Wordpress 的位置是否重要?现在它恰好位于站点 A 的根文件夹中。我正在考虑通过.htaccess 简单地重定向站点 B 的访问者,但总体而言有更好的策略吗?
    • 如果您要设置变量,则安装位置无关紧要。至于战略,真正重要的是你的最终目标是什么。
    【解决方案2】:

    如果这两个网站的域名不同,您可以通过以下方式进行验证:

    if($_SERVER['HTTP_HOST']=="sitea.com"){
       //code for site a
    } else {
       //code for site b
    }
    

    【讨论】:

    • 如果是这样,安装 Wordpress 的位置是否重要?现在它恰好位于站点 A 的根文件夹中。我正在考虑通过 .htaccess 简单地重定向站点 B 的访问者。
    【解决方案3】:
    if ($_SERVER['SERVER_NAME']=="www.whatever.com") {
    //show site a header
    } 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-17
      • 1970-01-01
      • 2014-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-24
      • 1970-01-01
      相关资源
      最近更新 更多