web-dev-qa-db-fra.com

WordPress wp_title vierge sur la page d'index

Je suis nouveau sur WordPress et viens d'installer la version 3.3.1.

J'ai fait quelques recherches sur Google à propos de cette question et j'ai trouvé des réponses, mais elles étaient pertinentes pour la version 2.7 et étaient âgées de 2 à 3 ans.

En gros, la fonction wp_title fonctionne correctement sur toutes les pages, sauf sur ma page d’accueil, où elle est vide et où je n’obtiens aucun titre. Je pourrais simplement coder le titre en dur mais je préférerais ne pas le faire.

Ligne de code coupable: 

<title><?php wp_title ( '| So Fresh n\' So Clean', true,'right' ); ?></title>

Je n'ai rien trouvé à propos de ce problème dans 3.3.1, alors j'ai clairement fait quelque chose de mal.

36
nmford

Voici ce que je lis dans Codex :

Si vous utilisez une page d’accueil personnalisée avec des boucles et des éléments personnalisés, vous aura un wp_title vide. Voici un bon coup pour ajouter le description/slogan à l'endroit wp_title sur la page d'accueil:

<title><?php bloginfo('name'); ?> | <?php is_front_page() ? bloginfo('description') : wp_title(''); ?></title>

Utilisez donc is_front_page() pour obtenir le titre sur la page d’accueil, comme indiqué dans le code ci-dessus.

99
Amna Ahmed

Mais si vous utilisez une page d'accueil statique, voici le code:

<title><?php bloginfo('name'); ?> &raquo; <?php is_front_page() ? bloginfo('description') : wp_title(''); ?></title>
13
danielgc

Mise à jour Pour les versions de WordPress (> = 4.4) 

Essaye ça

function some_name(){
    add_theme_support( 'title-tag' );
}

add_action( 'after_setup_theme', 'some_name' );

Faites-le dans functions.php et supprimez la balise 'title' de la tête ...

9
waLL e

À partir de la réponse d’Amna, j’ai trouvé le code suivant qui devrait afficher le titre de la page s’il en existe un, suivi du nom du site.

<?php wp_title(' - ',TRUE,'right'); bloginfo('name'); ?>

Résultats de publication/page: "Titre de la page - Nom du site"

Sorties de la page d'accueil: "Nom du site"


Évidemment, cela peut également être échangé pour afficher le nom du site en premier.

<?php bloginfo('name'); wp_title(' - '); ?>

Résultats de publication/page: "Nom du site - Le titre de la page"

Sorties de la page d'accueil: "Nom du site"


Ceci peut également être combiné avec une condition pour afficher la description du site lors de l'affichage de la page d'accueil.

<?php bloginfo('name'); echo ' - '; is_front_page() ? bloginfo('description') : wp_title(''); ?>

Résultats de publication/page: "Nom du site - Le titre de la page"

Résultats de la page d'accueil: "Nom du site - Description du site"

7
ian.pvd

Pour une recherche google sur wordpress wp_title vide, il s'agit du premier résultat. Alors j'ai pensé que je pourrais partager la solution la plus élégante pour cela.
Dans functions.php, ajoutez un filtre pour wp_title.

function custom_wp_title( $title, $sep ) {
    if ( is_feed() ) {
        return $title;
    }

    global $page, $paged;

    // Add the blog name
    $title .= get_bloginfo( 'name', 'display' );

    // Add the blog description for the home/front page.
    $site_description = get_bloginfo( 'description', 'display' );
    if ( $site_description && ( is_home() || is_front_page() ) ) {
        $title .= " $sep $site_description";
    }

    // Add a page number if necessary:
    if ( ( $paged >= 2 || $page >= 2 ) && ! is_404() ) {
        $title .= " $sep " . sprintf( __( 'Page %s', '_s' ), max( $paged, $page ) );
    }

    return $title;
}
add_filter( 'wp_title', 'custom_wp_title', 10, 2 );
3
BogdanD

Le nouveau hack du Codex est le suivant:

<title><?php wp_title(''); ?></title>

Puis dans votre "functions.php" à partir du fichier de thème:

add_filter( 'wp_title', 'baw_hack_wp_title_for_home' );
function baw_hack_wp_title_for_home( $title )
{
  if( empty( $title ) && ( is_home() || is_front_page() ) ) {
    return __( 'Home', 'theme_domain' ) . ' | ' . get_bloginfo( 'description' );
  }
  return $title;
}
1
ed-ta

J'utilise celui-ci et il n'a jamais échoué:

    function pageTitle($echo){
        $title = "";

        global $paged;
        if (function_exists('is_tag') && is_tag()) {        
            $title .= single_tag_title(__("Tag Archive for &quot;" , 'circle'),false); 
            $title .= '&quot; - '; 
        }
        elseif (is_archive()) {
            $title .= wp_title('',true); 
            //$title .= __(' Archive - ' , 'circle');
            $title .= __(' - ' , 'circle');

        }
        elseif (is_search()) {
        $title .= __('Search for &quot;' , 'circle') . esc_html(get_search_query()).'&quot; - '; 
        }
        elseif (!(is_404()) && (is_single()) || (is_page())) {
            $title .= wp_title('',true); 
            $title .= ' - '; 
        }
        elseif (is_404()) {
            $title .= __('Not Found - ' , 'circle'); 
        }
        if (is_home()) {
            $title .= get_bloginfo('name'); 
            $title .= ' - '; 
            $title .= get_bloginfo('description'); 
        }
        else {
            $title .= get_bloginfo('name'); 
        }
        if ($paged>1) {
            $title .= ' - page ' . $paged; 
        }

        if ( !$echo ) return $title;
        echo $title;
    }

Notez qu'il contient des domaines de traduction que vous voudrez peut-être modifier.

1
pie6k

Vous pouvez également mettre quelque chose comme ceci dans votre balise de titre: 

<?php 
    if (is_front_page()) { ?> 
        Home | <?php bloginfo('description'); 
    } else {
        wp_title('|', 'true', 'right'); bloginfo('description');
    } ?>
0
Kirby

Mes 2 cents pour le thème "misty lake" qui n'avait pas de titre sur la page d'accueil et ajoutait un titre incorrect sur toutes les autres pages.

Il suffit de supprimer la ligne suivante de header.php pour résoudre le problème, car Wordpress injecte désormais le tag par lui-même:

<title><?php wp_title( '|', true, 'right' ); ?></title>

J'ai consulté la page suivante - https://make.wordpress.org/themes/2015/08/25/title-tag-support-now-required/

0
Misha Reyzlin

J'utilise cette méthode dans mon site WordPress 

//Meta Header
if ( ! function_exists( 'dima_wp_title' ) ) :
  function dima_wp_title( $title ) {

    if ( is_front_page() ) {
      return get_bloginfo( 'name' ) . ' | ' . get_bloginfo( 'description' );
    } elseif ( is_feed() ) {
      return ' | RSS Feed';
    } else {
      return trim( $title ) . ' | ' . get_bloginfo( 'name' ); 
    }

  }
  add_filter( 'wp_title', 'dima_wp_title' );
endif;
0
Adel

En retard à la conversation ...

Toutefois, si vous souhaitez utiliser le titre réel de la page que vous utilisez pour la page de couverture statique, vous pouvez utiliser les éléments suivants:

if (is_front_page())
{
    $title = single_post_title( '', false );
}

Bien que, dans la source actuelle de wp_title (), il existe ce qui suit, vous pouvez le désactiver spécifiquement pour la page de couverture statique:

if ( is_single() || ( is_home() && ! is_front_page() ) || ( is_page() && ! is_front_page() ) ) {
    $title = single_post_title( '', false );
}

Je soupçonne qu'il y a une bonne raison à cela. Alors, procédez avec prudence.

0
Jahmic