帖子页面-不同长度的摘录

时间:2012-05-28 作者:James B

是否可以让wordpress在posts页面上执行以下示例。

前三篇文章需要有一个横跨标题框宽度的大图像和一个较长的摘录。

其余的帖子需要更薄一些,左边要有一个更小的特色图片。

我该如何在模板或循环中进行更改?

2 个回复
SO网友:Chip Bennett

首先,您需要过滤excerpt_length.

假设您希望默认摘录长度为50 words:

<?php
function wpse53485_filter_excerpt_length( $length ) {
    return 50;
}
add_filter( \'excerpt_length\', \'wpse53485_filter_excerpt_length\' );
?>
这将使所有的摘录都有50个字。请确保首先工作。

然后,添加一个适当的条件,为帖子的静态页面使用不同的摘录长度。假设您使用自定义页面模板,named template-posts.php, 您可以使用is_page_template().

假设您希望文章的页面使用摘录长度100 words:

<?php
function wpse53485_filter_excerpt_length( $length ) {
    if ( is_page_template( \'template-posts.php\' ) ) {
        return 100;
    } else {
        return 50;
    }
}
add_filter( \'excerpt_length\', \'wpse53485_filter_excerpt_length\' );
?>
使用这种方法,您可以根据各种上下文有条件地返回任意数量的摘录长度。

SO网友:user16562

如果没有更多的信息,比如你的循环如何?你有两个循环吗,一个用于前3个帖子,另一个用于其余帖子?是否有一个循环并使用计数器指定不同的标记?在没有更多信息的情况下,我可以为您提供以下内容来修改摘录:

将此粘贴到函数上。php文件

function dp_clean($excerpt, $substr=0) {
    $string = strip_tags(str_replace(\'[...]\', \'...\', $excerpt));
    if ($substr>0) {
        $string = substr($string, 0, $substr);
    }
    return $string;
}
然后用这个<?php echo dp_clean($post->post_content, 250); ?>

将250更改为某个值以满足您的需要

结束

相关推荐

Get list of months with posts

我正试图在我的自定义主题上添加一个基于月后的过滤器,类似于归档文件,但有一些不同。什么是最好的方式来获得一份我们有帖子的月份列表?谢谢Alex我使用了以下查询: $wpdb->get_results(\"SELECT DISTINCT YEAR(post_date) AS `year`, MONTH(post_date) AS `month`, count(ID) as posts FROM $wpdb->posts