首页 > 解决方案 > $_SERVER['REQUEST_URI'] - 重复内容

问题描述

我有个问题不知道怎么处理,代码如下:

<?php 
    if (strstr($_SERVER['REQUEST_URI'], '/catalog/')) {

        echo do_shortcode( '[shortcode1]' );
    } 
    elseif (strstr($_SERVER['REQUEST_URI'], '/catalog/site1/')){
        echo do_shortcode( '[shortcode2]' );
    }

    elseif (strstr($_SERVER['REQUEST_URI'], '/catalog/site2/')){
        echo do_shortcode( '[shortcode3]' );
    }
    else{
        the_content();
    }
?>

现在我想在每个子页面上显示不同的简码 - 但我不能这样做,因为第一个 REQUEST_URI 包含“目录”,并且每个下面也包含。

现在,当我在'/catalog/site1/'上时,会显示数据:

[shortcode1] 和 [shortcode2]

我怎样才能防止这种情况?

标签: phpwordpress

解决方案


您需要更改 if/else 的顺序,但为了避免为您不检查的条件显示简码,您需要执行更严格的检查'/catalog/'以确保其后没有任何内容。您可以preg_match使用正则表达式来检查 final 之后没有单词字符/

if (strpos($_SERVER['REQUEST_URI'], '/catalog/site1/') !== false){
    echo do_shortcode( '[shortcode2]' );
}
elseif (strpos($_SERVER['REQUEST_URI'], '/catalog/site2/') !== false){
    echo do_shortcode( '[shortcode3]' );
}
elseif (preg_match('#/catalog/[^\w]#', $_SERVER['REQUEST_URI'])) {
    echo do_shortcode( '[shortcode1]' );
} 
else{
    the_content();
}

请注意,由于您没有使用结果,因此strstr应该使用strpos它,因为它更快,


推荐阅读