2009-07-09 4 views
5

Il semble y avoir un bug dans une fonction PHP Wordpress qui laisse des espaces devant le titre de la page générée par <?php echo wp_title(''); ?> J'ai passé par les docs et les forums Wordpress sur cette fonction sans aucune chance.Couper l'espace blanc avec PHP?

Je l'utilise de cette façon <body id="<?php echo wp_title(''); ?>"> afin de générer une balise de corps HTML avec l'ID du titre de la page.

Donc ce que je dois faire est une bande que l'espace blanc, de sorte que l'étiquette du corps ressemble à ceci <body id="mypage"> au lieu de ce <body id=" mypage">

L'espace extra blanc tue le CSS J'essaie d'utiliser pour mettre en évidence des éléments de menu de la page active. Lorsque j'ajoute manuellement une balise de corps correcte sans l'espace blanc, mon CSS fonctionne.

Alors comment est-ce que je dépouillerais l'espace blanc? Merci, Mark


La deuxième partie de l'épopée

John, Hex Dump était une bonne idée; il montre l'espace blanc comme deux "20" espaces. Mais toutes les solutions qui dépouillent les espaces principaux et les espaces blancs ne le sont pas.

Et, <?php ob_start(); $title = wp_title(''); ob_end_clean(); echo $title; ?>

me donne < body id ="">

et <?php ob_start(); $title = wp_title(''); echo $title; ?>

me donne < body id =" mypage">

Puzzle. La racine du problème est que wp_title a des caractères d'en-tête de titre de page optionnels - qui ressemblent à des chevrons - qui sont censés être supprimés lorsque l'option est fausse, et ils le sont, mais des espaces blancs y sont déversés.

Y at-il un option nucléaire?


Yup, les a essayé tous les deux avant; ils renvoient toujours deux espaces principaux ...arrgg

Répondre

36
  1. Strip tous les espaces de l'extrémité gauche du titre:

    <?php echo ltrim(wp_title('')); ?> 
    
  2. Strip tous les espaces de chaque extrémité:

    <?php echo trim(wp_title('')); ?> 
    
  3. Strip tous les espaces à partir de la fin du titre:

    <?php echo ltrim(wp_title(''), ' '); ?> 
    
  4. Retirez le premier espace, même si ce n'est pas le premier caractère:

    <?php echo str_replace(' ', '', wp_title(''), 1); ?> 
    
  5. Strip seulement un seul espace (pas de saut de ligne, non tab) au début:

    <?php echo preg_replace('/^ /', '', wp_title('')); ?> 
    
  6. Dénuder le premier caractère, quel qu'il soit:

    <?php echo substr(wp_title(''), 1); ?> 
    

Mise à jour

De Wordpress documentation on wp_title, il semble que wp_title affiche le titre lui-même, sauf si vous passez false pour le second paramètre, auquel cas il renvoie. Essayez donc:

<?php echo trim(wp_title('', false)); ?> 
+2

Vous obtenez certainement le prix pour la portée et la variété, et ils devraient tous fonctionner. Mais quelque chose est farfelu avec la fonction Wordpress et j'ai encore des espaces. Firebug le montre comme un espace, pas n'importe quel personnage ... – markratledge

+0

La deuxième partie de l'Epic est clouée sur ma question originale! – markratledge

+0

Essayé les deux avant; ils renvoient toujours deux espaces principaux .... arrg. – markratledge

1

juste jeter dans une variété ici: trim

<body id="<?=trim(wp_title('', false));?>"> 
1

Merci pour cette info! J'étais dans le même bateau en ce sens que j'avais besoin de générer des identifiants de pages à des fins de CSS sur la base du titre de la page et la solution ci-dessus a fonctionné à merveille.

Je fini par avoir un obstacle supplémentaire que certaines pages ont des titres avec des espaces intégrés, donc j'ai fini coder ceci:

<?php echo str_replace(' ','-',trim(wp_title('',false))); ?> 
0

ajouter à votre functions.php

add_filter('wp_title', create_function('$a, $b','return str_replace(" $b ","",$a);'), 10, 2); 

devrait travailler comme un charme