php - $post->post_parent 在页面上的行为与在 functions.php 中的行为不同

标签 php wordpress parent breadcrumbs

我创建/修改了一个在 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/

相关文章:

javascript - Javascript中相互关联的动态多维数组?

php - XAMPP V3.2.1 -MySQL 抛出错误

php - PDO 查询不起作用

php - 替换 WooCommerce PayPal 结帐网关插件结帐页面上的图标

mysql - SQL 将两个选择合并为一个

CSS 选择具有特定子元素的元素的兄弟?

php - 建立与CakePHP数据库的连接时出错

php - 如何部署 React/Laravel 项目?

php - 如何优化完全缓存的 WordPress 站点的 SQL 设置

javascript - 访问 IFrame 的父 URL