is_child() function

时间:2017-11-14 作者:Valentin

我需要检查一个页面是否是页面的子页面(带有ID)。

我试图让这段代码正常工作,但没有成功。

function is_child($pageID) {
  global $post;
  echo $post->post_parent; // display the right ID!
  if( is_page() && $post->post_parent == $pageID ) {
    return true;
  } else {
    return false;
  }
}
$post->post_parent 返回正确的ID!

测试代码(当$post->$post\\u父项在函数中回显正确的ID时,它始终返回no):

if(is_child(2310)) {
    echo \'yes\';
} else {
    echo \'no\';
}
此函数发生在我的函数中。php文件,其目的是通过条件语句加载CSS(如果页面是X或X的子级,则加载特定的CSS文件)。

该代码可以在附近的许多网站上找到,但是在2012-2013年生成的。

非常感谢您的帮助。

未加工代码的来源:https://bavotasan.com/2011/is_child-conditional-function-for-wordpress/https://www.kevinleary.net/wordpress-is_child-for-advanced-navigation/

2 个回复
最合适的回答,由SO网友:Nathan Johnson 整理而成
/**
 * Return whether the current page is a child of $id
 *
 * Note: this function must be run after the `wp` hook.
 * Otherwise, the WP_Post object is not set up, and
 * is_page() will return false.
 *
 * @param  int  $id The post ID of the parent page
 * @return bool     Whether the current page is a child page of $id
 */
function is_child_of( $id ) {
  return ( is_page() && $id === get_post()->post_parent );
}
SO网友:Valentin

所以我做了这个,它成功了。但@NathanJohnson的回答更好。

function is_child($pageID) {
  $parentID = wp_get_post_parent_id(get_the_ID());
  if( is_page() && $parentID == $pageID ) {
    return true;
  } else {
    return false;
  }
}

结束

相关推荐

Taxonomy filter all children

我有一个自定义分类过滤器,它将过滤选定分类中的所有页面。我希望代码能够选择该分类法中的页面,以及千页的子页面。这是密码。add_action(\'restrict_manage_posts\', \'restrict_manage_posts_section\'); function restrict_manage_posts_section() { global $post_type; if ( is_object_in_taxonomy( $post_t