Cum să configurezi o pagină de categorie ca pagină principală a blogului

15 sept. 2010, 20:24:24
Vizualizări: 15.1K
Voturi: 5

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.

0
Toate răspunsurile la întrebare 4
3
13

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:

  1. Creează un home.php cu marcajul dorit
  2. Folosește template_redirect sau home_template pentru a forța WordPress să includă șablonul tău category.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ă ca http://example.com/main/)

...atunci răspunsul acceptat este corect pentru cazul tău.

5 nov. 2013 16:17:53
Comentarii

Î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 its_me
5 nov. 2013 16:22:19

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 Chip Bennett
5 nov. 2013 16:23:21

Chip, motivul/cazul de utilizare poate fi diferit, dar întrebarea este exact aceeași, motiv pentru care am evitat o altă întrebare. Și după cum poți vedea, un răspuns similar a fost deja postat (deși folosind query_posts, o metodă mai puțin recomandată).

its_me its_me
5 nov. 2013 16:24:53
2

Pagina de categorie nu poate fi pagina principală (pur și simplu nu funcționează așa).

Există două alte opțiuni:

  1. Limitează pagina principală la articole dintr-o anumită categorie (aproape la fel, dar nu exact același lucru).
  2. 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.

15 sept. 2010 20:38:12
Comentarii

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 2ndkauboy
15 sept. 2010 21:59:46

Doar să fii conștient că acest lucru aproape dublează încărcarea serverului pentru pagina principală. Nucleul WP rulează de două ori. Ar putea fi un factor important dacă ai un număr considerabil de vizitatori.

Rarst Rarst
15 sept. 2010 22:06:33
1

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-->
6 ian. 2012 22:39:02
Comentarii

Da, acesta este cel corect. Încarcă acest șablon în tema ta. Adaugă o pagină nouă, setează șablonul la "New Homepage by Cat". Apoi mergi la setări > citire > alege 'o pagină statică' > pagină de start = New Homepage by Cat...

și ai terminat...

inTOWN inTOWN
7 nov. 2013 20:30:06
0

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".

8 nov. 2013 12:59:14