Como adicionar campos personalizados a um tipo de postagem personalizado?

13

Ok, registrei alguns tipos de postagem personalizados e algumas taxonomias. Agora, pela minha vida, não consigo descobrir o código necessário para adicionar um campo personalizado ao meu tipo de postagem personalizada.

Eu preciso de um menu suspenso e uma área de texto de linha única. Mas também preciso ter campos separados para os tipos de postagem. Então, digamos que o tipo de postagem um tem três campos e o tipo de postagem 2 tem quatro campos, mas os campos são diferentes.

Todas as dicas ajudariam a ver o codex e descobri algo, mas não consigo entender o que preciso adicionar ao meu arquivo functions.php

    
por xLRDxREVENGEx 13.05.2011 / 03:59

5 respostas

15

Isso é provavelmente mais complicado do que você pensa, eu procuraria usar uma estrutura:

Se você quiser escrever seus próprios, aqui estão alguns tutoriais decentes:

por Wyck 13.05.2011 / 05:03
23

Adicione / edite o argumento supports (usando register_post_type ) para incluir a tela custom-fields na postagem do seu tipo de postagem personalizada:

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

Fonte: enlace

    
por kubante 23.04.2013 / 16:18
6

Embora você deva adicionar alguma validação, esta ação não parece ser complicada para a versão atual do WordPress.

Basicamente, você precisa de duas etapas para adicionar um campo personalizado a um tipo de postagem personalizado:

  1. Crie um metabox que contenha seu campo personalizado
  2. Salve seu campo personalizado no banco de dados

Essas etapas são descritas globalmente aqui: enlace

Exemplo:

Adicione um campo personalizado chamado "function" a um tipo de postagem personalizado chamado "prefix-teammembers".

Primeiro adicione o 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' );

Se você adicionar ou editar um "membro da equipe de prefixo", o add_meta_boxes_{custom_post_type} hook será acionado. Veja enlace para a função add_meta_box() . Na chamada acima de add_meta_box() is prefix_teammembers_metaboxes_html , um retorno de chamada para adicionar seu campo de formulário:

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
}

Na segunda etapa, você tem seu campo personalizado no banco de dados. Ao salvar, o gancho save_post_{custom_post_type} é acionado (desde a versão 3.7, consulte: enlace ). Você pode ligar isso para salvar seu 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' );   
    
por Bass Jobsen 30.01.2014 / 21:46
0

Existem vários plug-ins para caixas meta personalizadas e campos personalizados. Se você olhar para um plugin que se concentra em desenvolvedores, então você deve tentar Meta Box . É leve e muito poderoso.

Se você está procurando um tutorial sobre como escrever código para uma caixa meta / campos personalizados, então isso é um bom começo. É a primeira parte de uma série que pode ajudá-lo a refinar o código para facilitar a extensão.

    
por Anh Tran 03.01.2018 / 05:22
-4

// slider_metaboxes_html, função para criar HTML function slider_metaboxes () {    global $ wp_meta_boxes;    add_meta_box ('postfunctiondiv', __ ('Link personalizado'), 'slider_metaboxes_html', 'slider', 'normal', 'alto'); }

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

Conhecimento perfeito

    
por DTIndia 28.10.2017 / 08:11