我有一个问题,我不知道如何处理,代码如下:
<?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包含“目录”,并且每个都在下面。
现在,当我在“ /目录/ site1 /”上时,将显示数据:
[shortcode1]和[shortcode2]
如何防止这种情况?
答案 0 :(得分:0)
您需要更改if / else的顺序,但是为了避免显示未检查条件的简码,您需要对'/catalog/'
进行更严格的检查,以确保后面没有任何内容。您可以使用带有正则表达式的preg_match
进行此操作,该正则表达式检查最后一个/
之后是否没有单词字符:
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();
}