¿Cómo agregar campos personalizados a un tipo de publicación personalizada?

13

Ok, así que he registrado algunos tipos de publicaciones personalizadas y algunas taxonomías. Ahora, por mi vida, no puedo averiguar el código que necesito para agregar un campo personalizado a mi tipo de publicación personalizada.

Necesito un menú desplegable y un área de texto de una sola línea. Pero también necesito tener campos separados para los tipos de publicaciones. Entonces, digamos que el tipo de publicación uno tiene 3 campos y el tipo de publicación 2 tiene 4 campos pero los campos son diferentes.

Cualquier consejo ayudaría. He mirado el códice y he encontrado algo, pero no tengo sentido de lo que necesito agregar a mi archivo functions.php

    
pregunta xLRDxREVENGEx 13.05.2011 - 03:59

5 respuestas

15

Probablemente esto sea más complicado de lo que piensas, consideraría el uso de un marco:

Si quieres escribir el tuyo, aquí hay algunos tutoriales decentes:

respondido por el Wyck 13.05.2011 - 05:03
23

Agregue / edite el argumento supports (mientras usa register_post_type ) para incluir custom-fields en la pantalla de edición de su tipo de publicación personalizada:

'supports' => array( 
  'title', 
  'editor', 
  'excerpt', 
  'thumbnail', 
  'custom-fields', 
  'revisions' 
)

Fuente: enlace

    
respondido por el kubante 23.04.2013 - 16:18
6

Aunque debería tener que agregar alguna validación, esta acción no parece ser complicada para la versión actual de WordPress.

Básicamente, necesita dos pasos para agregar un campo personalizado a un tipo de publicación personalizado:

  1. Crea un metabox que contenga tu campo personalizado
  2. Guarda tu campo personalizado en la base de datos

Estos pasos se describen globalmente aquí: enlace

Ejemplo:

Agregue un campo personalizado llamado "función" a un tipo de publicación personalizado llamado "prefix-teammembers".

Primero agrega el metabox:

function prefix_teammembers_metaboxes( ) {
   global $wp_meta_boxes;
   add_meta_box('postfunctiondiv', __('Function'), 'prefix_teammembers_metaboxes_html', 'prefix_teammembers', 'normal', 'high');
}
add_action( 'add_meta_boxes_prefix-teammembers', 'prefix_teammembers_metaboxes' );

Si agrega o edita un "prefix-teammembers", se activa el add_meta_boxes_{custom_post_type} hook. Consulte enlace para conocer la función add_meta_box() . En la llamada anterior de add_meta_box() es prefix_teammembers_metaboxes_html , una devolución de llamada para agregar su campo de formulario:

function prefix_teammembers_metaboxes_html()
{
    global $post;
    $custom = get_post_custom($post->ID);
    $function = isset($custom["function"][0])?$custom["function"][0]:'';
?>
    <label>Function:</label><input name="function" value="<?php echo $function; ?>">
<?php
}

En el segundo paso tienes tu campo personalizado a la base de datos. Al guardar el save_post_{custom_post_type} el gancho se activa (desde v 3.7, vea: enlace ). Puede enganchar esto para guardar su campo personalizado:

function prefix_teammembers_save_post()
{
    if(empty($_POST)) return; //why is prefix_teammembers_save_post triggered by add new? 
    global $post;
    update_post_meta($post->ID, "function", $_POST["function"]);
}   

add_action( 'save_post_prefix-teammembers', 'prefix_teammembers_save_post' );   
    
respondido por el Bass Jobsen 30.01.2014 - 21:46
0

Hay varios complementos para meta cajas personalizadas y campos personalizados. Si te fijas en un complemento que se centra en los desarrolladores, deberías probar con Meta Box . Es ligero y muy potente.

Si está buscando un tutorial sobre cómo escribir código para un meta box / campos personalizados, entonces este es un buen comienzo. Es la primera parte de una serie que podría ayudarlo a refinar el código para que sea más fácil de extender.

    
respondido por el Anh Tran 03.01.2018 - 05:22
-4

// slider_metaboxes_html, función para crear HTML función slider_metaboxes () {    $ wp_meta_boxes globales;    add_meta_box ('postfunctiondiv', __ ('Custom link'), 'slider_metaboxes_html', 'slider', 'normal', 'high'); }

// add_meta_boxes_slider = > add_meta_boxes_ {tipo de publicación personalizada} add_action ('add_meta_boxes_slider', 'slider_metaboxes');

Conocimiento perfecto

    
respondido por el DTIndia 28.10.2017 - 08:11

Lea otras preguntas en las etiquetas