Cum se Adaugă Câmpuri Personalizate la un Tip de Postare Personalizat?

13 mai 2011, 04:59:22
Vizualizări: 160K
Voturi: 33

Ok, deci am înregistrat câteva tipuri de postări personalizate și câteva taxonomii. Acum, oricât aș încerca, nu pot găsi codul necesar pentru a adăuga un Câmp Personalizat la Tipul meu de Postare Personalizat.

Am nevoie de un meniu dropdown și o zonă de text pe o singură linie. Dar am nevoie și de câmpuri separate pentru tipurile de postări. Deci, să zicem că tipul de postare unu are 3 câmpuri și tipul de postare 2 are 4 câmpuri, dar câmpurile sunt diferite.

Orice sugestii ar ajuta. Am consultat codexul și am găsit ceva, dar nu pot înțelege ce trebuie să adaug în fișierul meu functions.php

1
Comentarii

Folosește http://wordpress.org/extend/plugins/types/

Ajay Patel Ajay Patel
30 iul. 2012 14:21:57
Toate răspunsurile la întrebare 9
4
38

Adăugați/editați argumentul supports (în timp ce utilizați register_post_type) pentru a include custom-fields în ecranul de editare al postării pentru tipul dumneavoastră personalizat de postare:

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

Sursa: https://developer.wordpress.org/reference/functions/register_post_type/#supports

23 apr. 2013 17:18:32
Comentarii

Poți să explici de ce asta ar putea rezolva problema?

s_ha_dum s_ha_dum
23 apr. 2013 17:57:06

Da, funcționează.

Cine a dat -1 la răspuns. Poți să îl retragi, te rog?

Salutări,

Junaid Qadir Shekhanzai Junaid Qadir Shekhanzai
25 iul. 2013 11:59:15

...și apoi.........?

Mark Mark
26 oct. 2016 21:33:49

Acest lucru nu va rezolva problema deoarece OP întreabă cum să adauge câmpuri personalizate cu un format specific ("un meniu derulant și o zonă de text cu o singură linie"), nu cum să activeze funcția generică "câmpuri personalizate" din WordPress.

tog22 tog22
4 oct. 2020 06:18:11
4
26

Acest lucru este probabil mai complicat decât crezi, aș recomanda utilizarea unui framework:

Dacă dorești să îți creezi propria soluție, iată câteva tutoriale utile:

13 mai 2011 06:03:10
Comentarii

chiar ar fi atât de greu. Credeam că va fi la fel de simplu ca adăugarea unui cod de înregistrare în funcțiile mele, așa cum facem cu tipurile de postări și taxonomiile.

xLRDxREVENGEx xLRDxREVENGEx
13 mai 2011 06:07:26

Voi susține acest răspuns, dar nu este prea complicat. Linkul thinkvitamin.com explică foarte bine cum să adaugi metadate și să le salvezi. Linkul sltaylor.co.uk este un tutorial minunat despre utilizarea unor practici de codare excelente. Un cuvânt de avertizare este să fii atent când folosești hook-ul save_post. Este apelat în momente ciudate. Asigură-te că ai variabila WP_DEBUG setată pe true pentru a vedea potențiale erori care apar la utilizarea acestuia.

tollmanz tollmanz
13 mai 2011 06:51:14

Doar o actualizare, am folosit linkul thinkvitamin și acesta a ajutat enorm și a fost foarte ușor să configurez câmpuri personalizate

xLRDxREVENGEx xLRDxREVENGEx
14 mai 2011 02:31:37

Cum poate fi acesta un răspuns acceptabil? Legături? Serios?

Bangkokian Bangkokian
24 nov. 2020 21:37:11
3
20

Deși ar trebui să adăugați o validare, această acțiune nu pare complicată pentru versiunea actuală de WordPress.

În esență, aveți nevoie de doi pași pentru a adăuga un Câmp Personalizat la un Tip de Postare Personalizat:

  1. Crearea unei metachete care să conțină Câmpul Personalizat
  2. Salvarea Câmpului Personalizat în baza de date

Acești pași sunt descriși global aici: http://wordpress.org/support/topic/is-it-possible-to-add-an-extra-field-to-a-custom-post-type

Exemplu:

Adăugarea unui Câmp Personalizat numit "funcție" la un Tip de Postare Personalizat numit "prefix-membriiechipei".

Mai întâi adăugați metacheta:

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

Dacă adăugați sau editați un "prefix-membriiechipei", acțiunea add_meta_boxes_{custom_post_type} este declanșată. Consultați http://codex.wordpress.org/Function_Reference/add_meta_box pentru funcția add_meta_box(). În apelul de mai sus al add_meta_box(), prefix_teammembers_metaboxes_html este un callback pentru a adăuga câmpul de formular:

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

În al doilea pas, salvați câmpul personalizat în baza de date. La salvare, acțiunea save_post_{custom_post_type} este declanșată (începând cu versiunea 3.7, vezi: https://stackoverflow.com/questions/5151409/wordpress-save-post-action-for-custom-posts). Puteți folosi acest hook pentru a salva câmpul personalizat:

function prefix_teammembers_save_post()
{
    if(empty($_POST)) return; //de ce este prefix_teammembers_save_post declanșat la adăugarea unui nou membru? 
    global $post;
    update_post_meta($post->ID, "function", $_POST["function"]);
}   

add_action( 'save_post_prefix-teammembers', 'prefix_teammembers_save_post' );   
30 ian. 2014 22:46:21
Comentarii

"de ce este prefix_teammembers_save_post declanșat la adăugarea unui nou post?" ați găsit un răspuns, și eu mă confrunt cu o declanșare suplimentară a funcției pe care nu o mai rețin?

alex alex
18 feb. 2015 07:15:30

"Adaugă un Câmp Personalizat numit 'funcție' la un Tip de Postare Personalizat numit 'prefix-teammembers'." Ce înseamnă "numit"? Numele? singular_name? Eticheta? Poate este șirul folosit ca prim argument în funcția register_post_type. Sau poate nu contează ce este, atâta timp cât este consistent.

arnoldbird arnoldbird
7 oct. 2019 20:29:00

Folosirea hook-ului de salvare prefix_teammembers_save_post pare să facă imposibilă inserarea de câmpuri personalizate noi în postări programatic cu wp_update_post și cheia meta_input.

tklodd tklodd
6 ian. 2022 19:47:01
1

Linkul către thinkvitamin.com din răspunsul acceptat nu mai este activ. Acel website și-a schimbat domeniul în treehouse.com. Răspund aici doar pentru că nu am suficientă reputație pentru a comenta. Conținutul acelui link expirat este disponibil aici: https://blog.teamtreehouse.com/create-your-first-wordpress-custom-post-type pentru cei care au nevoie de el. Mult succes!

19 mai 2021 02:47:10
Comentarii

Mulțumesc! Începeam să înnebunesc pentru că nu puteam vedea linkul despre care vorbeau în comentarii.

Gerard Reches Gerard Reches
28 ian. 2024 09:42:42
0

Există diverse pluginuri pentru metadate personalizate și câmpuri personalizate. Dacă te uiți la un plugin care se adresează dezvoltatorilor, atunci ar trebui să încerci Meta Box. Este ușor și foarte puternic.

Dacă cauți un tutorial despre cum să scrii cod pentru o cutie de metadate / câmpuri personalizate, atunci acesta este un bun punct de start. Este prima parte dintr-o serie care te poate ajuta să rafinezi codul pentru a-l face ușor de extins.

3 ian. 2018 06:22:22
0

Știu că această întrebare este veche, dar pentru mai multe informații despre subiect:

WordPress are suport încorporat pentru câmpuri personalizate. Dacă ai un tip de postare personalizat, tot ce trebuie să faci este să incluzi 'custom-fields' în array-ul de suport din register_post_type, așa cum a răspuns @kubante.

Notă că această opțiune este disponibilă și pentru tipurile de postări native, cum ar fi articolele și paginile - trebuie doar să o activezi.

Acest câmp personalizat este foarte simplu și acceptă o valoare de tip string. În multe cazuri, acest lucru este suficient, dar pentru câmpuri mai complexe, recomand să folosești plugin-ul 'Advanced Custom Fields'.

12 aug. 2020 14:07:42
0

Dacă crezi că ai făcut totul corect și folosești WordPress 5.7, probabil tot ce trebuie să faci este să-l afișezi în panoul suplimentar.

Apasă pe cele 3 puncte verticale din stânga sus > preferințe > Panouri

imagine cu setările panourilor

Desigur, asta după ce te-ai asigurat că tipul de postare are configurația corectă.

21 mai 2021 04:27:31
0
function custom_field(){  // câmpuri personalizate pentru tipul de postare personalizată stackoverflow
     add_meta_box(
         'custom_field',
         'Câmp personalizat',
         'custom_field_type',
         'user',
         'normal',
         'low'
     );
 }
 add_action('add_meta_boxes','custom_field');
 
 function custom_field_type($post){
     $state = get_post_meta($post->ID,'state',true);
     $country = get_post_meta($post->ID,'country',true);
     $pincode = get_post_meta($post->ID,'pincode',true);
     $college = get_post_meta($post->ID,'college',true);
     ?>
     <label for = "state"> Stat : </label>
     <input type ="text" name="state" value="<?php echo $state ?>"><br><br>
     <label for = "country"> Țară : </label>
     <input type ="text" name="country" value="<?php echo $country ?>"><br><br>
     <label for = "pincode"> Cod poștal : </label>
     <input type ="text" name="pincode" value="<?php echo $pincode?>"><br><br>
     <label for = "college"> Nume colegiu : </label>
     <input type ="text" name="college" value="<?php echo $college ?>"><br><br>
     <?php
 }

 function handle_custom_field($post_id){
     if(isset($_POST['state'])){
         $state = $_POST['state'];
         update_post_meta($post_id, 'state', $state);
     }
     if(isset($_POST['country'])){
         $country = $_POST['country'];
         update_post_meta($post_id,'country', $country);
     }
     if(isset($_POST['pincode'])){
         $pincode = $_POST['pincode'];
         update_post_meta($post_id,'pincode',$pincode);
     }
     if(isset($_POST['college'])){
        $college = $_POST['college'];
        update_post_meta($post_id,'college',$college);
    }
 }
 add_action('save_post','handle_custom_field');
6 dec. 2024 17:03:53
0
-5
// slider_metaboxes_html , funcție pentru crearea HTML 
function slider_metaboxes( ) {
   global $wp_meta_boxes;
   add_meta_box('postfunctiondiv', __('Link personalizat'), 'slider_metaboxes_html', 'slider', 'normal', 'high');
}

//add_meta_boxes_slider => add_meta_boxes_{tip personalizat de postare}
add_action( 'add_meta_boxes_slider', 'slider_metaboxes' );

Cunoaștere perfectă

28 oct. 2017 09:11:09