Cum să configurezi o pagină de categorie ca pagină principală a blogului
Vreau să folosesc o pagină de categorie ca pagină principală a blogului meu. Este posibil și cum pot face asta? Am încercat cu o regulă de rescriere în .htaccess dar nu a funcționat.
Actualizare
Eliminând toate celelalte soluții, rămâne cel puțin una: template_redirect:
function wpse121308_redirect_homepage() {
// Verifică indexul postărilor de blog
// NU pagina principală a site-ului,
// care ar fi is_front_page()
if ( is_home() ) {
wp_redirect( get_category_link( $id ) );
exit();
}
}
add_action( 'template_redirect', 'wpse121308_redirect_homepage' );
Va trebui să transmiți ID-ul corespunzător al categoriei $id, desigur.
Beneficiul redirecționării la template_redirect este că ai doar un singur proces de încărcare a șablonului, în loc de o a doua redirecționare după încărcarea șablonului.
Reține că poți interveni în proces chiar mai devreme, cum ar fi la pre_get_posts, economisind astfel o întreagă cerere de interogare:
add_action( 'pre_get_posts', 'wpse121308_redirect_homepage' );
Răspuns original
Dacă tot ce vrei este să afișezi o anumită categorie pe indexul postărilor de blog, poți realiza asta cu un simplu filtru al $wp_query principal la pre_get_posts:
function wpse1862_pre_get_posts( $query ) {
// Modifică doar interogarea principală
// pe pagina indexului postărilor de blog
if ( is_home() && $query->is_main_query() ) {
$query->set( 'category_name', 'category-slug-here' );
}
}
add_action( 'pre_get_posts', 'wpse1862_pre_get_posts' );
Dacă vrei să modifici șablonul, atunci poți face unul din două lucruri:
- Creează un
home.phpcu marcajul dorit - Folosește
template_redirectsauhome_templatepentru a forța WordPress să includă șablonul tăucategory.php.
Editare
Și dacă vrei ca URL-ul indexului postărilor de blog să arate astfel:
www.example.com/main
Atunci poți folosi o Pagină Principală Statică, și să atribui o pagină statică numită "main" ca index al postărilor tale de blog.
Și dacă acesta este obiectivul tău:
Chiar vreau redirecționarea. Vreau ca pagina principală (
http://example.com/) să redirecționeze către pagina categoriei (care arată cahttp://example.com/main/)
...atunci răspunsul acceptat este corect pentru cazul tău.
Îmi pare rău, dar nu. Chiar vreau redirecționarea. Vreau ca pagina principală (http://example.com/) să fie redirecționată către pagina de categorie (care arată ca http://example.com/main/), deoarece categoriile sunt 'Ediții' (pe țări) pe site, iar cea implicită este SUA (main). Aș fi vrut să pot edita descrierea recompensei pentru a clarifica acest lucru.
its_me
Poți edita întrebarea pentru a clarifica acest lucru. Și dacă întrebarea ta este atât de diferită de cea inițială, ar fi trebuit să pui o întrebare separată, în loc să plasezi o recompensă pe aceasta. Și: de ce vrei o redirecționare, mai exact? O redirecționare este o implementare, nu un scop final. Descrie ce anume încerci să obții. O redirecționare poate să fie sau nu singura sau cea mai bună implementare.
Chip Bennett
Pagina de categorie nu poate fi pagina principală (pur și simplu nu funcționează așa).
Există două alte opțiuni:
- Limitează pagina principală la articole dintr-o anumită categorie (aproape la fel, dar nu exact același lucru).
- Redirecționează pagina principală către pagina reală de categorie.
Deoarece se pare că ești de acord cu redirecționarea, încearcă următoarele. Creează un șablon home.php în directorul temei tale cu următorul conținut:
<?php
wp_redirect( 'http://www.siteultau.com/category/slug-categorie' );
?>
Probabil există o metodă mai elegantă de a face acest lucru folosind hook-uri, dar momentan nu-mi vine în minte nimic.
Mulțumesc, exact asta căutam. WP ar trebui să documenteze mai bine toate acele fișiere PHP speciale (cum ar fi maintenance.php).
2ndkauboy
Cea mai semantică metodă de a face acest lucru, în loc să folosești o redirecționare (care adaugă timp suplimentar de conexiune), este să creezi un șablon personalizat pentru pagină.
pagină nouă:
/* Template Name: Pagina Principală Nouă după Categorie */
<?php query_posts('cat_id'=>'3');?>
<--inserează bucla-->
Dacă dorești să redirecționezi către o anumită categorie, de exemplu categoria cu ID-ul 3, atunci copiază conținutul din category.php și creează un alt șablon numit category-3.php. După aceea:
* Template Name: Pagina de Start Nouă după Categoria 3*/
<?php query_posts('cat_id'=>'3');?>
<--inserează bucla-->
În WordPress, în secțiunea de Citire, trebuie să setezi pagina de start ca pagină de articole, iar pentru pagina principală să selectezi șablonul "Pagina de Start Nouă după Categoria 3".