PHP-OOP如何在<p>标记内传递锚标记?</p>

时间:2013-10-26 17:13:10

标签: php wordpress add-filter

With this WordPress related PHP-OOP Answer,我找到了我正在寻找的解决方案。但是使用相同的函数my_excerpt();我想在<a>标记内传递另一个锚标记(<p>)。

现在,调用my_excerpt()包含带有段落标记(<p>here comes the excerpt</p>)的db文本。如果我添加我的锚标签,如下所示:

// 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
    }

它显示“阅读更多”只是除了文本的底部。检查元素显示如下:

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

如何更改函数或类,以便我可以在段落中使用“Read More”链接,例如:

<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()部分?

1 个答案:

答案 0 :(得分: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'); ?>