使用预定义的父页面创建新页面

时间:2012-03-03 作者:Pekka

我有一个页面结构非常复杂的博客(比如,4级层次结构)。

创建新页面时,从下拉列表中选择父页面非常麻烦,因为它不断增长。

因此,我想在前端管理栏中添加一个按钮,指向post-new.php, 但带有“父页ID”参数。实际上,该按钮将允许您导航到首页上所需的父页面,然后单击此处的“添加新页面”链接,将您带到预选父页面的后端。

然而,似乎不可能将参数添加到post-new.php 和arelated feature request 已在WordPress trac中关闭。

有人知道一个不需要破解核心的解决方案吗?我的一个想法是连接到一个在创建新项目之前触发的挂钩,从那里的GET参数中拉出父页面,并将其设置在项目中。如果这是一种可行的方法,我将非常感谢一个简单的指针,它可以用来钩子。

1 个回复
SO网友:Rarst

您使用GET是正确的,这可能是最容易使用的。

试试这个:

Add_Child_Page::on_load();

class Add_Child_Page {

    static function on_load() {

        add_action( \'init\', array( __CLASS__, \'init\' ) );
        add_action( \'admin_init\', array( __CLASS__, \'admin_init\' ) );
    }

    static function init() {

        add_action( \'admin_bar_menu\', array( __CLASS__, \'admin_bar_menu\' ), 90 );
    }

    static function admin_bar_menu( $wp_admin_bar ) {

        if( is_page() ) {

            $wp_admin_bar->add_node( array(
                \'id\'    => \'add_child_page\',
                \'title\' => \'Add Child Page\',
                \'href\'  => add_query_arg( array( \'post_type\'   => \'page\', \'page_parent\' => get_the_ID() ), admin_url( \'post-new.php\' ) ),
            ) );
        }
    }

    static function admin_init() {

        add_filter( \'page_attributes_dropdown_pages_args\', array( __CLASS__, \'page_attributes_dropdown_pages_args\' ) );
    }

    static function page_attributes_dropdown_pages_args( $dropdown_args ) {

        if ( ! empty($_REQUEST[\'page_parent\']) )
            $dropdown_args[\'selected\'] = (int) $_REQUEST[\'page_parent\'];

        return $dropdown_args;
    }
}

结束

相关推荐

WordPress主题AJAX Have_Posts()

我的目标是通过ajax将blogroll加载到我的主题中。但作为响应,我只能得到0(如果省略die()行,否则会得到一个空白响应)。这是我的代码:js ajax:$.ajax({ url:\"http://domain.com/wp-admin/admin-ajax.php\", type:\'POST\', data:\'action=load_men_blog\', //dataType:\'html\', //cache