2011-02-07 14 views

Respuesta

20

is_front_page() es lo que quiere.

Supongo que, por el hecho de que is_home() no funciona, su página de inicio es estática, según la configuración en wp-admin.

is_home() devuelve cierto en su página principal de blog, mientras que is_front_page() devuelve verdadero en cada página que se define como su página principal, feed o no.

De códice:

condicionar esto etiqueta comprueba si la página principal es un postes o una página. Esta es una función booleana, lo que significa que devuelve TRUE o FALSE. Devuelve VERDADERO cuando se muestra la página principal del blog y la pantalla Configuración-> Lectura-> Delantero se configura como "Sus últimas publicaciones", o cuando se configura como "Una página estática" y el valor de "Página principal" es Página actual que se muestra.

16

acabo de hacer lo siguiente:

if ($_SERVER["REQUEST_URI"] == '/') { } 

Funciona y no complicar las cosas, especialmente como is_front_page() y is_home() no siempre funcionan como usted esperaría.

+0

Este parece ser el único cheque que funciona de manera confiable si tiene una categoría como portada. –

-1

is_home() es el camino a seguir.

¿Has probado este método y no funciona? Si es así, generalmente tiene algo que ver con la configuración de mod_rewrite o la configuración de wordpress.

+0

No es el caso. –

0

En muchas situaciones, un sitio de Wordpress puede tener is_home y is_frontpage tanto eval como true en la página de inicio REAL y también en la página principal del blog. Después de construir sitios en Wordpress durante 4 años, esto todavía me molesta.

Por ejemplo, si usted tiene un sitio donde tiene sus últimas publicaciones en su página de inicio con tal vez un control deslizante o algunos otros elementos de la página de inicio centradas, y tener otra página del blog, a continuación, is_frontpage y is_home a los dos para eval tan cierto en ambas páginas . Así que Wordpress no tiene una función condicional clara para la página de inicio verdadera, al menos como la mayoría de las personas piensa en la página de inicio de un sitio web.

Así que estoy de acuerdo con Liam que si usted entra en una situación confusa, algo así como si ($ _SERVER [ "REQUEST_URI"] == '/') {}

es más fiable.

2

Con veinte diez utilizo:

<?php 
if ($_SERVER["REQUEST_URI"] == '/') { ?> 
    <h1 class="site-title"><?php bloginfo('name'); ?></h1> 
    <h2 class="site-description"><?php bloginfo('description'); ?></h2> 
<?php 
} else { ?> 
    <p class="site-title"><?php bloginfo('name'); ?></p> 
    <p class="site-description"><?php bloginfo('description'); ?></p> 
<?php } ?> 

funciona como un encanto ... $ _SERVER es la que siempre uso y siempre funciona.

0

Encontrado esta pregunta hace unos dos años, se trata de una configuración bastante específica:

quería cargar un módulo (facetas motor de búsqueda) en la página principal y no en cualquier otra página. El problema fue que tuvo que ser bootstraped en init para funcionar correctamente y ser rápido.

Normalmente, debería haberme conformado con Liam Galvin 's answer.
Pero no soy fan de fuerza bruta soluciones. Así que eché un vistazo a is_front_page() para ver por qué devuelve false durante init. Y es bastante simple: se basa en $wp_query, que no está configurado en ese punto.

Así que escribió debajo de la función, (y lo utilizó desde entonces), que combina lo mejor de ambos mundos:
fuerza bruta antes $wp_query se fija (si alguna vez lo necesitan) y manera WP adecuada después:

function on_front_page() { 
    global $wp_query; 

    if (! isset($wp_query)) { 
    return $_SERVER["REQUEST_URI"] == '/'; 
    } else { 
    return $wp_query->is_front_page(); 
    } 
} 

no es más ni menos que una variante de is_front_page(), con la respuesta de Liam como de reserva. No se ha encontrado con colisiones de nombres todavía, pero puede cambiar el nombre si considera que su nombre es demasiado común.

Hecho es que lo copié/pegué en cada proyecto de WP desde entonces y no me ha fallado una vez, así que pensé en compartirlo.

0

desde fuera del bucle:

if(get_option("page_on_front") == $post->ID){ 
    //do front page stuff here 
} 
Cuestiones relacionadas