0

この WordPress 関連の PHP-OOP Answerで、探しているものに対する解決策を見つけました。しかし、同じ関数を使用して、タグ内に別のアンカー タグ ( )my_excerpt();を渡したいと考えています。<a><p>

現在、callingmy_excerpt()は段落タグ ( <p>here comes the excerpt</p>) でデータベース テキストを受け入れています。そして、次のようにアンカータグを追加すると:

// Echoes out the excerpt
    public static function output() {
        the_excerpt(); ?>
        <a class="read-more" href="<?php the_permalink(); ?>" title="<?php the_title(); ?>" rel="bookmark"><?php _e( 'Read More &raquo;', 'my-theme'); ?></a>
    <?php
    }

以外のテキストのすぐ下に「続きを読む」が表示されています。Inspect Element は次のように表示されます。

<p>here comes the excerpt.</p>
<a href="post-link">Read More</a>

次のように、段落内に「続きを読む」リンクを表示できるように、関数またはクラスを変更するにはどうすればよいですか。

<p>here comes the excerpt.<a href="post-link">Read More</a></p>

さらに

[...]さらに、によって生成された抜粋からその部分を削除しようとしていmy_excerpt();ます。だから私は次のことを試しました:

function change_excerpt($content) {
    $content = str_replace( '[...]','>',$content ); // remove [...], replace with ...
    $content = strip_tags( $content ); // remove HTML
    return $content;
}
add_filter('my_excerpt','change_excerpt');

ビューには何もしません。しかし、次のように変更すると:

add_filter('the_excerpt','change_excerpt');

その後、フィルターが段落タグを完全に削除したため、気付かずに、以前に必要だった [段落内] アンカータグを取得しました。

here comes the excerpt.<a href="post-link">Read More</a>

しかし、それは部分では何もしません[...]。:(

それで、私の家具付きの質問は次のとおりです。
段落タグ内にアンカータグを配置する方法、または段落タグを削除して関数[...]から部分を削除するにはどうすればよいですか?my_excerpt()

4

1 に答える 1

1

このスニペットを試してください

functions.php に含める

function kc_excerpt( $length_callback = '', $more_callback = '' ) {

    if ( function_exists( $length_callback ) )
        add_filter( 'excerpt_length', $length_callback );

    if ( function_exists( $more_callback ) )
        add_filter( 'excerpt_more', $more_callback );

    $output = get_the_excerpt();
    $output = apply_filters( 'wptexturize', $output );
    $output = apply_filters( 'convert_chars', $output );
    $output = '<p>' . $output . '</p>';
    echo $output;
}

function kc_excerpt_more( $more ) {
    return '<a class="read-more" href="'. get_permalink() .'" title="'. get_the_title() .'"      rel="bookmark">Read More</a>';
}

function kc_excerpt_more_2($more) {
    return '...';
}

function kc_exdefault($length) {
    return 10;
}

function kc_ex100($length) {
    return 100;
}

テンプレートファイルからこの関数を呼び出します

<?php kc_excerpt('kc_exdefault', 'kc_excerpt_more'); ?>

また

<?php kc_excerpt('kc_ex100', 'kc_excerpt_more_2'); ?>
于 2013-10-27T10:51:20.773 に答える