Determina se la pagina è la pagina dei post


18

Nella pagina Impostazioni di lettura è possibile impostare una "Pagina iniziale" e una "Pagina post". Puoi verificare se la pagina correnteis_front_page();

Esiste una funzione simile per la "Pagina dei post". Ho notato che is_page();non funziona per questa pagina speciale.

Grazie

Risposte:


34

is_home() controlla la "Pagina Messaggi", nonostante il nome della funzione un po 'confuso.


grazie, pensavo di averli controllati tutti, ma immagino di no ...
Mike

3
Che dire $wp_query->is_posts_page?
Weston Ruter,

@WestonRuter ha la risposta corretta alla domanda.
Il J

6

Wordpress viene fornito con 7 tipi di pagine di modello principali, che possono essere determinati in questo modo

if ( is_main_query() ) {
    // Error
    if ( is_404() ) {
        ;
    }
    // Front page
    if ( is_front_page() ) {
        ;
    }
    // Archive
    if ( is_archive() ) {
        ;
    }
    // Comments popup
    if ( is_comments_popup() ) {
        ;
    }
    // Search
    if ( is_search() ) {
        ;
    }
    // Singular
    if ( is_singular() ) {
        ;
    }
    // Home - the blog page
    if ( is_home() ) {
        ;
    }
}

is_home ti dice che hai la pagina del blog.


1

"Pagina dei post" è di solito un archivio di:

  • post di una categoria
  • post di un tag
  • post di una data (anno, mese ...)
  • post dell'archivio principale

Ognuno di questi può essere verificato da uno dei tanti tag condizionali come is_category() is_tag() is_date() is_archive() E molti altri ancora. Per una migliore comprensione, vai al codice http://codex.wordpress.org/Conditional_Tags


0

Per prima cosa controlla le cose relative ai blog come autore, tag, tipo di post

function is_blog () {
        global  $post;
        $posttype = get_post_type($post );
        return ( ((is_archive()) || (is_author()) || (is_category()) || (is_home()) || (is_single()) || (is_tag())) && ( $posttype == 'post')  ) ? true : false ;
  }

Ora controlla e restituisci qualcosa che vuoi avere

function check_post_type(){
    $postType;
    if (is_blog())
      {
         $postType = 'I am post';
      } else
       {
          $postType = 'I am page';
       };
    return $postType;
  }

Usalo come Boss <?php echo check_post_type();?>

Grazie a Wes Bos


0

TL; DR

Caso A . Non è necessario determinarlo all'interno del file modello principale (index.php) perché è il modello predefinito per esso [1] .

Caso B . Per determinarlo all'interno di un modello di pagina (es: page.php), è sufficiente verificarlo in questo modo:

get_option( 'page_for_posts' ) == get_the_ID()

Dettagli

Ho letteralmente scavato il codice sorgente [2] di esso solo per essere in grado di sapere come wordpress fa il controllo del valore. Si scopre che sta usando l'istruzione get_option( 'page_for_posts' )per conoscere l'ID del post del valore selezionato della pagina Posts .

Quindi sì, per questo scopo, non esiste una funzione di controllo ufficiale simile a quella is_front_page().

Finché conosci l'ID della pagina che hai selezionato, puoi usarlo per il processo di verifica.

Riferimenti

  1. Codice WordPress, Sviluppo temi, codex.wordpress.org/Theme_Development

  2. Codice sorgente delle impostazioniImpostazioni di lettura , github.com/WordPress/.../wp-admin/options-reading.php

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.