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

在WordPress中创建/修改面包屑导航功能时遇到问题。当面包屑代码直接在页面中运行时,能够正确显示父页面,但在将代码封装到函数并在functions.php中调用时,$post->post_parent无法检测到页面的父级。问题可能是由于函数内部没有正确的上下文。解决方案是将$post作为参数传递给函数。
摘要由CSDN通过智能技术生成

我创建/修改了一个功能,以在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 "

echo '

HOME';

echo "

";

if (is_category() || is_single()) {

the_category('title_li=');

if (is_single()) {

the_title('

', '');

echo "

";

}

} elseif (is_page()) {

if(!$post->post_parent){

//echo "No Parent";

}

else{

echo '

'. wp_list_pages('include='.$post->post_parent.'&title_li=' ).'';

}

the_title('

', '');

echo "";

}

}

功能码:

function the_breadcrumb() {

if (!is_home()) {

echo "

  • ";

echo '

HOME';

echo "

";

if (is_category() || is_single()) {

the_category('title_li=');

if (is_single()) {

the_title('

', '');

echo "

";

}

} elseif (is_page()) {

if(!$post->post_parent){

//echo "No Parent";

}

else{

echo '

'. wp_list_pages('include='.$post->post_parent.'&title_li=' ).'';

}

the_title('

', '');

echo "";

}

}

}

除了现在包装在函数中之外,此代码没有内在的区别.它不显示父页面的事实令人沮丧.我不想在我创建的每个页面模板中都包含此代码.

帮助与建议将不胜感激!

解决方法:

您的函数中未定义$post ist.尝试给$post作为函数的参数:

function the_breadcrumb($post) {

标签:breadcrumbs,parent,wordpress,php

来源: https://codeday.me/bug/20191202/2086366.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值