我创建/修改了一个函数来在WordPress的页面上显示面包屑。修改后的版本使用#post-&gt; post_parent来获取页面的父级,以便拥有完整的痕迹路径(主页&gt;第1页&gt;第2页&gt;第3页主页&gt;第3页)< / p>
代码在页面(ie. home > page 1 > page 2 > page 3)
上完美执行。但是当我将它放入一个函数并从functions.php页面调用它时,它无法使用$ post-&gt; post_parent (ie. page 3 vs. home > page 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>";
}
}
}
这段代码没有任何本质上的不同,除了它现在包装在一个函数中。它不显示父页面这一事实令人沮丧。我不想在我创建的每个页面模板上都包含此代码。
帮助&amp;建议将不胜感激!
答案 0 :(得分:2)
$post
未在您的函数中定义。尝试将$ post作为参数提供给函数:
function the_breadcrumb($post) {
答案 1 :(得分:1)
或者,定义
global $post;
位于函数顶部。
function fname()
{
global $post;
code...
}