web-dev-qa-db-ja.com

異なる「もっと読む」リンク

別の「もっと読む」リンクを追加する簡単な方法はありますか?私はいくつかの記事には標準の「続きを読む」リンクを使用していますが、他の記事には「詳細」のような別のテキストを使用したいと思います。 the_excerptを使ってこれを行うことができますか?

後の更新:これは「続きを読む」または「続きを読む」リンクに使用される2つの標準の12の関数です。

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' );

私のコードに基づいて、私はif / else関数にtwentyeleven_auto_excerpt_moreステートメントを含めることについて考えましたが、うまくいかないので、私は何か間違ったことをしました。

これはコードです:

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' );

PHPが私の強みではないことは明らかだと思います。

2

Readmoreリンクを変更するためのconditionの使用はどうですか。

これは投稿のカテゴリに基づいて別の続きを読むテキストを返すサンプルコードです。 WordPressで使用できる他のコンディショナルタグについては、 公式コーデックスページ を読んでください。

使用法 - このコードをテーマのfunctions.phpファイルに追加してください。 postがimageカテゴリにある場合、このコードはcontinue readingView 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');
?>

更新#1

このコードをあなたのテーマのfunctions.phpの最後に置きます。

//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 );

2番目のコードは21のテーマでテストされており、localhostで問題なく動作しているようです。

  • テーマでthe_excerpt()が使用されている場合、wpse_60184_the_excerpt_moreはread-moreリンクを作成します
  • wpse_60184_the_content_moreはデフォルトのread moreリンクを新しいものに置き換えます。 <!-- more -->タグで動作します。
2
amit

あなたは excerpt_more フィルタフックを使うことができます。

特定のメタデータフィールドを投稿に追加して、このフィルタがデフォルトのテキストを上書きするために使用することをお勧めします。

可能なPHPは、次のようになります(未テスト)。

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