¿cómo tener solo una publicación de tipo de publicación personalizada?

2

¿Es posible limitar un CPT a solo uno? Lo que me gustaría lograr es crear un CPT llamado "Inicio". Gestionará todos y cada uno de los elementos en la página de inicio. Quiero programarlo para que cuando el usuario haga clic en el enlace "Administrar página de inicio" vaya directamente a la pantalla de edición de publicaciones. Saltarán sobre la pantalla "Todas las publicaciones". ¿Alguien piensa que esto es posible?

¿O tal vez alguien tiene una idea para lograr este objetivo de manera completamente diferente?

    
pregunta Steve Fischer 19.08.2011 - 14:17

5 respuestas

4

Sugeriría crear una página de Opciones de tema para este propósito.

enlace

add_options_page () en Codex.

¿O hay algo especial en la pantalla de edición de publicaciones que desea utilizar que sería difícil acceder a la página de Opciones de tema?

    
respondido por el Michal Mau 19.08.2011 - 14:48
1

Deseas esto porque tu cliente está confundido, y configurar una página a la página de inicio no será suficiente.

Pero tu solución es una lata de gusanos que esperan explotar en tu cara, así que en lugar de eso, ¡tengo una solución mucho mejor!

Usa la plantilla home.php

En WordPress por defecto home.php se utiliza como página de inicio. Si no se encuentra, se usa front-page.php, y si no se encuentra, usa index.php

Así que crea home.php, coloca el código de tu página de inicio allí, y luego agrega una página de configuración con editores WYSIWYG y cargadores de imágenes para las diversas piezas de contenido. Incluso puede enlazar directamente a la página de configuración desde la interfaz si está conectado al sitio.

Si su cliente todavía está confundido, use pasos de pantalla para mostrarles cómo. Es probable que su cliente solo esté confundido porque no ha invertido tiempo para leer las instrucciones o resolverlo.

La ventaja añadida de esto es que no deja pasos confusos, como hacer clic en los listados y encontrar una sola publicación disponible, y un botón 'Agregar nueva página de inicio' que no hace más que generar advertencias y mensajes de permiso denegado.

    
respondido por el Tom J Nowell 05.04.2012 - 20:25
0

Puede ser que este complemento te pueda ayudar:

sitio del autor

complemento de WordPress

    
respondido por el paulo 19.08.2011 - 14:42
0

Steve, mi entendimiento es que quieres:

  1. un tipo de publicación personalizada sin submenú de todas las publicaciones
  2. ¿solo desea que el enlace 'Editar página de inicio' aparezca en el submenú de Publicaciones?
  3. Y no desea que sus usuarios agreguen más de 1 publicación para ese tipo de publicación en particular.

El siguiente código modificará al administrador de WordPress para que haga lo anterior:

Los usuarios de la nota aún pueden agregar la publicación al tipo de publicación personalizada usando wp_insert_post

<?php
/**
 * Plugin Name: Home Page CPT
 **/

class WPSE_26330_Homepage_CPT {

    function __construct() {

        // add the default homepage on plugin activation
        register_activation_hook( __FILE__, array( &$this, 'add_home_page_post' ) );

        // register the homepage post type
        add_action( 'init', array( &$this, 'register_homepage_cpt' ) );

        // add the menu link
        add_action( 'admin_menu', array( &$this, 'edit_homepage_link' ) );
    }

    function edit_homepage_link() {
        global $submenu, $pagenow;

        // query the homepage posts
        $homepage = new WP_Query( 'post_type=homepage' );

        // if its new post page and we have homepage
        if ( $pagenow == 'post-new.php' && $homepage->have_posts() ) {
            wp_die('You cant add more then one homepage');
        }

        // if we have homepage post, show the edit link else the add homepage link
        if ( $homepage->have_posts() ) {
            $homepage->the_post();
            $link = get_edit_post_link( get_the_ID(), 'return' );
            $title = 'Edit Home Page';
        } else {
            // in case if the user has deleted the default post
            $link = get_bloginfo( 'url' ). '/wp-admin/post-new.php?post_type=homepage';
            $title = 'Add Home Page';
        }
        $submenu['edit.php'] = array( array( $title, 'manage_options', $link ) ) + $submenu['edit.php'];
    }

    function register_homepage_cpt() {
        $args = array( 
            'label' => 'homepage',
            'description' => 'Home Page post type',
            'public' => true,
            'show_in_menu' => false
        );
        register_post_type( 'homepage', $args );
    }

    function add_home_page_post() {
        // on activation first regsiter the post type
        $this->register_homepage_cpt();

        // add the first and only post
        $post_data = array(
            'post_title' => 'Home Page',
            'post_type' => 'homepage',
            'post_statue' => 'publish',
            'post_author' => 1
        );
        wp_insert_post( $post_data );
    }

}

$GLOBALS['wpse_homepage_cpt'] = new WPSE_26330_Homepage_CPT;
?>
    
respondido por el Hameedullah Khan 02.01.2012 - 17:59
0

En realidad he hecho algo muy similar a esto. Utilicé algunas cosas diferentes en conjunto, y todo funcionó muy bien para mi cliente (fácilmente confundido).

Básicamente, comencé con una página llamada "home". Luego, utilizando Campos personalizados avanzados , creé los diversos campos que quería que el cliente pudiera controlar. - dos campos WYSIWYG, varios campos de imagen, algunos campos de enlace, se entiende la idea. Luego, cuando configuré las reglas para ese tipo de ACF, oculté el área principal de 'contenido' en la página de edición. Me aseguré de agregar reglas claras y concisas para cada área de contenido para evitar confusiones, para que supieran exactamente lo que podían y no podían hacer en cada campo.

Entonces, cuando el cliente hace clic en "editar página" en el menú de WordPress, se les presenta la página "Editar publicación" para "Inicio", con todas las áreas que controlan dispuestas claramente.

Luego, configuré la plantilla home.php para llamar a la salida de campo en los lugares apropiados. Hay varios buenos tutoriales y fragmentos de código en el sitio principal de ACF.

Se convirtió en un cliente MUY feliz, y eliminó muchas frustraciones futuras del mantenimiento.

    
respondido por el SickHippie 05.06.2012 - 23:57

Lea otras preguntas en las etiquetas