it-swarm-pt.tech

Como tornar os campos personalizados padrão na interface de administração

Eu adicionei alguns custom_post_types diferentes à minha instalação do Wordpress 3. Eles são todos um pouco diferentes um do outro e devem armazenar informações exclusivas em custom_fields. Mas enquanto alguém pode armazenar um product_id, outro não. Um terá um source_url e outro não. Em vez de instruir meus editores sobre quais campos personalizados devem ser usados ​​com quais postagens personalizadas, como posso fazer com que cada postagem personalizada inclua seus campos personalizados como parte da própria interface do usuário?

Se você visitar "daily_cartoon", você terá uma tela que pede apenas um título , legenda e media .
Se você visitar "daily_product", você terá uma tela que pede apenas um título , preço , resumo , etc.

7
Sampson

Oi @ Jonathan Sampson :

Existem vários plugins para tornar os Custom Post Types mais fáceis e alguns permitem que você defina Custom Fields também, em nenhuma ordem específica:

Como mencionei acima, tenho trabalhado em uma que não fornece uma interface de usuário como esta para uma API extensível para tipos de campos complexos (e simples também). Mas depois de passar uma hora tentando empacotá-la, percebi que ela não está pronta para distribuição ainda. Talvez daqui a algumas semanas.

Esses plugins listados acima devem atender às suas necessidades básicas por agora e tentarei tornar meu compatível com os dados armazenados por todos eles no futuro caso você decida usar o meu no futuro.

Você também pode encontrar este post um pouco de ajuda:

4
MikeSchinkel

você pode adicionar meta_boxes para ter os dados dos campos personalizados armazenados neles. já que add_meta_box pode ser definido de acordo com post_type, isso permitirá que você adicione diferentes meta_box a diferentes tipos de posts.

olhe para isto post para um exemplo completo de alterar o tipo de post personalizado new/edit scree.

5
hannit cohen

Recentemente, precisei resolver um problema muito semelhante enquanto trabalhava em um tema. A base do código foi a partir desta post e eu tinha modificado alguns dos códigos

A seguir, a primeira parte do código que eu modifiquei.

    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);
}

A seguir, a segunda parte do código que eu modifiquei.

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;
                  }

Se você gosta, por favor envie-me uma mensagem e terei prazer em enviar-lhe o meu arquivo functions.php para sua referência. Esta é definitivamente a maneira de fazer isso acontecer enquanto eu passava por muitas noites de cabelo puxando como você.

0
jnolte