Comment diviser le_titre et insérer une balise span
3 réponses
- votes
-
- 2012-03-14
ilestpréférable d'utiliser simplement letype champpersonnalisé pour créer un sous-titre ...
De cettefaçon,vous laissez letitreinchangéet ajoutez simplement un champ où vouspouvezinsérer une valeur comme ceci (appelant le sous-titre du champ):
Ensuite,vouspouvez récupérer votre sous-titrefacilement:
<?php $sub_title=get_post_meta($post->ID,'subtitle',true); if($sub_title != '') { echo '<h1>'. the_title() .'<span>'. $sub_title .'</span></h1>'; } else { echo '<h1>'. the_title() .'</h1>'; } ?>
.
j'espère que c'est une solution appropriéepour vous ...je l'utilise à certaines occasionsSalutations,Sagive
COMMENT:
Remplacez (j'espère que cela a lamême apparence dans votrethème)par le code ci-dessus ..:
<h1><?php the_title(); ?></h1>
its best if you just use custom field type to create a sub title...
That way you leave the title un-touched and just add a field where you can insert a value like so (calling field sub title):
Then you can fetch your subtitle easily:
<?php $sub_title=get_post_meta($post->ID,'subtitle',true); if($sub_title != '') { echo '<h1>'. the_title() .'<span>'. $sub_title .'</span></h1>'; } else { echo '<h1>'. the_title() .'</h1>'; } ?>
.
i hope this a suitable solution for you... i use it on occasionsCheers, Sagive
HOW TO:
Replace (i hope it looks the same in your theme) with the code above..:
<h1><?php the_title(); ?></h1>
-
+1.Deux suggestions: 1) Utilisez une approche à sécuritéintégréeet affichez uniquement `.$ sous-titre.'' `si` $ subtitle`est défini;et 2) Utilisez lefiltre `the_title`pourmodifier`the_title () `,plutôt que d'avoir ce code directement dans lemodèle.+1. Two suggestions: 1) Use a fail-safe approach, and only output ` . $sub_title . ''` if `$subtitle` is set; and 2) Use the `the_title` filter to modify `the_title()`, rather than having this code directly in the template.
- 0
- 2012-03-14
- Chip Bennett
-
Mercipour cela.Dois-jemettre ce code dansmonfichiermodèle à l'endroit oùje veux que le_titre apparaisse?Thanks for this. Do I put that code in my template file in the place where I want the_title to appear?
- 0
- 2012-03-14
- egr103
-
lapuce abien sûr raison .. éditémon code -mercipuce :) - @evan voirmon "COMMENT FAIRE" dansma réponse ..chip is right ofcourse.. edited my code - thanks chip :) - @evan see my "HOW TO" in my answer..
- 0
- 2012-03-14
- Sagive SEO
-
J'aiessayé d'implémenter ce codemaispour une raison quelconque,the_titlene s'enregistrepaset est affichéen dehors de labalise
.Mon code ressemble donc autitre de lapage
/sous-titre
.Impair.Desidées?I've been trying to implement this code but for some reason the_title isn't registering and is being displayed outside of thetag. So my code looks like Page title or Page title
/ subtitle
. Odd. Any ideas?- 0
- 2012-03-15
- egr103
-
Bien sûr ...pouvez-vous coller dans votre question le code que vousessayez de changer?j'essaierais volontiers d'aiderSure... can you paste in you question the code you are trying to change? would gladly try to help
- 0
- 2012-03-15
- Sagive SEO
-
Ici vous allez ... http://pastebin.com/uTx4sEUhHere you go... http://pastebin.com/uTx4sEUh
- 0
- 2012-03-15
- Sagive SEO
-
N'oubliezpas d'utiliser le champpersonnalisépour activer le "sous-titre" sinon vousn'obtiendrez que letitre ..Dont forget to use the custom field in order to activate the "sub title" other wise you would only get the title..
- 0
- 2012-03-15
- Sagive SEO
-
Je déteste être leporteur demauvaisesnouvellesmaisj'ai copié votre code directementmaisil reproduittoujours lemêmeproblème.Letitre réelesttoujours affiché surtoutes lesbalises.Jene comprendspas,est-ce qu'une autrepartie demapage labrise?Voicimon code: http://pastebin.com/0T9mt7FuI hate to be the bearer of bad news but I've copied your code directly but it still replicates the same issue. The actual title still gets displayed out of all tags. I don't get it, could it be another part of my page that's breaking it? Here's my code: http://pastebin.com/0T9mt7Fu
- 0
- 2012-03-15
- egr103
-
essayez de remplacer "the_title ()"par "get_the_title ()" ... cela vous a aidé?try replacing "the_title()" with "get_the_title()"... did that help?
- 0
- 2012-03-16
- Sagive SEO
-
Ah oui,c'est réglé!Brillantmercipour votrepersévérance!Ah yes, thats fixed it! Brilliant thanks for your persistence!
- 0
- 2012-03-17
- egr103
-
Mon compagnon deplaisir - heureux quetoutfonctionne :)My pleasure mate - glad you got it all to work :)
- 0
- 2012-03-17
- Sagive SEO
-
Cettefaçonn'estpas lameilleure,générer des donnéesnonpertinenteset vous changer lethème,puisn'apas utilisé les donnéeset ne laisser que dans labase de données.Deplus,iln'estpas correct d'ajouter le contenu via l'interface utilisateur,c'est un champ supplémentaireet pasimportant.Ilestpossible de réaliser la solution via des crochets defiltre ou d'ajouter unemetabox,il y a lepoint,c'estplusfacile d'ajouter le contenupourtous les auteurs.This way is not the best, generate not relevant data and change you the theme, then was not used the data and leave only in the database. Also it is not fine to add the content via UI, is an extra field and not important. It is possible to realized the solution via filter hooks or add a meta box, there have the point, that is easier to add the content for all autors.
- 0
- 2012-10-28
- bueltge
-
- 2012-10-28
Cela arrive unpeutard,maisje ne saispas où cela aurait du sens. J'aieu unproblème similaireet j'ai créé une solution.
Comme toscho a souligné ,the_titleest également utilisé dans lesmenus denavigation. Il a créé un filtrepour activer/désactiver lefiltre detitrepour lesmenus denavigation - ce queje pensepersonnellementest Einsteinesque. (Mercibeaucoup!)
Je viens donc demodifier unpeu sonfiltrepour qu'ilfonctionneici. Puis ajouté lafonction defiltrage réelle. Partout où vous utilisez space-pipe-space ("|") dans un champ detitre depublication,lapartie après avoir étéenveloppée dans unebalise
<span>
(y compris labarre oblique demandéepar l'auteur de l'article original )./** * Append a sub-heading to WordPress post titles */ add_filter( 'wp_nav_menu_args', 'gp121028_title_filter_switch' ); add_filter( 'wp_nav_menu', 'gp121028_title_filter_switch' ); /** * Switch title filter off when menu class starts and on when it ends. * * @param mixed $input Array or string, we just pass it through. * @return mixed */ function gp121028_title_filter_switch( $input ) { $func = 'wp_nav_menu_args' == current_filter() ? 'remove_filter' : 'add_filter'; $func( 'the_title', 'gp121028_filter_title' ); return $input; } /** * The actual filter function for the_title() */ function gp121028_filter_title( $title ) { $substrings = explode( ' | ', $title ); $title = ( ! empty( $substrings[0] ) ) ? $substrings[0] . '<span>/' . $substrings[1] . '</span>' : $title; return $title; }
J'espère que cela aide quelqu'un!
This comes a bit late, but I don’t know where else it would make sense. I had a similar problem and created a solution.
As toscho has pointed out, the_title is used in nav menus, too. He has created a filter to switch the title filter on/off for nav menus—which I personally think is Einsteinesque. (Thanks a bunch!)
So I’ve just modified his filter a little to make it work here. Then added the actual filtering function. Wherever you use space-pipe-space (" | ") in a post title field, the part after it gets wrapped up in a
<span>
tag (including the slash the original post author asked for)./** * Append a sub-heading to WordPress post titles */ add_filter( 'wp_nav_menu_args', 'gp121028_title_filter_switch' ); add_filter( 'wp_nav_menu', 'gp121028_title_filter_switch' ); /** * Switch title filter off when menu class starts and on when it ends. * * @param mixed $input Array or string, we just pass it through. * @return mixed */ function gp121028_title_filter_switch( $input ) { $func = 'wp_nav_menu_args' == current_filter() ? 'remove_filter' : 'add_filter'; $func( 'the_title', 'gp121028_filter_title' ); return $input; } /** * The actual filter function for the_title() */ function gp121028_filter_title( $title ) { $substrings = explode( ' | ', $title ); $title = ( ! empty( $substrings[0] ) ) ? $substrings[0] . '<span>/' . $substrings[1] . '</span>' : $title; return $title; }
Hope it helps somebody!
-
thatsgr8 @glueckpress :) -gardez simplement à l'esprit que le sous-titreen tant quetitre lui-mêmepourraitinfluencer lafaçon dont Google définit cettepage ...néanmoins - solutiongr8.Merci d'avoirpartagéthats gr8 @glueckpress :) - just keep in mind that the sub title as the title iteself might influence the way google defines that page... nevertheless - gr8 solution. thanks for sharing
- 1
- 2012-10-28
- Sagive SEO
-
- 2012-03-14
Jepense que la réponse donnéepar @Sagive SEO semble être lameilleure approche d'unpoint de vue sémantique.Mais si vouspréférez conserver les deux "titres" dans le champ detitre,une simpleexplosion devraitfonctionnerpour vous.
Essayez quelque chose comme ceci:
add_filter( 'the_title', 'wpse45589_split_title', 10, 2 ); function wpse45589_split_title( $title, $post_id = null ) { if ( !$post_id ) return $title; $post = get_post( $post_id ); if ( $post->post_type !== 'page' ) return $title; $parts = explode( '/', $title, 2 ); $title_to_return = $parts[0]; if ( !empty( $parts[1] ) ) $title_to_return .= '<span>/'.$parts[1].'</span>'; return $title_to_return; }
ETA: suite à la suggestion de @toscho ci-dessous,j'ai ajouté quelques lignespour vérifier letype depublication avant defiltrer letitre.Cettefonctionne devraitmaintenant ajouter que les
<span>
autitre despages,pas dans lesmenus denavigation,etc.I think the answer @Sagive SEO gave seems like the best approach from a semantic perspective. But if you prefer to keep both "titles" in the title field, a simple explode should work for you.
Try something like this:
add_filter( 'the_title', 'wpse45589_split_title', 10, 2 ); function wpse45589_split_title( $title, $post_id = null ) { if ( !$post_id ) return $title; $post = get_post( $post_id ); if ( $post->post_type !== 'page' ) return $title; $parts = explode( '/', $title, 2 ); $title_to_return = $parts[0]; if ( !empty( $parts[1] ) ) $title_to_return .= '<span>/'.$parts[1].'</span>'; return $title_to_return; }
ETA: following @toscho's suggestion below, I added a couple lines to check the post type before filtering the title. This function should now only add the
<span>
's to the title on pages, not in nav menus, etc.-
Ce seraitmon optionpréféréepour être honnête,mais où dois-je ajouter ce code?Cela va-t-il dans lefichiermodèle lui-même ou dansfunctions.php?Si sonfunctions.php dois-je appeler quelque chose dansmonmodèlepour lefairefonctionner?This would be my preferred option to be honest but where do I add this code? Does this go into the template file itself or within functions.php? If its functions.php do I have to call anything within my template to make it work?
- 0
- 2012-03-14
- egr103
-
Ceciest unfiltre,lemeilleurendroitpour cela serait votrefunctions.php,mais si vousne vouliez l'appliquer qu'à un seulfichiermodèle,ilpourrait également alleren haut de cefichier. Unefois que vous avez ajouté ce code,toutfichiermodèle qui utilise lesfonctions `the_title ()` ou `get_the_title ()` aura cette étendue autour de la deuxièmepartie dutitre.This is a filter, the best place for it would be your functions.php, but if you only wanted to apply it to one template file, it could go at the top of that file as well. Once you've added this code, any template file that uses the functions `the_title()` or `get_the_title()` will have this span wrapped around the second part of the title.
- 0
- 2012-03-15
- goldenapples
-
Malheureusement,cela correspond aussi aux [titres dans lesmenus denavigation] (http://wordpress.stackexchange.com/a/44972/73).Vous devez d'abord vérifier si vous êtes sur un vraititre deposte.Unfortunately, this matches [titles in nav menus too](http://wordpress.stackexchange.com/a/44972/73). You have to check if you are on a real post title first.
- 0
- 2012-03-15
- fuxia
-
@toscho - Huh.Vous avez raison,je neme suismêmepas arrêtépourpenser que wp_nav_menu utilisait cemêmefiltre.Jemettrai àjourma réponsepour lapostérité.@toscho - Huh. You're right, I didn't even stop to think that wp_nav_menu was using that same filter. I'll update my answer for posterity.
- 0
- 2012-03-15
- goldenapples
Mestitres,à l'échelle du site,suivront cethème dans unebalise h1:
En-tête dutitreprincipal/Texte du sous-titre
J'essaie deplacer unebalise span autour detout letexte aprèset y compris le «/»pour quemonbalisage ressemble à ceci:
Commentpuis-je yparvenir?Jene suispasgénial avec PHPmaisj'aiessayé dejouer avecexplosermaisje n'arrivepas à obtenir le résultatfinal,tout ce queje finisparfaireest detout cacher après le '/'
MODIFIER: Code supprimé & amp;Pastebin créé,c'estmapageentièrepourindex.php: http://pastebin.com/0T9mt7Fu