Cum să creez un link către cel mai recent articol dintr-o categorie?
Cum pot crea un link către o categorie--mai exact către cel mai recent/actual articol din acea categorie?
Vreau să afișez articolul propriu-zis. Nu vreau să afișez pagina de categorie cu un singur articol listat în ea. O să fiu puțin naiv acum... :)
Dar în imaginația mea uneori sălbatică și fără limite, ceva de genul ar trebui să fie deja disponibil:
domain.com/nume-categorie/index.php?newest
sau
domain.com/categorie/nume-categorie/index.php?latest&wpusers=multumiti-acum
Am căutat și există multe soluții la nivel de PHP. Iar acest site nu mă lasă să postez mai mult de două linkuri aici, așa că îmi cer scuze pentru această limitare.
...și pentru referință, iată cele mai bune linkuri pe care le-am analizat (unele sunt 100% în context dar depășite, așa că nu știu dacă mai sunt valabile în WordPress):
Rezolvat
Link către cel mai recent articol dintr-o categorie?
Link către ultimul articol din categorie
Aveam încă vreo zece linkuri relevante...
Dar din nou, pare că nu ar trebui să existe DOAR o modalitate la nivel de PHP, funcții sau template pentru a face asta. Există atâtea elemente interesante de genul ?asta și &ceea ce se adaugă în URL, încât ar trebui să existe unul care să obțină cel mai recent articol.
Un bun exemplu este un link de playlist YouTube. Încarcă cel mai recent videoclip și permite tot felul de opțiuni precum &height &width &rel=0.
Sunt uimit că aceasta nu este o funcționalitate de bază în WordPress.
Momentan am mai multe variații de widget-uri care pot afișa un articol recent sau recomandat pe pagina principală cu un fragment și o imagine reprezentativă. Când cineva dă click pe titlu, imagine sau pe "Citește mai mult", sunt duși la acel articol.
Deci văd că widget-urile pot crea linkurile--dar nu sunt suficient de expert să înțeleg cum să folosesc același concept pentru a crea un link fără a afișa totul.

Nu este integrat în nucleul WordPress, dar este cu siguranță posibil de adăugat. Totuși, nu aș considera o idee bună să ai un singur articol disponibil la mai multe URL-uri, așa că o redirecționare este probabil cea mai bună soluție. Desigur, va fi nevoie de un pic de PHP, deoarece WordPress nu funcționează pe bază de magie sau voință.
În primul rând, conectăm o funcție la acțiunea parse_request
, care rulează atunci când WordPress determină cum să seteze variabilele de interogare pentru interogarea principală.
Următorul fragment de cod presupune că permalink-urile frumoase sunt activate și că URL-urile categoriilor au o bază de categorie. În aceste condiții, variabila de interogare category_name
este setată, așa că putem verifica dacă aceasta este o solicitare pentru o categorie. În același timp, verificăm și dacă este setată o variabilă GET latest
, astfel încât împreună acest cod va fi declanșat când un URL arată astfel:
Dacă aceste condiții sunt îndeplinite, interogăm un singur articol în numele categoriei solicitate, prin intermediul WP_Query
, care implicit ne va oferi cel mai recent articol din acea categorie.
Dacă este găsit un articol, redirecționăm către URL-ul acelui articol prin wp_redirect
.
Acest fragment de cod poate fi plasat în fișierul functions.php
al temei noastre:
function wpa_latest_in_category_redirect( $request ){
if( isset( $_GET['latest'] )
&& isset( $request->query_vars['category_name'] ) ){
$latest = new WP_Query( array(
'category_name' => $request->query_vars['category_name'],
'posts_per_page' => 1
) );
if( $latest->have_posts() ){
wp_redirect( get_permalink( $latest->post->ID ) );
exit;
}
}
}
add_action( 'parse_request', 'wpa_latest_in_category_redirect' );
