Seleccionar página

Array supports en Custom Post Types WordPress

por | Nov 2, 2016 | Wordpress

Índice de contenidos

Array supports en Custom Post Types WordPress

Este artículo explica los valores que podemos incluir en el array supports en Custom Post Types.

Para situarnos, primero veremos un código sencillo en el que se crea una entrada personalizada llamada libro y que está explicada con más detalle en otro post de este blog:

Cómo crear entradas personalizadas en WordPress

El código es el siguiente:

add_action('init', 'cpt_libros', 1);

function cpt_libros() {
$labels = array(
'name' => _x('Libros', 'post type general name'),
'singular_name' => _x('Libro', 'post type singular name'),
'add_new' => _x('Añadir Nuevo Libro', 'Libro'),
'add_new_item' => __('Añadir Nuevo Libro'),
'edit_item' => __('Editar Libro'),
'new_item' => __('Nuevo Libro'),
'view_item' => __('Ver Libro'),
'search_items' => __('Buscar Libro'),
'not_found' => __('No se han encontrado Libros'),
'not_found_in_trash' => __('No se han encontrado Libros en la papelera')
);
$args = array(
'labels' => $labels,
'public' => true,
'hierarchical' => false,
'menu_position' => 2,
'has_archive' => true,
'query_var' => true,
'supports' => array('title','editor','thumbnail'),
'rewrite' => array('slug' => 'libro'),
);

register_post_type( 'libro', $args );
}

Custom Post Type libro

Cuando creamos un nuevo tipo de entrada personalizada o custom post types en nuestra web WordPress, insertamos un código en el que definimos un array supports, que hace referencia a las características o elementos que soportará nuestro custom post types. 

supports

'supports' => array('title','editor','thumbnail'),

«supports», es un alias que llama a la función de WordPress add_post_type_support() y que añade las características que soportará el post (título, editor, extracto…). Explicado de otro modo, en este array indicamos que elementos de nuestra nueva entrada personalizada estarán disponibles en la ventana de edición del post dentro del administrador de WordPress.

El array supports es opcional . Cuando creamos una entrada personalizada o custom post type, supports está inicializado por defecto, es decir, aunque no incluyamos en el código el array supports nuestra entrada personalizada dispondrá de sus características mínimas que son título y editor.

Puedes encontrar la función add_post_type_support() y sus valores iniciales en wp-includes/post.php:

//valores iniciales
if ( ! empty( $args->supports ) ) {
add_post_type_support( $post_type, $args->supports );
unset( $args->supports );
} elseif ( false !== $args->supports ) {
// Add default features
add_post_type_support( $post_type, array( 'title', 'editor' ) );
}

Por lo tanto tenemos tres opciones cuando creamos una nueva entrada personalizada o custom post type: (al final del artículo hay disponibles pruebas de código que pueden ayudar a entender mejor estas opciones)

  1. Si queremos que se muestre el título y la edición del post: no añadir supports a nuestro código, en este caso nuestro CPT o nuevo post dispondrá de título y editor ya que está inicializado con estos valores, o añadir supports con sus valores por defecto: 
    'supports' =>array( 'title', 'editor' ),
  2. Si queremos que se muestren más elementos además del título y la edición del post: añadir en el código el array supports con todos los elementos que queremos que soporte nuestro nuevo tipo de entrada (título, editor, imagen, tipo de entrada…). Vemos que en este array incluimos los valores título y editor:
    'supports' =>array('title', 'editor','comments', 'revisions', 'trackbacks', 'author', 
    'excerpt', 'page-attributes','thumbnail', 'custom-fields','post-formats'),
  3. Si en nuestra entrada personalizada no es necesario el título o edición: por ejemplo un nuevo tipo de entradas fotos en la que sólo queremos imagen destacada y tipo de post, entonces el array support sólo se declara con: 
    'supports' =>array('thumbnail','post-formats'),

Valores Array supports

Valores por defecto:

  • ‘title’ : título del post. ($post->post_title)

Array supports en Custom Post Types

  • ‘editor’: ventana de edición de contenido del post.  ($post->post_content)

Array supports en Custom Post Types

Otros valores:

  • ‘author’: autor del post.  ($post->post_author)
  • ‘thumbnail’: imagen destacada, si incluyes esta opción, recuerda comprobar que el tema que estás utilizando en tu WordPress soporta thumbnails, puedes añadir a tu tema esta función si no la tienes activada por defecto. add_theme_support

Array supports en Custom Post Types

  • ‘excerpt’: resumen del post. ($post->post_excerpt)

supports array extracto

  • ‘trackbacks’

Comentarios en post

  • ‘custom-fields’: campos personalizados

Campos personalizados

  • ‘comments’: permite comentarios en nuestra entrada personalizada.

Comentarios en post

  • ‘revisions’: almacenar las revisiones del post.

Revisiones de post

  • ‘page-attributes’: orden del menu, hierarchical a true para ver las opciones de la página padre. Lo podemos incluir en el array sólo si creamos un nuevo tipo de entrada «page»

 

  • ‘post-formats’: añade los tipos de formato del post (estándar, vídeo, audio, cita…)

Post format

Pruebas de código

Prueba 1: array(‘title’,’editor’,’thumbnail’)

'supports' => array('title','editor','thumbnail'),

En la ventana de edición vemos: título, editor e imagen destacada

Array supports en Custom Post Types

Array supports en Custom Post Types

Array supports en Custom Post Types

Prueba 2: sin array, supports desaparece del código

$args = array(
'labels' => $labels,
'public' => true,
'hierarchical' => false,
'menu_position' => 2,
'has_archive' => true,
'query_var' => true,
'rewrite' => array('slug' => 'libro'),
);

En la ventana de edición de nuestra entrada personalizada libro aparecen los valores por defecto de supports que son título y edición y no podemos editar nada más del post.

Array supports en Custom Post Types

Array supports en Custom Post Types

Prueba 3: supports con thumbnail y post format, borrando sus valores por defecto título y edición.

'supports' => array('thumbnail', 'post-formats' ), 

Array supports en Custom Post Types

Post format

Prueba 4: si en la prueba 2 no has conseguido que el título desaparezca prueba a incluir en el array el valor boolean false.

'supports' => array(false, 'thumbnail', 'post-formats' ), 

El resultado es el mismo que en la prueba 3.

 

4 Comentarios

  1. Brandy

    Hola. Tengo un box llamado Page Settings que contiene varias pestañas. Entre ellas una llamada GENERAL, que contiene el diseño de la página; default, full width, sidebar left, sidebar right.

    Quiero que ese box aparezca en mis Custom Post Type para poder indicarle que sean Full Width.

    ¿Cómo hago que aparezca? He entendido todo lo que has explicado, pero no se que nombre poner en el array supports para que «llame» a ese box en particular.

    ¿Qué puedo hacer?

    Responder
    • Lph by Nerea Liébana

      Hola, has incluido en el array ‘custom-fields’?

      Responder
      • Brandy

        Sí, he colocado todas las opciones del support. Todas aparecen excepto la que más me interesa; Page Settings.

        ¿Conoce usted cual es la función que le dice a ese box «aparece en el editor de páginas»?, si la conociera, podría decirle que «aparezca en el editor del CPT».

        Llevo mucho mas de una semana en esto y no se cómo solucionarlo.

        Responder
        • Lph by Nerea Liébana

          Vamos a intentar solucionarlo, revisa esta línea y dime que has puesto:
          ‘capability_type’ =>
          si tienes ‘post’ cambia a ‘page’ es decir
          ‘capability_type’ => ‘page’
          revisa también las opciones arriba a la derecha «opciones de pantalla» que esté marcado todas las opciones que quieras ver en el editor.
          Dime si se soluciona, sino seguimos probando cosas.

          Responder

Enviar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *