web-dev-qa-db-fra.com

Différents liens 'en lire plus'

Existe-t-il un moyen simple d’ajouter un autre lien "en savoir plus"? J'utilise le lien standard "continuer à lire" pour certains articles, mais je souhaite également utiliser un texte différent, tel que "plus d'infos" pour d'autres articles. Puis-je faire cela en utilisant the_excerpt?

Mise à jour ultérieure: Il s’agit des deux fonctions standard vingt-neuf utilisées pour les liens "lire plus" ou "continuer à lire".

function twentyeleven_continue_reading_link() {
    return ' <a href="'. esc_url( get_permalink() ) . '">' . __( '<span class="more">more &#43;</span>', 'twentyeleven' ) . '</a>';
}
function twentyeleven_auto_excerpt_more( $more ) {  
    return ' &hellip;' . twentyeleven_continue_reading_link();
}
add_filter( 'excerpt_more', 'twentyeleven_auto_excerpt_more' );

Basé sur le code amit, j’ai pensé inclure une instruction if / else dans la fonction twentyeleven_auto_excerpt_more, mais j’ai fait quelque chose de mal parce que cela ne fonctionne pas.

C'est le code:

function twentyeleven_auto_excerpt_more( $more ) {
$read_more_link_2 = "View Image";
if ( in_category( 'events' )) {
    return $read_more_link_2;
} else {    
    return ' &hellip;' . twentyeleven_continue_reading_link();
}
add_filter( 'excerpt_more', 'twentyeleven_auto_excerpt_more' );

Je pense qu'il est évident que PHP n'est pas mon point fort.

2
George Grigorita

Que diriez-vous d'utiliser la condition pour changer les liens readmore.

Voici un exemple de code qui renvoie une lecture différente plus de texte en fonction de la catégorie de publication. Vous devriez lire la page officielle du codex pour en savoir plus sur les autres balises conditionnelles que vous pouvez utiliser dans wordpress.

Usage - placez ce code dans le fichier functions.php de votre thème. Ce code remplacera le continue reading par View Image si post est dans la catégorie image.

<?php
        function wpse_60184_new_readmore_link( $more ) {
                $read_more_link_2 = "View Image";
                if ( in_category( 'image' )) {
                        return $read_more_link_2;
                }
        }
        add_filter('excerpt_more', 'wpse_60184_new_readmore_link');
?>

Mise à jour # 1

Placez ce code à la fin du functions.php de votre thème

//this will create read morelink when the_excerpt() is used
function wpse_60184_the_excerpt_more($more) {
    in_category( 'events' ) ? $my_read_more_text = 'Read event' : $my_read_more_text = 'Read more'; 
    global $post;
    return '<a href="'. get_permalink($post->ID) . '">'.$my_read_more_text.'</a>';
}
add_filter('excerpt_more', 'wpse_60184_the_excerpt_more');

//this will change the read more link when <!-- more --> is used & the_content()       
function wpse_60184_the_content_more( $more_link, $more_link_text ) {
    in_category( 'events' ) ? $my_read_more_text = 'Read events' : $my_read_more_text = 'Read more';    
    return str_replace( $more_link_text, $my_read_more_text, $more_link );
}
add_filter( 'the_content_more_link', 'wpse_60184_the_content_more', 10, 2 );

Le deuxième code est testé avec vingt-onze thèmes et il semble fonctionner correctement sur localhost.

  • wpse_60184_the_excerpt_more crée un lien de lecture supplémentaire lorsque the_excerpt() est utilisé dans le thème
  • wpse_60184_the_content_more remplacera le lien lire plus par défaut par un nouveau. Travaillera avec la balise <!-- more -->.
2
amit

Vous pouvez utiliser le hook de filtre extrait_more .

Je suggère simplement d'ajouter un champ de métadonnées spécifique aux publications que ce filtre utiliserait ensuite pour écraser le texte par défaut.

Les PHP possibles pourraient être les suivants (non testés):

function custom_excerpt_more( $more ) {
    global $post;

    $custom_read_more = get_post_meta($post->ID, 'read_more_text', true);
    if (!empty($custom_read_more))
        return $custom_read_more;
    else
        return $more;
}
add_filter( 'excerpt_more', 'custom_excerpt_more' );
1
MechEngineer