WordPress: Adăugați o coloană de imagine recomandată la lista de postări din tema dvs. folosind functions.php

Un plugin WordPress implică cheltuieli suplimentare, necesitând ca WordPress să încarce și să gestioneze pluginul. Aceasta include citirea directorului de pluginuri, verificarea actualizărilor și menținerea metadatelor pluginului. Ori de câte ori lucrez la optimizare Martech Zone sau instalarea WordPress a unui client, analizez întotdeauna pluginurile utilizate, calitatea codului, impactul asupra site-ului și cât de multă funcționalitate există în pluginul utilizat.
De multe ori găsesc că plugin-urile sunt umflate, slab dezvoltate și adaugă cheltuieli generale inutile care pot încetini site-ul sau administrarea. Dacă este o caracteristică simplă, de obicei voi elimina pluginul și voi modifica în schimb tema copilului functions.php. Când codul este plasat în tema copilului functions.php fișier, este integrat direct în temă, ceea ce poate fi puțin mai eficient în ceea ce privește utilizarea resurselor.
În cele din urmă, alegerea dvs. ar trebui să ia în considerare și factori precum organizarea codului, întreținerea și nevoile specifice ale proiectului dvs.
Adăugați o coloană cu imaginea recomandată la lista de postări
Ruleam un plugin pe Martech Zone care a adăugat o coloană la Lista de postări cu imagine cu caracteristici. Din păcate, plugin-ul a avut unele umflături cu setări și resurse suplimentare inutile, cum ar fi un videoclip care fusese demult eliminat. Am disecat pluginul și mi-am dat seama cum adăugau coloana de imagine... și apoi am modificat pluginul cu câteva caracteristici suplimentare, cum ar fi titlul și dimensiunile imaginii prezentate la trecerea mouse-ului.
Iată codul:
function add_featured_image_column($columns) {
// Create a new column with the name "img"
$columns['img'] = 'Featured Image';
return $columns;
}
function customize_featured_image_column($column_name, $post_id) {
if ($column_name == 'img') {
// Get the featured image URL
$thumbnail_url = get_the_post_thumbnail_url($post_id, 'thumbnail');
// Check if a featured image is set
if ($thumbnail_url) {
// Get the original image URL
$original_url = get_the_post_thumbnail_url($post_id, 'full');
// Get the dimensions of the original image
list($original_width, $original_height) = getimagesize($original_url);
// Get the actual title
$actual_title = get_the_title($post_id);
// Define the title attribute for the image
$image_title = $actual_title . ' (' . $original_width . 'px by ' . $original_height . 'px)';
// Display the thumbnail image with a maximum height of 80px and add dimensions to the title attribute
echo '<img src="' . esc_url($thumbnail_url) . '" style="max-height: 80px;" title="' . $image_title . '" />';
} else {
// No featured image is set, display "No featured image"
echo 'No featured image';
}
}
return $column_name;
}
add_action('manage_posts_columns', 'add_featured_image_column');
add_action('manage_posts_custom_column', 'customize_featured_image_column', 10, 2); Iată o explicație a codului:
add_featured_image_columnfuncţie:- Această funcție adaugă o coloană personalizată la lista de postări din panoul de administrare WordPress. Ia ca argument o matrice de coloane existente (
$columns). - Se adaugă o nouă coloană numită img cu eticheta Imagine Recomandate.
- Returnează matricea modificată de coloane cu cele noi img coloană adăugată.
- Această funcție adaugă o coloană personalizată la lista de postări din panoul de administrare WordPress. Ia ca argument o matrice de coloane existente (
customize_featured_image_columnfuncţie:- Această funcție este responsabilă pentru personalizarea conținutului img coloană pentru fiecare postare din listă.
- Este nevoie de doi parametri:
$column_name(numele coloanei curente în curs de procesare) și$post_id(ID-ul postului curent). - Verifică dacă coloana procesată în prezent este img (coloana personalizată pe care am adăugat-o).
- Dacă este vorba de img coloana, preia și afișează imaginea prezentată și informații suplimentare.
- Folosește
get_the_post_thumbnail_urlpentru a prelua adresa URL a imaginii prezentate în dimensiunea „miniatură”. - Verifică dacă o imagine prezentată este setată verificând dacă
$thumbnail_urlNu este gol. - Dacă este setată o imagine recomandată, aceasta preia și adresa URL a imaginii originale (la dimensiune completă) și dimensiunile acesteia folosind
get_the_post_thumbnail_urlșigetimagesize. - Preia titlul real al postării folosind
get_the_title. - Acesta construiește
titleatribut pentru imagine în formatul „Titlu: Titlu real (Lățimea originală px cu înălțimea originală px).” - Afișează imaginea în miniatură cu o înălțime maximă de 80 px și setează atributul de titlu la construcția
$image_title. Puteți modifica această înălțime la orice doriți. - Dacă nu este setată nicio imagine recomandată, se afișează „Fără imagine recomandată setată”.
- Funcția returnează conținutul modificat pentru img coloana.
add_actionlinii:- Aceste linii agăță
add_featured_image_columnfuncția lamanage_posts_columnsacţiunea şicustomize_featured_image_columnfuncția lamanage_posts_custom_columnacțiune. Aceasta asociază aceste funcții cu ecranul de gestionare a postărilor WordPress.
- Aceste linii agăță
Prin adăugarea acestor acțiuni, codul creează în mod eficient o nouă coloană personalizată în lista de postări de administrator WordPress care afișează imaginea prezentată a fiecărei postări împreună cu titlul și dimensiunile acesteia. Dacă nu există nicio imagine prezentată, se afișează Nicio imagine prezentată. Aceasta poate fi o caracteristică utilă pentru gestionarea și revizuirea postărilor din zona de administrare, mai ales atunci când lucrați cu teme care se bazează în mare măsură pe imaginile prezentate.
Iată o previzualizare a acestui lucru în acțiune Martech Zone unde trec cu mouse-ul peste imaginea prezentată în al treilea rând:

Filtrați pentru postările fără imagine recomandată
O altă funcție pe care am adăugat-o a fost un filtru, astfel încât să pot identifica cu ușurință orice postare care nu avea un set de imagini prezentate.
function add_no_featured_image_filter() {
global $post_type;
// Check if the current post type is 'post' (you can change it to the desired post type)
if ($post_type == 'post') {
$selected = (isset($_GET['no_featured_image']) && $_GET['no_featured_image'] == '1') ? 'selected' : '';
echo '<select name="no_featured_image" id="no_featured_image">
<option value="" ' . $selected . '>All Posts</option>
<option value="1" ' . selected('1', $_GET['no_featured_image'], false) . '>No Featured Image</option>
</select>';
}
}
function filter_no_featured_image_posts($query) {
global $pagenow;
// Check if we are on the posts page and the filter is set
if (is_admin() && $pagenow == 'edit.php' && isset($_GET['no_featured_image']) && $_GET['no_featured_image'] == '1') {
$query->set('meta_key', '_thumbnail_id');
$query->set('meta_compare', 'NOT EXISTS');
}
}
add_action('restrict_manage_posts', 'add_no_featured_image_filter');
add_action('parse_query', 'filter_no_featured_image_posts'); Acest cod îmbunătățește funcționalitatea zonei de administrare WordPress prin adăugarea unui filtru personalizat pentru postări, care să permită utilizatorilor să filtreze postările în funcție de faptul că au un set de imagini prezentate sau nu. Iată o explicație a codului:
add_no_featured_image_filterfuncţie:- Această funcție creează un filtru derulant personalizat pentru postările din panoul de administrare WordPress.
- Începe prin verificarea tipului de postare curent. În acest cod, se verifică în mod special dacă tipul de postare curent este „post”, dar îl puteți schimba cu orice tip de postare dorit.
- Dacă tipul de postare se potrivește, se generează meniul derulant al filtrului.
- Meniul derulant al filtrului este un HTML
<select>element cu numele „no_featured_image” și ID-ul „no_featured_image”. - Conține două opțiuni:
- „Toate postările” (opțiune implicită): Această opțiune este selectată atunci când nu este aplicată nicio filtrare specifică.
- „Fără imagine recomandată”: această opțiune este selectată atunci când utilizatorul dorește să filtreze postările fără imagine prezentată.
- Selectarea acestor opțiuni este determinată pe baza parametrilor de interogare URL (
$_GET) și dacăno_featured_imageparametrul este setat la „1”. -
selectedfuncția este utilizată pentru a determina dacă o opțiune ar trebui să fie marcată ca „selectată” pe baza valorilor parametrilor de interogare. - Funcția ecou HTML pentru meniul derulant al filtrului.
filter_no_featured_image_postsfuncţie:- Această funcție modifică interogarea pentru a filtra postările în funcție de prezența sau absența unei imagini prezentate.
- Mai întâi verifică dacă ne aflăm în zona de administrare WordPress și pe pagina „edit.php”, care este pagina de gestionare a postărilor.
- Apoi verifică dacă
no_featured_imageparametrul de interogare este setat la „1”, indicând faptul că utilizatorul dorește să filtreze postările fără nicio imagine prezentată. - Dacă filtrul este activ, folosește
setmetoda de modificare a interogării: - Acesta stabilește
meta_keyla _id_miniatură, cheia folosită pentru a stoca ID-ul imaginii prezentate în metadatele postării. - Acesta stabilește
meta_comparela „NU EXISTĂ”, care filtrează efectiv postările în care meta-cheia „_thumbnail_id” nu există. Cu alte cuvinte, filtrează postările fără imagine prezentată. - Această funcție ajustează interogarea în funcție de selecția filtrului.
add_actionlinii:- Prima
add_actionlinia cârligeadd_no_featured_image_filterfuncția la acțiunea „restrict_manage_posts”. Această acțiune este apelată la afișarea secțiunii de gestionare a postărilor și vă permite să adăugați filtre și controale personalizate. - Al doilea
add_actionlinia cârligefilter_no_featured_image_postsfuncția la acțiunea „parse_query”. Această acțiune este apelată înainte ca interogarea să fie executată, permițându-vă să modificați interogarea pe baza filtrelor personalizate.
- Prima
Iată o previzualizare a filtrului:

Prin adăugarea acestor acțiuni, codul creează un filtru personalizat în lista de postări de administrare WordPress care vă permite să filtrați postările în funcție de faptul că au un set de imagini prezentate sau nu, facilitând gestionarea și organizarea postărilor.