没有将正确的值传递给GET_POST_ACHERSORS?

时间:2012-04-06 作者:jfacemyer

我有一个自定义插件,可以在侧边栏中创建菜单。

我需要能够指定,如果某个特定的自定义帖子类型是当前的,则菜单将显示为它位于特定页面上(这样看起来,自定义帖子实际上是指定页面的子项)

这是我的代码:

            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编号对我不起作用。

1 个回复
SO网友:developdaly

EDIT

$thisid 可以作为数组传递,如get_post_anscestors().

所以试试看$ancestors = get_post_ancestors( array( $thisid ) );

我误读了;它确实接受字符串,但可能给数组一次机会。

结束

相关推荐

hooks & filters and variables

我是updating the codex page example for action hooks, 在游戏中完成一些可重用的功能(最初是针对这里的一些Q@WA)。但后来我遇到了一个以前没有意识到的问题:在挂接到一个函数以修改变量的输出后,我再也无法决定是要回显输出还是只返回它。The Problem: 我可以修改传递给do_action 用回调函数钩住。使用变量修改/添加的所有内容仅在回调函数中可用,但在do_action 在原始函数内部调用。很高兴:我将其修改为一个工作示例,因此您可以将其复制/粘贴