it-swarm-es.com

Hacer campos personalizados estándar en la interfaz de usuario de administración

He agregado algunos custom_post_types diferentes a mi instalación de Wordpress 3. Todos son un poco diferentes entre sí, y deben almacenar información única en custom_fields. Pero mientras que uno puede almacenar un product_id, otro no lo hará. Uno tendrá un source_url y otro no. En lugar de tener que informar a mis editores sobre qué campos personalizados se deben usar con qué publicaciones personalizadas, ¿cómo puedo hacer que cada publicación personalizada incluya sus campos personalizados como parte de la propia interfaz de usuario?

Si visita "daily_cartoon", tendrá una pantalla que solo solicita un título , título , y medios .
Si visitas "daily_product" tendrías una pantalla que solicita solo un título , precio , resumen , etc.

7
Sampson

Hola @ Jonathan Sampson :

Hay varios complementos para facilitar los tipos de publicación personalizados y algunos le permiten definir campos personalizados también, sin ningún orden en particular:

Como mencioné anteriormente, he estado trabajando en una que no proporciona una Interfaz de Usuario como ésta para una API extensible para tipos de campo complejos (y también simples). Pero luego de pasar una hora tratando de empaquetarlo, me di cuenta de que no estaba listo para su distribución aún. Tal vez en unas pocas semanas.

Los complementos mencionados anteriormente deben satisfacer sus necesidades básicas por ahora y trataré de hacer que los míos sean compatibles con los datos almacenados por todos estos en el futuro en caso de que decida utilizar los míos en el futuro.

También puede encontrar esta publicación un poco de ayuda también:

4
MikeSchinkel

puede agregar meta_boxes para tener los datos de los campos personalizados almacenados en ellos. dado que add_meta_box se puede configurar de acuerdo con post_type, esto le permitirá agregar diferentes meta_box a diferentes tipos de publicaciones.

mire esto publicación para ver un ejemplo completo de alteración del tipo de publicación personalizada nuevo/editar pantalla.

5
hannit cohen

Recientemente he necesitado abordar un problema muy similar mientras trabajaba dentro de un tema. La base del código era de esta publicación y había modificado parte del código.

La siguiente es la primera parte del código que había modificado.

    add_action('init', 'limited_post_type');
function my_custom_limited_post_type() 
{
  $labels = array(
    'name' => _x('Limited Post Type', 'post type general name'),
    'singular_name' => _x('Film - DVD', 'post type singular name')
  );
  $args = array(
    'labels' => $labels,
    'public' => true,
    'publicly_queryable' => true,
    'show_ui' => true, 
    'query_var' => true,
    'rewrite' => true,
    'capability_type' => 'post',
    'hierarchical' => false,
    'menu_position' => null,
    'supports' => array('title','editor','author','thumbnail','excerpt', 'page-attributes','custom-fields' ),
    'show_in_nav_menus' => true
  ); 
  register_post_type('limited_post_type', $args);
}

La siguiente es la segunda parte del código que había modificado.

foreach ( $scope as $scopeItem ) {
       switch ( $scopeItem ) {
           case "post": {
             // Output on any post screen
             if ( basename( $_SERVER['SCRIPT_FILENAME'] )=="post-new.php" || $post->post_type=="post" )
             $output = true;
             break;}              
            case "page": {
                  // Output on any page screen
                  if ( basename( $_SERVER['SCRIPT_FILENAME'] )=="page-new.php" || $post->post_type=="page" )
            $output = true;
            break;}
             case "limited_post_type": {
                                // Output on limited post_type onlye
            if ((basename( $_SERVER['SCRIPT_FILENAME'] )=="post-new.php" && $post->post_type=="limited_post_type" ) || (basename( $_SERVER['SCRIPT_FILENAME'] )=="post.php" && $post->post_type=="film_dvd" ))
                   $output = true;
                   break;
                  }

Si lo desea, envíeme un mensaje y con gusto le enviaré mi archivo functions.php para su referencia. Esta es definitivamente la manera de hacer que suceda, ya que pasé muchas noches tirándome el pelo como a ti mismo.

0
jnolte