Jak dodać niestandardowe pola do niestandardowego typu postu?


18

Ok, więc zarejestrowałem kilka niestandardowych typów postów i kilka systematyk. Teraz przez całe życie nie mogę znaleźć kodu, który muszę dodać do mojego niestandardowego typu posta.

Potrzebuję rozwijanego i pojedynczego wiersza tekstu. Ale muszę też mieć osobne pola dla typów postów. Powiedzmy, że typ postu 1 ma 3 pola, a typ postu 2 ma 4 pola, ale pola są różne.

Wszelkie wskazówki pomogłyby mi spojrzeć na kodeks i znaleźć coś, ale nie mogę zrozumieć, co muszę dodać do mojego functions.phppliku


Odpowiedzi:


19

1
naprawdę byłoby to takie trudne. Pomyślałem, że będzie to tak proste, jak dodanie kodu rejestru do moich funkcji, tak jak robimy to z typami postów i taksonomiami.
xLRDxREVENGEx

1
Dodam jedną odpowiedź, ale nie jest to zbyt skomplikowane. Link do thinkvitamin.com świetnie się spisuje, wyjaśniając, jak dodawać metaboksy i je zapisywać. Link do sltaylor.co.uk to niesamowity samouczek na temat korzystania ze świetnych praktyk kodowania. Moje słowo przestrogi jest ostrożne podczas używania save_posthaka. Nazywa się to w dziwnych czasach. Upewnij się, że zmienna WP_DEBUG jest ustawiona na wartość true, aby zobaczyć potencjalne błędy pojawiające się podczas jej używania.
tollmanz

1
Tylko aktualizacja użyłem linku thinkvitamin i to pomogło ogromnie, a konfiguracja niestandardowych pól była bardzo
prosta

25

Dodaj / edytuj supportsargument (podczas używania register_post_type), aby dołączyć custom-fieldsekran edycji postu niestandardowego typu posta:

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

Źródło: https://codex.wordpress.org/Using_Custom_Fields#Displaying_Custom_Fields


2
Czy możesz wyjaśnić, dlaczego to rozwiązało problem?
s_ha_dum

1
Tak, to działa. Kto -1 był odpowiedzią. Czy możesz to cofnąć? Pozdrawiam,
Junaid Qadir,

6
...i wtedy.........?
Mark

9

Chociaż powinieneś dodać trochę sprawdzania poprawności, ta akcja nie wydaje się skomplikowana w przypadku obecnej wersji WordPress.

Zasadniczo potrzebujesz dwóch kroków, aby dodać pole niestandardowe do niestandardowego typu postu:

  1. Utwórz metaboks, który przechowuje Twoje pole niestandardowe
  2. Zapisz swoje pole niestandardowe w bazie danych

Kroki te opisano globalnie tutaj: http://wordpress.org/support/topic/is-it-possible-to-add-an-extra-field-to-a-custom-post-type

Przykład:

Dodaj pole niestandardowe o nazwie „funkcja” do niestandardowego typu postu o nazwie „członkowie zespołu”.

Najpierw dodaj metaboks:

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

Jeśli dodasz lub edytujesz „członków-prefiksów”, add_meta_boxes_{custom_post_type}hak zostanie uruchomiony. Zobacz http://codex.wordpress.org/Function_Reference/add_meta_box dla tej add_meta_box()funkcji. W powyższym wywołaniu add_meta_box()jest prefix_teammembers_metaboxes_htmlwywołanie zwrotne, aby dodać pole formularza:

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
}

W drugim kroku masz własne pole do bazy danych. Po zapisaniu save_post_{custom_post_type}wyzwalacz jest uruchamiany (od wersji 3.7, patrz: /programming/5151409/wordpress-save-post-action-for-custom-posts ). Możesz zaczepić to, aby zapisać niestandardowe pole:

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

„dlaczego prefix_teammembers_save_post jest uruchamiany przez dodanie nowego?” znalazłeś odpowiedź, ale natknąłem się również na wyzwalacz funkcji dodatkowej, którego nie pamiętam?
alex

„Dodaj niestandardowe pole o nazwie„ funkcja ”do niestandardowego typu postu zwanego„ prefix-teammembers ”.„ Co oznacza „nazwany”? Nazwa? Nazwa pojedyncza? Etykieta? Może to ciąg znaków użyty jako pierwszy argument w typie rejestr_post a może nie ma znaczenia, co to jest, dopóki jest spójne
arnoldbird

1

Istnieją różne wtyczki do niestandardowych pól meta i pól niestandardowych. Jeśli spojrzysz na wtyczkę, która koncentruje się na programistach, powinieneś wypróbować Meta Box . Jest lekki i bardzo wydajny.

Jeśli szukasz samouczka na temat pisania kodu dla pola meta / pól niestandardowych, to dobry początek. Jest to pierwsza część serii, która może pomóc w dopracowaniu kodu, aby ułatwić jego rozszerzenie.


-6
// slider_metaboxes_html , function for create HTML 
function slider_metaboxes( ) {
   global $wp_meta_boxes;
   add_meta_box('postfunctiondiv', __('Custom link'), 'slider_metaboxes_html', 'slider', 'normal', 'high');
}

//add_meta_boxes_slider => add_meta_boxes_{custom post type}
add_action( 'add_meta_boxes_slider', 'slider_metaboxes' );

Doskonała wiedza

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.