Ottenere una pagina con post di una categoria in WordPress ed eliminarla dalla index

Propongo a tutti i lettori una soluzione in WORDPRESS per ottenere un pagina con i post appartenenti ad una categoria e allo stesso tempo non far visualizzare tali post nella home del sito

Ho ottenuto questa soluzione dopo vari tentativi e dopo aver ricercato con esito negativo plug-in adatti a questo scopo. Nel mio caso ho gestito la sezione paper-toy di questo sito. Come potete vedere se aprite tale pagina, dal menù, vengono visualizzati alcuni articoli che invece nella home non vedrete.

Per prima cosa ho creato un nuova categoria e ho preso nota dell’id di questa categoria, successivamente ho creato un template di pagina seguendo la guida a in inglese di wordpress. GUIDA TEMPLATE PAGINA.

Quindi ho creato un nuovo file che verrà caricato sul server nella cartella: directoryBlog/wp-content/themes/nomeTema con il seguente contenuto. In particolare ho copiato il codice base che è presente, per la visualizzazione dei post, nella pagina index o anche nell’ archive.php alla quale ho effettuate opportune modifiche che descriverò in seguito.

<?php
/*
Template Name: Paper Toy
*/
?>
<?php get_header(); ?>
<div id="left-wrap">
<div id="content">
<div class="page">
<?php
if(!empty($_GET['paged']))
$paged = $_GET['paged'];
else $paged=1;
query_posts('cat=403&paged='.$paged) ?>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<h2><?php the_title(); ?></h2>

<div class="entry">
<?php the_content(__('Read the rest of this entry »','wp_multiflex')); ?>
</div>
<?php link_pages('<p>'.__('Pages:','wp_multiflex'), '</p>', 'number'); ?>
<p class="suffix">
<?php edit_post_link(__('Edit','wp_multiflex'), '', ' | '); ?>  <?php comments_popup_link(__('No Comments »','wp_multiflex'), __('1 Comment »','wp_multiflex'), __('% Comments »','wp_multiflex')); ?>
</p>
<?php endwhile; endif; ?>

<div class="bottomnavigation">
<div class="alignleft"><?php next_posts_link(__('« Previous Entries','wp_multiflex')) ?></div>
<div class="alignright"><?php previous_posts_link(__('Next Entries »','wp_multiflex')) ?></div>
</div>
<p class="Modifica Pagina"><?php edit_post_link(__('Edit','wp_multiflex'),'',''); ?></p>
</div><!-- Close id="page" -->

</div><!-- Close id="content" -->
<?php get_sidebar(); ?>
</div> <!-- Close id="left-wrap" -->
<?php include (TEMPLATEPATH . '/right-sidebar.php'); ?>
<?php get_footer(); ?>

Le righe aggiunte, e quindi non copiate dal file index.php, sono solo 4 righe:

if(!empty($_GET[‘paged’]))
$paged = $_GET[‘paged’];
else $paged=1;
query_posts(‘cat=403&paged=’.$paged) ?>

Le prime 3 di queste servono a gestire la selezione dei post nella varie pagine quando ci si inizia a spostare su vecchi articoli postati nella stessa categoria. Quindi per prima cosa ho inizializzato la variabile $paged con il numero di pagina che opzionalmente viene passato in automatico attraverso l’url, se così non è, perchè si è fatto accesso alla pagina PAPER-TOY dal menu, la inizializzo a 1.

Successivamente seleziono i post, con la funzione query_posts,(guida query_posts), della sola categoria “403” che corrisponde appunto a quella di cui voglio visualizzare i post e poi gli ho segnalato da quale pagina partire.

Successivamente ho creato una pagina bianca normale alla quale ho associato attraverso l’apposita sezione/menu dell’interfaccia di wordpress il template creato.

Infine per non permettere di visualizzare i post di una categoria nella home del sito ho modificato il file index.php del template usato.

In particolare ho aggiunto 2 righe:

dopo la riga, di solito simile a tutti i temi:

<?php while (have_posts()) : the_post(); ?>

la riga:

<?php if ( !(in_category(‘403’)) ) { ?>

e prima della riga:

<?php endwhile; ?>

la riga:

<?php } ?>

Queste righe servono appunto a non eseguire le istruzioni contenute tra le 2 se il post appartiene appunto alla categoria della quale non si vogliono vedere gli articoli.

Se avete altre soluzioni, magari più semplici, fatemi sapere!!

Grazie a tutti!!!

28 commenti su “Ottenere una pagina con post di una categoria in WordPress ed eliminarla dalla index”

  1. dal menu di amministrazione :
    Gestione / categorie /

    baste ke ti posizioni con il puntatore del mouse su una categoria, senza cliccare e vedi l ‘url che compare in basso alla finestra del browser. Sarà qlcs del tipo

    NOME_SITO/wp-admin/categories.php?action=edit&cat_ID=12

    in questo caso la categoria è 12

  2. Ciao a tutti e grazie per aver postato questa soluzione.
    Pero’ io con WP 2.6 ho un problema.
    Ho impostato di bisualizzare solo 5 post per pagina. Ho creato una categoria news ed ho inserito il codice dentro index.pxp per non visualizzare i post di news nella pagina principale. funziona tutto bene se inserisco meno di 5 post nella categoria news, sotto questo numero vedo i post news solo sotto la categoria news, ma dal quinto post news in poi la home page mi appare completamente vuuota di post, appare solo la barra di destra e la freccetta per tornare al post precedente.
    A cosa puo’ essere dovuto questo problema?
    La cosa strana e’ che se eliminando il quinto post dalla categoria news, tutto ritorna a funzionare correttamente.
    Succede anche a voi?

    Giorgio

  3. Forse ho capito un po di piu’.
    Ogni volta che inserisco un post nella categoria “News” (che non viene visualizzato nella main page, sparisce un post dalla main page. Quindi penso che ci sia un contatore che comunque quando arriva a 5 (non importa in che categoria il post e’) non visualizza piu’ niente.

    Qualcuno sa come usare e dove trovare questo contatore?

    Giorgio

  4. Ciao, scusami, ho scritto un po difretta ieri perche’ stavo sperimentando diverse soluzioni.

    Io non tentavo di creare pagine con i post di una categoria, solo di rimuovere dalla home page i post della categoria News.
    Usando i comandi da te descritti nel tuo articolo, quelli da inserire dentro il loop, funzionava tutto a dovere ma (nel mio caso che ho parecchi plugin abilitati) ogni volta che inserivo un post nella categoria “News” non veniva visualizzato un post non “News” nella main page. In pratica, se io setto wordpress di visualizzare 5 post a pagina, inserisco 5 post non “News” e vengono visualizzati nella main. Poi inserisco un post “News” che correttamente non e’ visualizzato nella main page, ma solo nella categoria “News”, ma allo stesso tempo dalla main page sparisce un post precedentemente visualizzato. Quindi pensavo che wordpress ha un contatore dentro il loop che pero’ non viene decrementato se io gli dico di non visualizzare un certo numero di post nella main.

    Come ho scritto, io ho parecchi plugin attivati nel mio blog, cosi’ forse mi ritrovo questo effetto collaterale non voluto.

    Grazie al tuo articolo sono riuscito comunque ad arrivare alla soluzione voluta ed e’ una delle pochissime discussioni presenti in rete.

    Grazie

    Giorgio

  5. Ciao a tutti!
    e complimenti per questa guida.
    Infatti pensavo di ottenere con questa guida qualcosa di simile:
    Io voglio creare una sorta di “area Riservata” accessibile solo a pochi utenti, a cui fornirò la password!Creando una pagina/sezione protetta, dove all’interno ci sono link e info non per tutti.
    Premetto: provato con .htaccess ma nulla.
    provato con PSW di default di WP, ma nulla
    Uso WP 2.5.1 in una Intranet Lan.
    Grazie help me!

  6. UFFI:(
    allora ho provato il plugin (interfaccia molto intuitiva), facendo varie prova, tentativi su tutte le pagine o categorie..ma nulla!
    Da premettere che và in contrasto con “include page” (nel senso che fà vedere tutte le pagine, invece io con il plugin ho creato delle pagine madri e sotto pagine).
    poi anche mettendo check all page cmq non và, anche perchè non fà immetere password o cose simili!
    pensavo che avevo trovato la soluzione!! 🙁

  7. Ok allora:
    WP 2.5.1 sito in intanet lan con pagina statica.

    Il mio problema, è creare una pagina/sezione con accesso riservato a pochi e quindi con psw.
    Siccome non mi prende la protezione standard di WP (cioè immetto la psw, ma come se non riconoscesse la protezione di default delle pagine di WP).
    il plugin (CaPa), sembrava ok, ma in realtà non funzionava..non mi faceva nessuna protezione..
    e poi andava in contrasto con il plugin “include page” che uso per avere delle pagine madri e sub page (include ed esclude le pagine da visualizz tramite ID).
    eventulmente creando una nuova categoria, poi quando scrivo un post.. mi và a sostituire l’articolo (statico che fà da home).
    Spero di essere stato chiaro…

    cmq grazi a tutti.. ma aiutooo

  8. ho fatto un bel casino!!!! aiutoooo
    pensavo di aver trovaro il plugin x me:
    user_access_manager
    dopo averlo installato.. mi dava errore
    user_acces_manager.php line 1317
    provo a cancellare questa..
    la fine!!
    tutto il web server (phpmyadmin-localhost) mi richiede un user&password.. le ho provate tutte (anche la root) ma niente!!!!!!!!
    questo è l’errore di autenticazione:

    Il server localhost all’indirizzo WP-Files richiede un nome utente e una password.
    Authorization Required
    401 This server could not verify that you are authorized to access the document requested. Either you supplied the wrong credentials (e.g., bad password), or your browser doesn’t understand how to supply the credentials required!
    grazie

  9. ho risolto questo casino.. infatti mi aveva generato l .htaccess e .htpasswd in localhost… e mi è bastato cancellarlo! wow meno male…il PC ha rischiato di fare un bel volo!
    cmq resta sempre il mio problema iniziale!
    ma xchè cosa genera che non mi prende la PSW di default della pagine (che avrei risolto)..è come se non la prendesse.. (wp-pass)..!!!?
    grazie

Lascia un commento