Hjemmeside » WordPress » Forstå WordPress Custom Meta Box

    Forstå WordPress Custom Meta Box

    I det foregående indlæg har vi talt om det tilpassede felt i WordPress, som giver dig mulighed for at tilføje og udgive en ny post i et indlæg ved hjælp af feltet Custom Field, som WordPress tilbyder i postredigeringsskærmen. Hvis du dog ikke er komfortabel ved at bruge den brugerdefinerede feltkasse (vi har alle vores individuelle præferencer), her er et alternativ: du kan oprette en meta box.

    En metakasse er a tilpasset boks som vi skaber på vores egen, hvilket kan indeholder input eller andre interaktive brugergrænseflader for at tilføje nye poster af indlæg eller sider. Du kan bruge metakassen i stedet for feltet Tilpasset felt til at gøre det samme. Lad os se, hvordan du opretter en.

    Mere om Hongkiat.com:

    • Tilpas media upload directory i WordPress
    • Tilpas WordPress editor stilarter
    • Tilpas “Howdy” I WordPress admin bar
    • Registrér brugerdefineret taksonomi for WordPress-brugere
    • Vis ikoner I WordPress-menuen

    Oprettelse af en Meta Box

    WordPress providse en API-funktion, kaldet add_meta_box, som lader os straks skabe en meta-boks. Dette er det i sin yderste grundlæggende form.

     funktion add_post_reference () add_meta_box ('post-reference', 'Reference', 'referenceCallBack', 'post');  add_action ('add_meta_boxes', 'add_post_reference'); funktion referenceCallBack () echo 'Hello World' 

    Det add_meta_box tager fire parametre: ID, meta box titel, en callback funktion, der vil kalde 'Hello World' og den posttype vi ønsker at vise. I dette tilfælde tildeler vi en ny meta-boks i en postredigeringsside (dette fungerer også med sider).

    I afsnittet efter redigering finder du en ny boks som følger.

    Den nye metakasse, som du kan se ovenfor, vises under WYSIWYG-editoren. Hvis du vil tilføje det i sidepanelet, kan du tilføje 'side' efter postparameteren og sammen med 'høj', hvis du vil sætte det øverst i sidebjælken.

     funktion add_post_reference () add_meta_box ('post-reference', 'Reference', 'referenceCallBack', 'post', 'side', 'high');  add_action ('add_meta_boxes', 'add_post_reference'); 

    Du vil nu finde den over Offentliggøre boks…

    Nu skal du erstatte 'Hello World' teksten derinde. Lad os tilføje elementer som et indtastningsfelt til en ny post.

    I dette eksempel tilføjer vi to indtastningsfelter, der består af en til at tilføje referencenavnet og en anden til Reference Link:

     funktion referenceCallBack ($ post) wp_nonce_field ('reference_meta_box', 'reference_nonce'); $ name_value = get_post_meta ($ post-> ID, '_post_reference_name', true); $ link_value = get_post_meta ($ post-> ID, '_post_reference_link', true); ekko ''; ekko ''; ekko '

    '. 'Tilføj referencens navn'. '

    '; ekko ''; ekko ''; ekko '

    '. 'Tilføj linket til referencen'. '

    ';

    Opdater postredigeringssiden, og du bør se disse to indgange tilføjet.

    Det $ NAME_VALUE og $ link_value variabel vil hente poster fra databasen og fylde dem i inputfelterne. For at få indgangene i databasen skal vi oprette en funktion til det.

    Vi skal tilføje nogle få linjer kode, der vil fylde de poster, der tilføjes via disse indtastninger i databasen på en sikker måde. “Sikker” her betyder en legitim og autoriseret post (ikke den der kommer fra hackere eller andet uautoriseret personale). For at gemme posten skal vi oprette en ny funktion. Lad os navngive funktionen: save_post_reference, ligesom.

     funktion save_post_reference ($ post_id)  ​​add_action ('save_post', 'save_post_reference'); 

    Som vi har nævnt, skal vi verificere et par ting til sikkerhedsformål:

    (1) Vi skal kontrollere om brugeren har evnen til at redigere et indlæg.

     hvis (! current_user_can ('edit_post', $ post_id)) return;  

    (2) Vi skal også Kontroller, om Nonce er indstillet.

     hvis (! isset ($ _POST ['reference_nonce'])) return;  hvis (! wp_verify_nonce ($ _POST ['reference_nonce'], 'reference_meta_box')) return;  

    (3) Derefter skal vi forhindre, at dataene automatisk gemmes. Gemmer kan kun udføres en gang i “Gemme” eller “Opdatering” knappen er blevet klikket.

     hvis (defineret ('DOING_AUTOSAVE') && DOING_AUTOSAVE) return;  

    (4) Vi skal også sikre, at vores to indgange, post_reference_name og post_reference_link, er indstillet og klar før vi sender indlæggene.

     hvis (! isset ($ _POST ['post_reference_name']) ||! isset ($ _POST ['post_reference_link'])) return;  

    (5) Og posten skal være fri for eventuelle uventede tegn, der kan true websikkerhed. For at kontrollere dette kan du bruge den indbyggede WordPress-funktion sanitize_text_field.

     $ reference_name = sanitize_text_field ($ _POST ['post_reference_name']); $ reference_link = sanitize_text_field ($ _POST ['post_reference_link']); 

    Okay, nu er vi klar til at gemme posterne i databasen:

     update_post_meta ($ post_id, '_post_reference_name', $ reference_name); update_post_meta ($ post_id, '_post_reference_link', $ reference_link); 

    Nu kan du prøve det: Indtast noget indhold i indtastningsfelterne, og klik på “Opdatering” knappen for at gemme dem.

    Konklusion

    Vi har lige lavet en meta-boks, der består af to indgange. Du kan yderligere udvide kassen med andre typer indgange som f.eks. Radioknappen eller markeringsboksen. Dette eksempel kan være meget grundlæggende, men når du kommer på hænge af det, vil du være i stand til at bruge denne meta box til meget mere komplicerede anvendelser. Lad os vide, om du vil bruge dette og hvad du vil bruge det til.