这是一个典型的代码缩进失败,导致混淆问题。
如果我们正确地重新格式化您的代码,我们会看到:
function the_breadcrumb() {
if (!is_home()) {
echo "Start » ";
echo \'<a href="\';
echo get_option(\'home\');
echo \'">\';
bloginfo(\'name\');
echo "</a> » ";
if (is_category() || is_single() ) {
the_category(\'title_li=\');
if (is_single()) {
echo " » ";
the_title();
}
} elseif (is_page()) {
echo the_title();
} elseif (is_single() && $post_type == \'partners\') {
echo "IS THIS WORKING?";
}
} elseif (is_home()) {
echo "Start » "; bloginfo(\'name\');
}
}
现在我们可以适当地遵循它。正在发生的是它正在进入
is_category || is_single()
if语句,并首先执行该部分。因为if语句成功了,所以它以后永远不会到达您的支票。
但是,即使有,还有第二个问题,你正在检查$post_type
, 但这是从哪里来的?没有任何地方将其声明为全局或指定值,它是从稀薄的空气中提取出来的。
因此,我的选择是:
function the_breadcrumb() {
if (is_home()) {
echo "Start » ";
bloginfo(\'name\');
return;
}
echo "Start » ";
echo \'<a href="\'.home_url().\'">\';
bloginfo(\'name\');
echo "</a> » ";
// Check each case starting with the most specific down to the most generic
global $post;
$post_type = \'\';
if ( !empty( $post) {
$post_type = $post->post_type;
}
if ( is_single() && $post_type == \'partners\' ) {
echo "IS THIS WORKING?";
} elseif ( is_page() ) {
echo the_title();
} else if (is_category() || is_single() ) {
the_category(\'title_li=\');
if (is_single()) {
echo " » ";
the_title();
}
}
}
在这里,我使用了全局post对象来解决缺少
$post_type
变量进行比较。我还将if语句从最具体到最通用进行了重新排序。最后我在
is_home
调用并将其放在顶部并返回,这样我们就不会嵌套太多的代码,它变得更可读,并且是一个很好的注释。我还使用
home_url
而不是
get_option(\'home\')
综上所述:
始终正确缩进。You have no excuses for not doing it, 大多数编辑器都会为您这样做。如果你的没有,那么去获取Sublimitext或其他IDE,比如Komodo或PHPStorm自上而下地阅读代码,并在头脑中遵循它。这并不难,像这样的错误很快就会变得很明显。这样做也会变得容易得多,最终你根本不需要考虑它,它会自动发生在html中,始终使用entitycode,否则你的html将无法验证