web-dev-qa-db-fra.com

Comment faire un H1 différent du titre?

Ce que je veux faire, c'est ... sur une base individuelle, je veux que le H1 dise autre chose que le titre ...

Cela devrait être une chose si simple, mais cela fait maintenant une heure que je cherche une option et que je cherche une solution sur Google. Je ne trouve rien.

Existe-t-il un moyen de faire cela dans Wordpress sans pirater le code? Sinon, quel est le moyen le plus simple de le faire avec un code qui ne sera pas écrasé lorsque je mettrai à jour Wordpress?

p.s. im en utilisant le thème Dynamik/Geneisis.

2
Jan Paul

Oui! Champs personnalisés: http://codex.wordpress.org/Custom_Fields

Vous pouvez créer des titres de publication alternatifs via l'éditeur de publication, puis les afficher avec quelques ajustements mineurs aux modèles single.php et index.php (ou aux modèles {$post_type}-archive.php, le cas échéant). Par exemple:

<?php $post_title = get_post_meta($post->ID, 'Post-Title', true); //"Post-Title" or whatever you call your custom field
if ($post_title) {
?>
    <h1><?php echo $post_title; ?></h1>

<?php } else { ?>

    <h1><?php the_title(); ?></h1>

<?php } ?>

Alex Denning a une excellente introduction sur Smashing Magazine ici: http://wp.smashingmagazine.com/2010/04/29/extend-wordpress-with-custom-fields/

MODIFIER

Si vous souhaitez rendre cette mise à jour à l'épreuve, je vous suggère de créer un petit plugin pratique. Pour essayer quelque chose, prenez le code ci-dessous et remplacez "YOUR_CUSTOM_FIELD_HERE" par votre champ personnalisé, puis le filtre gabarit la balise modèle the_title(); pour le remplacer par ce champ (s'il n'est pas renseigné, le titre de l'article est renvoyé). Je n'ai pas testé ce code, mais cela devrait fonctionner:

<?php
/**
 * Plugin Name: Replace Title With Custom Field
 * Description: When activated, this plugin replaces the title H1 with a custom field from the dashboard.
 * Version: 1.0
 * Author: penguin429
 * License: GPL2
 */

function replace_title($title, $id) {
    $custom_title = get_post_meta($id, 'YOUR_CUSTOM_FIELD_HERE', true);
    $mod_title = $title;

    if(!empty($custom_title)) { //if field is filled in, make the title the Custom Field
        $mod_title = $custom_title;
    } else { //otherwise, return the post Title
        $mod_title = $title;
    }
    return $mod_title;
}
add_filter('the_title', 'replace_title', 10, 2);

?>

Pour l'essayer, prenez le code et donnez-lui un nom (par exemple, custom-title.php), déposez-le dans le dossier wp-content/plugins de votre site et activez-le. Faites-moi savoir si ça marche!

2
penguin429