我创建/修改了一个在 WordPress 页面上显示面包屑的功能。修改后的版本利用#post->post_parent 获取页面的父级,以便获得完整的面包屑路径(主页 > 第 1 页 > 第 2 页 > 第 3 页与主页 > 第 3 页)
代码在页面 (即主页 > 第 1 页 > 第 2 页 > 第 3 页)
上完美执行。但是当我将它放入一个函数中并从 functions.php 页面调用它时,它无法检测该页面是否有一个父级使用 $post->post_parent (即第 3 页与主页 > 第 3 页)
.
这会不会是因为页面上的代码在 the_loop 中执行,但函数不知何故在它之外?
页面代码:
if (!is_home()) {
echo "<ul id='breadcrumb'>";
echo '<li><a href="';
echo get_option('home');
echo '">HOME';
echo "</a></li>";
if (is_category() || is_single()) {
the_category('title_li=');
if (is_single()) {
the_title('<li>', '</li>');
echo "</ul>";
}
} elseif (is_page()) {
if(!$post->post_parent){
//echo "No Parent";
}
else{
echo '<li>'. wp_list_pages('include='.$post->post_parent.'&title_li=' ).'</li>';
}
the_title('<li>', '</li>');
echo "</ul>";
}
}
函数代码:
function the_breadcrumb() {
if (!is_home()) {
echo "<ul id='breadcrumb'>";
echo '<li><a href="';
echo get_option('home');
echo '">HOME';
echo "</a></li>";
if (is_category() || is_single()) {
the_category('title_li=');
if (is_single()) {
the_title('<li>', '</li>');
echo "</ul>";
}
} elseif (is_page()) {
if(!$post->post_parent){
//echo "No Parent";
}
else{
echo '<li>'. wp_list_pages('include='.$post->post_parent.'&title_li=' ).'</li>';
}
the_title('<li>', '</li>');
echo "</ul>";
}
}
}
这段代码本质上没有什么不同,只是它现在被包装在一个函数中。它不显示父页面的事实令人沮丧。我不想在我创建的每个页面模板中都包含此代码。
帮助和建议将不胜感激!
最佳答案
$post
未在您的函数中定义。尝试将 $post 作为函数的参数:
function the_breadcrumb($post) {
关于php - $post->post_parent 在页面上的行为与在 functions.php 中的行为不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7926446/