编程语言
首页 > 编程语言> > $post-> post_parent在页面上的行为与在functions.php中不同

$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