Creando una nueva página con una página principal predefinida

2

Tengo un blog con una estructura de página muy compleja (como 4 niveles de jerarquía).

Al crear nuevas páginas, es muy engorroso elegir la página principal de la lista desplegable, ya que está en constante crecimiento.

Por ese motivo, me gustaría agregar un botón a la barra de administración del frontend que apunta a post-new.php , pero con un parámetro de "ID de página principal". Efectivamente, el botón le permitiría navegar a la página principal deseada en la página principal, y luego hacer clic en el enlace "Agregar nueva página aquí" que lo lleva al final con la página principal preseleccionada.

Sin embargo, parece que es imposible agregar parámetros a post-new.php y a una solicitud de funciones relacionadas se ha cerrado en WordPress trac.

¿Alguien sabe una solución que no requiera hackear el núcleo? Una idea que tuve fue engancharme a un gancho que se activa antes de que se cree un nuevo elemento, extrayendo la página principal de un parámetro GET allí y configurándolo en el elemento a ser. Si esa es una forma viable, agradecería un simple puntero que enganche utilizar.

    
pregunta Pekka 웃 03.03.2012 - 18:16

1 respuesta

8

Tienes razón con GET, que probablemente sería más fácil de usar.

Prueba esto:

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;
    }
}
    
respondido por el Rarst 18.03.2012 - 15:11

Lea otras preguntas en las etiquetas