我有一个自定义插件,可以在侧边栏中创建菜单。
我需要能够指定,如果某个特定的自定义帖子类型是当前的,则菜单将显示为它位于特定页面上(这样看起来,自定义帖子实际上是指定页面的子项)
这是我的代码:
global $wp-query;
$thisid = $wp_query->post->ID;
$type = get_post_type( $thisid );
if($type == \'ia_dir\'){
$thisid = \'19\';
}
$thispost = get_post($thisid);
if (!$thispost->post_parent) {
// if top-level, display only the subpages of this top level page
$children = wp_list_pages("title_li=&sort_column=menu_order&child_of=".$thisid."&echo=0&depth=1");
if($children) { // Get post ID to display section title only if this top level page has children
$top_page = $thisid;
}
}else{ // if not, display the siblings of all ancestors and the siblings and children of the current post
$ancestors = get_post_ancestors($thisid);
// now you can get the ID of the top ancestor of this page; wp is putting the ids DESC, thats why the top level ID is the last one, and that\'s why we use "end"
$top_page = end($ancestors);
//initialize pagelist variable to hold list of pages to include
$pagelist = "";
//add the immediate children (no grandchildren) of each page in this page\'s ancestory to the list
foreach ($ancestors as $ancestor) {
$pageset = get_posts(\'numberposts=-1&post_type=page&post_parent=\'.$ancestor);
foreach ($pageset as $apage) {
$pagelist = $pagelist.$apage->ID.",";
}
}
//add any children of the current page to the list
$pageset = get_posts(\'numberposts=-1&post_type=page&post_parent=\'.$thisid);
foreach ($pageset as $apage) {
$pagelist = $pagelist.$apage->ID.",";
}
//get the list of pages, including only those in our page list
$children = wp_list_pages(\'title_li=&echo=0&sort_column=menu_order&include=\'.$pagelist);
}
我遇到的问题是在“后家长”检查的“其他”部分。如果帖子没有指定为“ia\\u dir”帖子类型,那么一切都正常,我可以获取祖先并创建列表。
但是,如果它是“ia\\U dir”post(即,将id手动传递给$thisid,然后再传递给get\\u post\\u祖先),那么我会得到一个空的$祖先数组。我在类型检查中尝试了许多不同的页面ID,但没有任何效果。我甚至可以指定一个页面id,如果我实际访问该页面,我知道该id可以正常工作,但当我转到“ia\\u dir”帖子并手动传递该页面id时,数组为空。
这真的很奇怪。我所做的唯一不同的事情是将特定的手动页面id号传递给$thisid。为什么这不起作用?
编辑:
else语句以任何一种方式运行-我总是得到$祖先数组。如果访问post 19(这是一个页面),我会得到该列表,因为$祖先数组已填充。然而,如果我访问“ia\\u dir”帖子,我会得到一个空的$祖先数组,就像我没有通过“19”来获得帖子祖先一样。
所以我假设我传递了一个错误的值来获取\\u post\\u祖先。但是在仔细研究了WP codex之后,我不明白为什么通过字符串或整数传递post编号对我不起作用。