从短信息中删除更多或[…]文字


8

我使用的主题对短信有字符数限制,并在字符数限制的末尾显示。

我想删除它,所以我搜索the_excerpt();并替换为the_content();

问题可以用正常的内容解决,但图像发布类型仍然存在问题,并且<?php the_excerpt(); ?>当我更改此设置时,我的短信功能就像完整的发布一样,并且与发布的长度无关。

我尝试打开主题中的所有PHP文件,并查找诸如:限制,长度,摘录等关键字,以查找定义短消息长度的代码,甚至在所有文件和语言中搜索“ [...]”,但我不知道那是哪里来的。

但是我发现的只是其中的一些代码行 function.php

if ( ! function_exists( 'string_limit_words' ) ) :
function string_limit_words($str, $limit = 18 , $need_end = false) {
    $words = explode(' ', $str, ($limit + 1));
    if(count($words) > $limit) {
        array_pop($words);
        array_push($words,'...');
    }
    return implode(' ', $words);
}
endif;

当我增加18时,什么都没有改变!

我必须寻找什么代码?

Answers:


19

食品法典委员会是你的朋友,应该是你的第一站:-)

[...]添加the_excerpt()。提供了一个称为excerpt_more过滤器的过滤器,该过滤器专门用于自定义摘录后自定义阅读的更多文本

要删除[...]摘录后的文字,您可以执行以下操作

function new_excerpt_more( $more ) {
    return '';
}
add_filter('excerpt_more', 'new_excerpt_more');

谢谢您的答复,您的代码可以很好地删除[...],但短消息仍然受到限制,并且在某些字符我希望能正常运行后进行切词(阅读更多短消息之前的所有内容在我的短消息中显示)
Arioman

另一个只是出于好奇的问题,我该如何将[...]更改为其他内容,例如[更多...]
Arioman 2014年

您应该阅读这篇文章。我已经涵盖了该帖子中的所有内容。希望能帮助到你 :-)。如果它有助于解决您的问题,请记住接受我的回答。
Pieter Goosen 2014年

这似乎只会删除“阅读更多”链接。将[...]仍然存在。
Jules

3

正如其他人已经指出的那样,使用excerpt_more过滤器挂钩是正确的方法。

只是想补充一点,您不必编写返回空字符串的函数。WordPress有一些内置函数可以返回true,false,零,null,空字符串或空数组。

在这种情况下,我们需要__return_empty_string()

您可以将此代码添加到插件或主题的functions.php中:

<?php 
// This will add a filter on `excerpt_more` that returns an empty string.
add_filter( 'excerpt_more', '__return_empty_string' ); 
?>

1

那对我来说是工作!

function change_excerpt( $text )
{
    $pos = strrpos( $text, '[');
    if ($pos === false)
    {
        return $text;
    }

    return rtrim (substr($text, 0, $pos) );
}
add_filter('get_the_excerpt', 'change_excerpt');

0

您应该将此添加到您的 functions.php

    function custom_excerpt_more( $more ) {
    return '';//you can change this to whatever you want
}
add_filter( 'excerpt_more', 'custom_excerpt_more' );

另外,使用the_excerpt具有自动清除内容并删除所有图像和其他HTML标签的优点。

你可以在这里阅读更多

如果您还想修改摘录的长度,可以将此代码段添加到您的functions.php

function custom_excerpt_length( $length ) {
    return 20;//change the number for the length you want
}
add_filter( 'excerpt_length', 'custom_excerpt_length', 999 );

您可以在此处了解更多信息


您定位的是哪个版本,即2.9之前的版本:-)
Pieter Goosen 2014年

@PieterGoosen,我猜错了。
托马斯科特

您的代码可以随着长度的变化而很好地工作,但是当我删除[...]时,如果缺少一段段落会很丑陋,如果以某种方式检测到一段而不是一段长度,那就太好了!//摘录的另一个问题是关于简码,我不能将视频播放器或幻灯片放到我的短帖子中
Arioman 2014年

@Arioman,您可以使用“继续阅读”或任何您想要的链接更改[...]。现在,如果您想使用有效的简码the_excerpt(不是您要找的),则应将其添加到问题中,因为答案会有所变化。
托马斯科特

@TomásCot感谢您提供的出色指南。我将所有代码(完整代码)放入我的function.php中,并删除$ wpse_excerpt = strip_tags($ wpse_excerpt,wpse_allowedtags()); 为了接受所有标签,我使用流视频播放器插入视频,它会生成短代码,例如:[流flv = http://****/clip/shad.m4v embed = false share = false width = 640 height = 360 dock =真正的控制栏=超过带宽=高自动启动=错误的响应= 16:9 /],但我仍然收到一条文本:*视频:我的视频而不是在简报中显示我的视频播放器我的问题在哪里?
Arioman

0

尝试在中创建一个新函数functions.php

function custom_excerpt() {
 $text=preg_replace( "/\\[&hellip;\\]/",'place here whatever you want to replace',get_the_excerpt());
echo '<p>'.$text.'</p>';
}

然后使用页面上的新功能。


0

'excerpt_more'是一个WordPress挂钩。它返回内容摘录。要删除摘录文本后的内容,您可以返回空白,如下所示或您的自定义要求。在function.php上使用此代码

function custom_excerpt_more( $excerpt ) {
    return '';
}
add_filter( 'excerpt_more', 'custom_excerpt_more' );
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.