Tutorial WordPress affidabili, quando ne hai più bisogno.
Guida per principianti a WordPress
WPB Cup
25 Milioni+
Siti web che utilizzano i nostri plugin
16+
Anni di esperienza con WordPress
3000+
Tutorial WordPress di esperti

How to Add Sticky Posts in WordPress Custom Post Type Archives

Quando hai un sito web, probabilmente hai alcuni post più importanti di altri. Un modo per assicurarti che i tuoi visitatori vedano prima questi post è posizionarli in cima a una pagina.

La funzionalità dei post in evidenza di WordPress ti consente di farlo con i post standard. Ma se utilizzi tipi di post personalizzati sul tuo sito web, questi post in evidenza non appariranno in cima alla pagina come potresti aspettarti.

In questo articolo, ti mostreremo come aggiungere la funzionalità dei post in evidenza ai tuoi tipi di post personalizzati e visualizzarli nelle pagine di archivio dei tipi di post personalizzati.

How to Add Sticky Posts in WordPress Custom Post Type Archives

Perché rendere i post personalizzati di WordPress in evidenza?

Se crei contenuti per il tuo sito web WordPress con un formato diverso da un post o una pagina standard, allora stai probabilmente già utilizzando un tipo di post personalizzato. Ad esempio, se gestisci un sito di recensioni di libri, potresti aver creato un tipo di post Recensioni Libri.

Potresti voler posizionare i tuoi contenuti più importanti in cima all'archivio del tipo di post personalizzato. È uno dei modi migliori per mettere in risalto contenuti approfonditi e sensibili al tempo, nonché i tuoi post personalizzati più popolari.

Ma mentre WordPress offre una funzionalità per i post in evidenza, questa non è disponibile per i tipi di post personalizzati.

Diamo un'occhiata a come aggiungere una funzionalità in evidenza alle tue pagine di archivio dei tipi di post personalizzati.

Aggiungere post in evidenza nei tipi di post personalizzati

Innanzitutto, dovrai installare e attivare il plugin Sticky Posts – Switch. Per maggiori dettagli, consulta la nostra guida passo passo su come installare un plugin di WordPress.

Nota: Sebbene questo plugin non sia stato aggiornato da tempo, nei nostri test funziona ancora bene. Potresti voler leggere il nostro articolo su se utilizzare plugin non testati con la tua versione di WordPress.

Dopo l'attivazione, devi visitare la pagina Impostazioni » Sticky Posts – Switch per configurare il plugin. Seleziona semplicemente la casella accanto ai tipi di post personalizzati che desideri poter rendere sticky.

Per questo tutorial, selezioneremo il tipo di post 'Recensioni di libri'.

Visita Impostazioni » Post in evidenza - Pagina interruttore per configurare il plugin

Dopodiché, devi fare clic sul pulsante 'Salva modifiche' in fondo alla schermata.

Ora, quando visiti la pagina di amministrazione per quel tipo di post personalizzato, noterai una nuova colonna dove puoi rendere sticky i post. Tutto quello che devi fare è fare clic sulla stella accanto ai post che desideri mettere in evidenza.

Fai clic sulla stella accanto ai post che desideri rendere in evidenza

Hai reso sticky il post. Il problema è che WordPress mostra i post sticky solo nella home page. Successivamente, vedremo come visualizzare i post sticky nelle pagine di archivio.

Visualizzare i post sticky negli archivi dei tipi di post personalizzati

Per visualizzare i tuoi post sticky in cima alla pagina di archivio dei tuoi post personalizzati, devi creare un nuovo template.

Per fare ciò, dovrai utilizzare un client FTP o l'opzione del file manager nel pannello di controllo del tuo hosting WordPress. Se non hai mai usato l'FTP prima, potresti voler consultare la nostra guida su come usare l'FTP per caricare file su WordPress.

Devi accedere al tuo sito utilizzando il tuo client FTP o il file manager e quindi andare alla cartella /wp-content/themes/ILTUOTEMA/.

Ad esempio, se utilizzi il tema Twenty Twenty-One, dovrai navigare in /wp-content/themes/twentytwentyone/.

Successivamente, dovrai creare un nuovo file in quella cartella con un nome come archive-TIPODIPOST.php.

Ad esempio, se lo slug del tuo tipo di post personalizzato è 'recensionilibri', dovresti creare un nuovo file chiamato archive-recensionilibri.php.

Visita la cartella del tuo tema usando un client FTP

Dopo di che, dovrai trovare il file archive.php nella stessa cartella. Copia semplicemente il contenuto di archive.php e incollalo nel nuovo file che hai creato.

Il passaggio successivo richiede di aggiungere codice ai file del tuo tema. Se hai bisogno di aiuto per aggiungere codice al tuo sito, consulta la nostra guida su come aggiungere codice personalizzato in WordPress.

Quando sei pronto, devi aggiungere il seguente codice al file functions.php del tuo tema o a un plugin per snippet di codice come WPCode (consigliato):

function wpb_cpt_sticky_at_top( $posts ) {
  
    // apply it on the archives only
    if ( is_main_query() && is_post_type_archive() ) {
        global $wp_query;
  
        $sticky_posts = get_option( 'sticky_posts' );
        $num_posts = count( $posts );
        $sticky_offset = 0;
  
        // Find the sticky posts
        for ($i = 0; $i < $num_posts; $i++) {
  
            // Put sticky posts at the top of the posts array
            if ( in_array( $posts[$i]->ID, $sticky_posts ) ) {
                $sticky_post = $posts[$i];
  
                // Remove sticky from current position
                array_splice( $posts, $i, 1 );
  
                // Move to front, after other stickies
                array_splice( $posts, $sticky_offset, 0, array($sticky_post) );
                $sticky_offset++;
  
                // Remove post from sticky posts array
                $offset = array_search($sticky_post->ID, $sticky_posts);
                unset( $sticky_posts[$offset] );
            }
        }
  
        // Look for more sticky posts if needed
        if ( !empty( $sticky_posts) ) {
  
            $stickies = get_posts( array(
                'post__in' => $sticky_posts,
                'post_type' => $wp_query->query_vars['post_type'],
                'post_status' => 'publish',
                'nopaging' => true
            ) );
  
            foreach ( $stickies as $sticky_post ) {
                array_splice( $posts, $sticky_offset, 0, array( $sticky_post ) );
                $sticky_offset++;
            }
        }
  
    }
  
    return $posts;
}
  
add_filter( 'the_posts', 'wpb_cpt_sticky_at_top' );
 
// Add sticky class in article title to style sticky posts differently
 
function cpt_sticky_class($classes) {
            if ( is_sticky() ) : 
            $classes[] = 'sticky';
            return $classes;
        endif; 
        return $classes;
                }
    add_filter('post_class', 'cpt_sticky_class');

Questo codice sposta i tuoi post in evidenza in cima. Se il tuo tema utilizza la funzione post_class(), aggiunge anche una classe 'sticky' in modo da poter stilizzare i tuoi post in evidenza usando CSS.

Questo è l'aspetto dell'archivio del tipo di post personalizzato Recensioni di libri sul nostro sito demo. Prima di aggiungere il codice, il post in evidenza era il secondo nell'elenco.

Anteprima del post in evidenza nell'archivio del tipo di post personalizzato

Ora puoi stilizzare i tuoi post in evidenza utilizzando la classe .sticky nel foglio di stile style.css del tuo tema. Ecco un esempio:

.sticky { 
background-color:#ededed;
background-image:url('http://example.com/wp-content/uploads/featured.png');
background-repeat:no-repeat;
background-position:right top;
}

Ecco uno screenshot aggiornato dal nostro sito demo.

Anteprima dello stile CSS del post in evidenza

Guide Esperte sui Post in Evidenza

Speriamo che questo tutorial ti abbia aiutato a imparare come aggiungere post in evidenza negli archivi dei tipi di post personalizzati di WordPress. Potresti anche voler consultare altre guide relative ai post in evidenza in WordPress:

Se ti è piaciuto questo articolo, iscriviti al nostro canale YouTube per tutorial video su WordPress. Puoi anche trovarci su Twitter e Facebook.

Dichiarazione: Il nostro contenuto è supportato dai lettori. Ciò significa che se fai clic su alcuni dei nostri link, potremmo guadagnare una commissione. Vedi come è finanziato WPBeginner, perché è importante e come puoi supportarci. Ecco il nostro processo editoriale.

Il Toolkit WordPress Definitivo

Ottieni l'accesso GRATUITO al nostro toolkit - una raccolta di prodotti e risorse relative a WordPress che ogni professionista dovrebbe avere!

Interazioni del lettore

13 CommentsLeave a Reply

  1. Ho reso un tipo di post personalizzato "in evidenza" in un archivio in 15 minuti seguendo il tuo esempio. Super utile, grazie!

  2. Ciao,

    I’m banging my head right now….
    I’m using this plugin, it works fine, I can see it in the admin, and on the data base, I can see it update the sticky_posts in wp_options. But, when I try to use ‘post__not_in’ => get_option(‘sticky_posts’), it doesn’t filter any thing.
    So I try to var_dump(get_option(‘sticky_posts’)), and all I get is the id of the ‘normal post’, not the full list of id who I can see are in the wp_options/sticky_posts.

    Which mean if I try to use is_stiky in my loop, it only work in ‘normal’ post, not in CPT, which is logic, since get_option(‘sticky_posts’) is not working properly…. Any idea how I can fix that ? it’s driving me crazy :D

  3. You can use this Sticky Post Switch Plugin
    It also enables the featuere for custom post types

  4. Questo funziona bene, tuttavia lo rende sticky su ogni pagina di un archivio paginato. È così che funziona anche la funzionalità sticky integrata per i post standard?

  5. How could i set this up to work with a custom taxonomy archive page?
    I’ve tried adding ‘is_tax’ and ‘is_category’ instead of the is_post_type_archive() on line 4 of your function but it just breaks the page.

    I’m missing something obviously but can’t seem to find it.
    Any ideas?

  6. Grazie. È possibile adattare questo tutorial per visualizzare i post sticky su un modello di pagina specializzato, piuttosto che sulla pagina degli archivi? Se sì, come potrei realizzarlo?

    • Se la tassonomia personalizzata visualizza tipi di post con supporto per i post in evidenza, allora puoi visualizzarla nello stesso modo. Invece del template archive-post-type.php, apporta le modifiche nel template taxonomy-custom-taxonomy.php.

      Amministratore

  7. Grazie. Questo è utile.
    Ma se fosse possibile aggiungere la funzionalità sticky ai tipi di post personalizzati senza usare un plugin?
    Puoi condividere lo snippet?

Lascia una risposta

Grazie per aver scelto di lasciare un commento. Tieni presente che tutti i commenti sono moderati secondo la nostra politica sui commenti, e il tuo indirizzo email NON verrà pubblicato. Si prega di NON utilizzare parole chiave nel campo del nome. Avviamo una conversazione personale e significativa.