Programación

Foro WordPress » WordPress » Programación

Creación automática de páginas al activar theme (5 mensajes)

Acerca de este hilo

Tags

  1. fliberty

    5.0
    Antiguedad: Oct 2009
    Mensajes: 1.511

    offline

    Publicado hace 5 meses
    #

    Hola a todos, vengo desarrollando o mejor dicho haciendo modificaciones al 99% a un theme ya conocido, y una de las opciones de este nuevo proyecto es que los usuario tenga la posibilidad de crear su propio blog, y el theme por defecto será el que vengo modificando; sin embargo hay secciones del theme que necesitan la creación de páginas personalizadas para poder funcionar correctamente.
    El código que funciona perfectamente para la creación de páginas al activar el theme, es el siguiente:

    //Creacion de Pagina
    if (isset($_GET['activated']) && is_admin()){

        $new_page_title = 'Mi Escritorio';
        $new_page_content = '';
        $new_page_template = 'dashboard.php'; //ex. template-custom.php. Leave blank if you don't want a custom page template.

        //don't change the code bellow, unless you know what you're doing

        $page_check = get_page_by_title($new_page_title);
        $new_page = array(
            'post_type' = > 'page',
            'post_title' = > $new_page_title,
            'post_content' = > $new_page_content,
            'post_status' = > 'publish',
            'post_author' = > 1,
        );
        if(!isset($page_check- >ID)){
            $new_page_id = wp_insert_post($new_page);
            if(!empty($new_page_template)){
                update_post_meta($new_page_id, '_wp_page_template', $new_page_template);
            }
        }

    }

    Como verán la función implementa las variables necesarias para crear la página especificando título, contenido y plantilla personalizada, sin embargo no especifica la personalización del slug. En el caso de esta página necesito que se llame digamos "Mi escritorio" y que su slug sea "escritorio" sin embargo no he encontrado lo necesario para poder implementarlo, espero que me puedan ayudar.

    Visítenme:
    http://www.contigoperu.com.pe (hosting/dominios) | http://www.pachakamaq.com (temática variada) | http://www.mipycs.com (image hosting gratuito) | http://www.contigoperusemanario.org(noticias) | http://www.contigoperuclasificados.com (clasificados gratis) | http://www.cyberdocentes.com (recursos educativos)
  2. jordi_sotastudi

    1.0
    Antiguedad: Feb 2011
    Mensajes: 3

    offline

    Publicado hace 5 meses
    #

    Yo me encuentro en una situación similar, me gustaría saber si es posible hacer una intranet con wordpress.

    Es decir que cada usuario tuviera una página personal donde poder descargar material que el administrador haya colocado en la página privada de cada usuario.

    Gracias de antemano.

  3. almendron

    5.0
    Antiguedad: Feb 2010
    Mensajes: 1.101

    offline

    Publicado hace 5 meses
    #

    Echa un vistazo a

    http://wp-snippets.com/949/create-a-new-page/

    Es otra forma distinta de crear una nueva página y usa el slug.

  4. fliberty

    5.0
    Antiguedad: Oct 2009
    Mensajes: 1.511

    offline

    Publicado hace 5 meses
    #

    Gracias almendron voy a revisar, por que estuve revisando la ejecución dl código y parece que ni siquiera personaliza o toma la plantilla personalizada que se indica.

    Visítenme:
    http://www.contigoperu.com.pe (hosting/dominios) | http://www.pachakamaq.com (temática variada) | http://www.mipycs.com (image hosting gratuito) | http://www.contigoperusemanario.org(noticias) | http://www.contigoperuclasificados.com (clasificados gratis) | http://www.cyberdocentes.com (recursos educativos)
  5. fliberty

    5.0
    Antiguedad: Oct 2009
    Mensajes: 1.511

    offline

    Publicado hace 5 meses
    #

    Bueno buscando y realizando mis propios experimentos he logrado realizar una función que me permite realizar lo que deseo:

    //Add pages on activation theme
    global $wpdb;

    $dashboard_check = get_page_by_title('Mi Escritorio');
    $dashboard_check_id = $dashboard_check- >ID;
    //Dashboard
    $dashboard_page = array(
        'post_type' = > 'page',
        'post_name' = > 'escritorio',
        'post_title' = > 'Mi Escritorio',
        'post_status' = > 'publish',
        'post_author' = > 1,
    );

    if(!isset($dashboard_check_id)){
        wp_insert_post($dashboard_page);
        $dashboard_page_data = get_page_by_title('Mi Escritorio');
        $dashboard_page_id = $dashboard_page_data- >ID;
        update_post_meta($dashboard_page_id, '_wp_page_template','dashboard.php');
    }

    La función mostrada crea la página "Mi escritorio" con slug "escritorio" y utiliza como template o plantilla personalizada "dashboard.php"; ahora la misma función se puede utilizar para crear más de una página, sin embargo se deben cambiar algunas variables más:

    //Add pages on activation theme
    global $wpdb;

    $dashboard_check = get_page_by_title('Mi Escritorio');
    $author_check = get_page_by_title('Perfil de Autor');
    $dashboard_check_id = $dashboard_check- >ID;
    $author_check_id = $author_check- >ID;
    //Dashboard
    $dashboard_page = array(
        'post_type' = > 'page',
        'post_name' = > 'escritorio',
        'post_title' = > 'Mi Escritorio',
        'post_status' = > 'publish',
        'post_author' = > 1,
    );
    //Author
    $author_page = array(
        'post_type' = > 'page',
        'post_name' = > 'author',
        'post_title' = > 'Perfil de Autor',
        'post_status' = > 'publish',
        'post_author' = > 1,
    );

    if(!isset($dashboard_check_id)){
        wp_insert_post($dashboard_page);
        $dashboard_page_data = get_page_by_title('Mi Escritorio');
        $dashboard_page_id = $dashboard_page_data- >ID;
        update_post_meta($dashboard_page_id, '_wp_page_template','dashboard.php');
    }
    if(!isset($author_check_id)){
        wp_insert_post($author_page);
        $author_page_data = get_page_by_title('Perfil de Autor');
        $author_page_id = $author_page_data- >ID;
        update_post_meta($author_page_id, '_wp_page_template','author.php');
    }

    Con esto se logran crear dos páginas: Mi Escritorio y Perfil de Author. Las funciones realizan lo que deseo, sin embargo faltan pulir, ya que me gustaría que antes de crear las páginas busque si las páginas existen o no, y las cree si y solo si estas no existen.

    Se puede agregar contenido predeterminado agregando la variable 'post_content' => 'Aqui el contenido'.

    Visítenme:
    http://www.contigoperu.com.pe (hosting/dominios) | http://www.pachakamaq.com (temática variada) | http://www.mipycs.com (image hosting gratuito) | http://www.contigoperusemanario.org(noticias) | http://www.contigoperuclasificados.com (clasificados gratis) | http://www.cyberdocentes.com (recursos educativos)

Responder

Debes Identificarte para publicar.

Foro WordPress » WordPress » Programación