2009-07-09 18 views
5

Sembra esserci un bug in una funzione PHP di Wordpress che lascia uno spazio bianco davanti al titolo della pagina generato da <?php echo wp_title(''); ?> Ho passato i documenti e i forum Wordpress su quella funzione senza alcuna fortuna.Riduci lo spazio bianco iniziale con PHP?

Lo sto utilizzando in questo modo <body id="<?php echo wp_title(''); ?>"> per generare un tag del corpo HTML con l'ID del titolo della pagina.

Quindi quello che dobbiamo fare è striscia che lo spazio bianco, in modo che il tag body assomiglia a questa <body id="mypage"> al posto di questo <body id=" mypage">

Lo spazio vuoto supplementare uccide il CSS che sto cercando di usare per evidenziare le voci di menu della pagina attiva. Quando aggiungo manualmente un tag body corretto senza lo spazio bianco, il mio CSS funziona.

Quindi, come potrei spogliare lo spazio bianco? Grazie, Mark


seconda parte della Epic

John, un dump esadecimale è stata una buona idea; mostra lo spazio bianco come due "20" spazi. Ma tutte le soluzioni che spogliavano spazi e spazi bianchi no.

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

mi dà < body id ="">

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

mi dà < body id =" mypage">

Puzzle. La radice del problema è che wp_title ha caratteri iniziali del titolo della pagina opzionale - che assomigliano a chevrons - che dovrebbero essere rilasciati quando l'opzione è falsa, e lo sono, ma lo spazio bianco viene scaricato.

C'è un opzione nucleare?


Sì, li ho provati entrambi prima; restituiscono ancora due spazi principali ...arrgg

risposta

36
  1. Striscia di tutti gli spazi dall'estremità sinistra del titolo:

    <?php echo ltrim(wp_title('')); ?> 
    
  2. Striscia di tutti gli spazi da entrambe le estremità:

    <?php echo trim(wp_title('')); ?> 
    
  3. Striscia di tutti gli spazi dall'estremità sinistra del titolo:

    <?php echo ltrim(wp_title(''), ' '); ?> 
    
  4. rimuovere il primo spazio, anche se non è il primo carattere:

    <?php echo str_replace(' ', '', wp_title(''), 1); ?> 
    
  5. Striscia solo un singolo spazio (non ritorno a capo, non scheda) all'inizio:

    <?php echo preg_replace('/^ /', '', wp_title('')); ?> 
    
  6. Spoglia il primo carattere, qualunque esso sia:

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

Aggiornamento

Dal Wordpress documentation on wp_title, sembra che wp_title visualizza il titolo stesso a meno che non si passa false per il secondo parametro, nel qual caso lo restituisce. In modo da provare:

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

Sicuramente ottieni il premio per scopo e varietà, e dovrebbero funzionare tutti. Ma qualcosa è stravagante con la funzione Wordpress e ho ancora spazi bianchi. Firebug lo mostra come spazio bianco, non come personaggio .... – markratledge

+0

La seconda parte dell'Epop è aggiunta alla mia domanda originale! – markratledge

+0

Provato entrambi prima; restituiscono ancora due spazi principali .... arrg. – markratledge

1
ltrim($str) 
1

solo per gettare in una certa varietà qui: trim

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

Grazie per queste informazioni! Ero nella stessa barca in cui avevo bisogno di generare id di pagina per scopi CSS in base al titolo della pagina e la soluzione di cui sopra funzionava magnificamente.

ho finito per avere un ulteriore ostacolo a che alcune pagine hanno titoli con spazi incorporati, così ho finito per la codifica questo:

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

aggiungere questo alla tua functions.php

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

dovrebbe funziona come un fascino

Problemi correlati