$post-> post_parent在页面上的行为与在functions.php中不同
作者:互联网
我创建/修改了一个功能,以在WordPress的页面上显示面包屑.修改后的版本使用#post-> post_parent来获取页面的父级,以便获得完整的痕迹(首页>第1页>第2页>第3页vs.主页&第3页)
该代码可以在页面上完美执行(例如,首页>页面1>页面2>页面3).但是,当我将其放入函数中并从functions.php页面调用它时,它无法使用$post-> post_parent(即第3页vs.home>第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 ist.尝试给$post作为函数的参数:
function the_breadcrumb($post) {
标签:breadcrumbs,parent,wordpress,php 来源: https://codeday.me/bug/20191202/2086366.html