2010-04-17 11 views
2

J'essaie de raccourcir un titre wordpress à seulement le premier mot. Pour une page intitulée "John Doe", je veux avoir un sous-titre quelque part sur la page qui dit "About John", donc je veux juste obtenir le premier mot du titre.Obtenir le premier mot dans la chaîne php the_title WordPress

Existe-t-il un moyen de le faire avec PHP?

Merci!

MISE À JOUR:
Merci pour vos réponses! J'ai essayé le code suivant mais cela ne semble pas fonctionner. Il fait encore écho au titre complet. Aucune suggestion?

<?php 
    $title = the_title(); 
    $names = explode(' ', $title); 
    echo $names[0]; 
?> 

Répondre

8

ce qui est très facile :

<?php 
$title = get_the_title(); // This must be!, because this is the return - the_title would be echo 
$title_array = explode(' ', $title); 
$first_word = $title_array[0]; 

echo $first_word; 
?> 

ou

<?php 
$title = current(explode(' ', get_the_title())); 

echo $title; 
?> 

non testé, mais devrait fonctionner :)

Espérons que cela est utile :)

+2

Merci! Fonctionne parfaitement! La clé ici est d'utiliser get_the_title, the_title ne fonctionnera pas dans ce but. –

4
$first_word = current(explode(' ', $title )); 

ou dans votre fichier modèle

<?php echo current(explode(' ', $title )) ?> 

exploser par l'espace et obtenir premier élément dans le tableau résultant

+1

@Galen: +1 pour l'utilisation du 'current' :) – Sarfraz

+0

+1 pour m'avoir donné +1! – Galen

1
list($first_word) = explode(' ',$mystring); 
+0

+1 pour m'avoir enseigné 'list()'. –

+0

ajoutant un trim() le rend plus fiable. – Alexar

0

Vous pouvez faire comme ceci:

$words = explode(' ', $the_title_here); 
echo $words[0]; 
0

Je pense que vous rencontrez probablement certaines des idiosyncrasies de Wordpress ici. the_title(), par défaut, imprime simplement le titre et ne renvoie rien. Afin de lui faire retourner la chaîne de titre au lieu de l'imprimer, vous devez définir le troisième paramètre de the_title() à true.

//fetch the title string into a variable 
$title = the_title('','',true); 

Une fois que vous l'avez, alors vous pouvez vous débarrasser du premier mot et l'écho manuellement. Si vous utilisez PHP 5.3, vous pouvez accomplir cela en une ligne avec strstr():

echo strstr($title," ",true); 

Si vous avez PHP < 5.3, vous pouvez utiliser explode():

$parts = explode(' ',$title); 
echo $parts[0]; 
+0

Ou, vous pouvez utiliser 'strtok ($ title, '')' – salathe

0

Je vous conseille d'éviter cette chaîne entièrement l'analyse syntaxique et en utilisant une approche plus générale pour définir un titre secondaire pour votre page.

Vous devez utiliser le système Post Meta de WordPress pour définir un champ méta personnalisé avec un nom comme 'sous-titre', puis appeler ce champ dans votre modèle. De cette façon, vous pouvez décider page par page ce que vous voulez que le sous-titre soit, plutôt que d'être enfermé dans une relation spécifique entre le titre du post et le sous-titre. Cela ne vous rendra probablement pas la vie plus compliquée et la simplifiera considérablement.

Vous ajoutez une méta post à une page ou à un article en utilisant la section "Champs personnalisés" en bas de l'écran d'édition de post. Vous affichez ces champs dans votre thème comme celui-ci:

<?php echo get_post_meta($post->ID, $meta_key, 1);?> 

Évidemment, vous seriez probablement mieux vérifier qu'il existe d'abord, vous donner quelque chose comme ceci:

<?php if ($subtitle = get_post_meta($post->ID, $meta_key, 1)) 
    echo "<h3>$subtitle</h3>"; 
?> 

More details on the codex.

+0

J'ai oublié de mentionner que c'est une page pour un client. S'il y a une chose que ce client déteste, c'est la responsabilité de définir plus de paramètres dans l'admin. L'analyse de chaîne fait en sorte que je n'ai pas à lui faire remplir des informations supplémentaires. Le sous-titre est juste pour une page et fonctionne toujours de la même manière. Si le titre de la page est John Doe, le sous-titre indiquera "About John". Quoi qu'il en soit, le problème est pris en compte - merci pour votre aide! –

0

Il est une fonction de chaîne() qui peut être utilisée pour diviser une chaîne en chaînes plus petites (jetons) sur la base de certains séparateurs. Pour les besoins de ce fil, le premier mot (défini comme tout ce qui précède le premier caractère espace) de Test me more peut être obtenu par tokenizing la chaîne sur le caractère espace.

<?php 
$value = "Test me more"; 
echo strtok($value, " "); // Test 
?> 

Pour plus de détails et d'exemples, voir le strtok PHP manual page.