Adăugați o coloană personalizată în ecranul Administrări pentru postări și tipuri personalizate de postări

În acest tutorial vom vedea cum să adăugăm o nouă coloană în ecranul de gestionare a mesajelor WordPress și în această coloană vom arăta Imaginea recomandată a fiecărei postări. Această coloană nouă va fi adăugată, de asemenea, în ecranul de gestionare al oricărui Tip de post personalizat activ.


Pasul 1 Activați imaginile recomandate

În acest tutorial vom folosi functions.php fișier disponibil în directorul tematic activ. Dacă fișierul nu este prezent, puteți crea unul nou cu următorul conținut:

 

Mai întâi, verificați dacă imaginea recomandată este disponibilă pe Adăugați postare nouă pagină:

Dacă nu vedeți Imagine recomandată , adăugați această linie la functions.php:

 add_theme_support ( 'post-thumbnails');

De asemenea, setăm o dimensiune personalizată de 55 de pixeli care va fi utilizată pentru a afișa previzualizarea imaginii recomandate:

 add_image_size ('featured_preview', 55, 55, true);

Pasul 2: Adăugați coloana personalizată în ecranul Mesaje

Acum vom adăuga o nouă coloană în tabelul cu lista de postări care va conține imaginea recomandată a fiecărei postări. Dar, mai întâi, avem nevoie de o funcție pentru a obține imaginea recomandată a unui Post: ST4_get_featured_image.

Deschide functions.php fișier în directorul temă și lipiți-l pe acesta:

 // GET FUNCȚIONARE IMAGE funcție ST4_get_featured_image ($ post_ID) $ post_thumbnail_id = get_post_thumbnail_id ($ post_ID); dacă ($ post_thumbnail_id) $ post_thumbnail_img = wp_get_attachment_image_src ($ post_thumbnail_id, 'featured_preview'); returnați $ post_thumbnail_img [0]; 

Și definim două funcții: prima va adăuga noua coloană, a doua va apela și va arăta imaginea recomandată în fiecare celulă din coloana nouă:

 // ADD NOU COLOANĂ funcție ST4_columns_head ($ implicit) $ implicit ['featured_image'] = 'Imagine recomandată'; returnează $ implicit;  // arăta funcția FEATURED IMAGE ST4_columns_content ($ column_name, $ post_ID) if ($ column_name == 'featured_image') $ post_featured_image = ST4_get_featured_image ($ post_ID); dacă ($ post_featured_image) echo '„; 

Aceste două funcții vor fi "cuplate" în funcția de bază WordPress care creează tabelul Posts.

Despre WordPress Hooks

Dezvoltatorii pot modifica comportamentul WordPress implicit prin API-urile WordPress:

Cârligele sunt furnizate de WordPress pentru a permite plugin-ul dvs. să "cârme în" restul WordPress; care este, de a apela funcții în plugin-ul dvs. la anumite momente și, prin urmare, setați pluginul în mișcare.

Pe scurt, Hooks permite dezvoltatorilor să extindă funcțiile WordPress fără a edita fișiere de bază. Există două tipuri de cârlige: acţiuni și Filtre. Ambele sunt lansate în timpul execuției WordPress, dar în timp ce filtrează accepta, transforma și returnează o intrare, Acțiunile nu întoarce nimic, deși pot imprima tot ce ai nevoie.

În cazul nostru, ST4_columns_head funcția ia $ implicite array care conține coloanele implicite din tabelele de posturi (titlu, categorie, etichete și așa mai departe ...), adaugă un nou featured_image element la matrice și îl întoarce la funcția de bază pe care WordPress o folosește pentru a imprima tabelul html.

Dimpotrivă, ST4_columns_content funcție acceptă două variabile ($ COLUMN_NAME și $ POST_ID), și - în funcție de ele - imprimă o ieșire. Pentru a fi mai precis, ST4_columns_content este invocată la fiecare iterație a buclei care traversează $ implicite matrice. La fiecare iterație, WordPress transmite două argumente funcției noastre: numele coloanei și ID-ul postului. Funcția analizează toate numele de coloane și când numele este egal cu cel pe care l-am specificat ST4_columns_head, verifică imaginea recomandată.

Deci, acum putem să ne cârlig funcțiile în API-urile plugin-ului WordPress:

 add_filter ('manage_posts_columns', 'ST4_columns_head'); add_action ('manage_posts_custom_column', 'ST4_columns_content', 10, 2);

10 și 2 parametrii sunt: ​​ordinea (prioritatea) în care funcția va fi executată și numărul de argumente acceptate de funcție. Oricum, puteți citi mai multe în Codul WordPress sub add_action.


Rezultat final

Acum putem scrie o postare cu o Imagine recomandată:

Deci, când deschideți ecranul de gestionare a postărilor din /wp-admin/edit.php, veți vedea noul Imagine recomandată coloană:

Primele două posturi au imaginea recomandată, a treia (un post fără o imagine recomandată) nu, deci nimic nu este afișat.

Pentru a afișa o imagine implicită pentru postări care nu au o imagine recomandată, puteți modifica imaginea ST4_columns_content funcționează astfel:

 „;  altceva // NO IMAGE FEATURED, arătați un ecou defect "„; ?>

default.jpg imaginea trebuie să fie prezentă în imagini director al temei noastre active.

De asemenea, puteți afișa / ascunde această nouă coloană deschizând Opțiuni ecran și dați clic pe caseta de selectare Imagine recomandată:


Pasul 3 Adăugați coloana Imagine recomandată la tipurile personalizate de postări

Una dintre cele mai interesante și mai utile funcții ale WordPress este posibilitatea de a adăuga personalizate tipuri de mesaje (și taxonomii personalizate). Puteți utiliza tipuri de posturi pentru a crea noi tipuri de conținut diferite de postări și pagini, de exemplu pentru a gestiona o bază de date pentru filme. De fapt, atunci când adăugați un tip de post personalizat, WordPress creează toate paginile de gestionare pentru acel tip de post: puteți adăuga, modifica și șterge acele posturi în același mod ca mesajele și paginile implicite.

Acum vom crea un nou tip de post particularizat: Filme, prin WordPress register_post_type funcţie:

 add_action ('init', 'ST4_add_movies'); funcția ST4_add_movies () $ args = array ('label' => __ 'Filme', 'singular_label' => __ ('Movie'), 'public' => true, 'show_ui' => true '=>' post ',' hierarchical '=> false,' rewrite '=> true,' suporta '=> array (' title ',' editor ',' thumbnail ')); register_post_type ('film', $ args); 

Deci, când adăugați o imagine prezentată într-un post de film ...

... veți vedea imaginea recomandată și în ecranul de gestionare a filmelor (rețineți că aici puteți afișa / ascunde coloana în opțiunile de ecran):


Alte utilizări

Adăugarea coloanei personalizate în funcție de tipul postării

Dacă utilizați manage_posts_columns și manage_posts_custom_column cârlige, coloana va fi afișată în toate gestionează ecrane de postări. De fapt, aceste filtre vor funcționa posturi de toate tipurile cu excepția paginilor.

 // TOATE TIPURI DE POȘTĂ: posturi ȘI tipuri personalizate de posturi add_filter ('manage_posts_columns', 'ST4_columns_head'); add_action ('manage_posts_custom_column', 'ST4_columns_content', 10, 2);

Dacă doriți să adăugați o coloană numai în ecranul de gestionare a postărilor utilizare:

 // POȘTE DEFINITIVE NUMAI WORDPRESS add_filter ('manage_post_posts_columns', 'ST4_columns_head', 10); add_action ('manage_post_posts_custom_column', 'ST4_columns_content', 10, 2);

Dacă doriți să adăugați o coloană numai în ecranul de gestionare a paginilor utilizare:

 // NUMĂRUL DE PERSOANE DE DEFINIRE CU WORDPRESS add_filter ('manage_page_posts_columns', 'ST4_columns_head', 10); add_action ('manage_page_posts_custom_column', 'ST4_columns_content', 10, 2);

Dacă doriți să adăugați o coloană numai în ecranul de gestionare a filmei utilizare:

 // NUMĂRUL POSTURILOR DE TELEVIZIUNE NUMAI MOVIE add_filter ('manage_movie_posts_columns', 'ST4_columns_head_only_movies', 10); add_action ('manage_movie_posts_custom_column', 'ST4_columns_content_only_movies', 10, 2); // CREATE DOUĂ FUNCȚII PENTRU MANIPULAREA COLOANEI funcție ST4_columns_head_only_movies (implicit $) $ implicit ['directors_name'] = 'Director'; returnează $ implicit;  funcția ST4_columns_content_only_movies ($ column_name, $ post_ID) if ($ column_name == 'nume_vederi') // afișați conținutul coloanei 'directors_name'

Adăugați coloana personalizată în alt tip de postare

Dacă aveți alte tipuri personalizate de postări, puteți adăuga cu ușurință coloana imaginilor recomandate.
Dacă ați adăugat manual tipul de postare, verificați fișierul în care este adăugat postul personalizat și căutați primul argument din register_post_type funcţie:

 register_post_type ('carte', $ args); // carte este tipul postului

Dacă tipul postului personalizat este definit printr-un alt plugin și / sau nu puteți găsi unde register_post_type este, deschideți ecranul de gestionare a postărilor personalizate din browserul dvs. și verificați adresa URL:

 http://www.yoursite.com/wp-admin/edit.php?post_type=carte

În acest caz, carte este tipul postului.

În cele din urmă, modificați cârligele în acest fel, înlocuind-o film cu carte:

 add_filter ('manage_book_posts_columns', 'ST4_columns_book_head'); add_action ('manage_book_posts_custom_column', 'ST4_columns_book_content', 10, 2);

Nu uitați să creați două funcții: ST4_columns_book_head pentru a crea coloana și ST4_columns_book_content pentru a afișa conținutul.

Adăugați două coloane personalizate

Dacă trebuie să adăugați mai mult de o coloană, puteți face acest lucru cu ușurință:

 // ADĂUGAȚI două funcții NEW COLUMNS ST4_columns_head (implicit $) $ defaults ['first_column'] = 'Prima coloană'; $ default ['second_column'] = 'A doua coloană'; returnează $ implicit;  funcția ST4_columns_content ($ column_name, $ post_ID) if ($ column_name == 'first_column') // Prima coloană dacă $ column_name == 'coloana a doua // coloana a doua

Eliminați coloanele implicite

De asemenea, puteți elimina o coloană implicită WordPress, de exemplu, coloana Categorie în ecranul de administrare a postărilor:

 add_filter ('manage_post_posts_columns', 'ST4_columns_remove_category'); // REMOVE DEFAULT CATEGORY COLUMN funcție ST4_columns_remove_category ($ implicit) // pentru a obține valorile implicite ale coloanelor: // print_r ($ default); unset (valori implicite $ [ 'categorii']); returnează $ implicit; 

Referințe

  • WordPress Plugin API
  • WordPress Custom Post Types
  • Referință funcție / adăugați acțiune
  • Plugin API / Filtru Referință / gestionare posturi coloane
  • Plugin API / acțiune de referință / gestionare post column custom
  • Plugin API / Filtru Referință / gestionare posturi post post de tip post
  • Plugin API / Action Reference / gestionarea postului post post post de tip personalizat
Cod