如何限制页面上显示的字符-Get_Content

时间:2012-11-21 作者:V Neal

我使用下面的php在我的网站“主页”上显示帖子id#9的内容,这样每当客户端更新页面时,它也会反映在主页上,而不必进行两次更改。

At the moment all the post content is being shown, I need to strip it down to about 100 words...

有什么想法吗?

<?php
    $id = 9;
    $post = get_page($id);
    $content = apply_filters(\'the_content\', $post->post_content);
    echo $content;
?>

4 个回复
SO网友:Dharmang

WordPress具有内置功能force_balance_tags 我相信这方面的研究还不多,但在这种情况下可能会很有用。

获取内容并将其截断为任意长度

$content = get_the_content();

$length = 1000;

if(strlen($content) > $length) {
    $content = substr($content, 0, $length);
}
现在应用force\\u balance\\u tags函数来平衡在内容中开始但由于字符串长度限制而未结束的任何html标记。

echo force_balance_tags($content);
希望有帮助。

编辑:

从WordPress文档页

This function is used in the short post excerpt list, to prevent unmatched elements. 
For example, it makes <div><b>This is an excerpt. <!--more--> and this is more text... </b></div> not break, 
when the html after the more tag is cut off.

SO网友:Mridul Aggarwal

对于摘录,您可以使用此函数,但对于内容,它会给html带来问题,因此您必须自己处理

function limit_words($phrase, $len) {
    $len = (int) $len;
    if (str_word_count($phrase) > $len) {
        $keys = array_keys(str_word_count($phrase, 2));
        $phrase = substr($phrase, 0, $keys[$len]);
    }
    return $phrase;
}
以上内容将用于功能。php。然后,您可以在模板文件甚至函数中的任何位置使用它。php文件。例如,在模板文件中

$excerpt = get_the_excerpt();
$new_excerpt = limit_words($excerpt, 10);
// change 10 to the number of words
echo $new_excerpt;

SO网友:Krzysiek Dróżdż

WordPress有内置函数来实现这一点。唯一的问题是,它假设所有摘录的最大长度都相同。

如果这个假设是正确的,那么您所要做的就是定义这个最大值。

您可以使用此过滤器执行此操作(将其放入functions.php 文件):

function my_excerpt_length( $length ) {
    return 40;  // put new excerpt length in here
}
add_filter( \'excerpt_length\', \'my_excerpt_length\' );
然后在模板文件中,只需执行以下操作:

setup_postdata( $post );
the_excerpt();
如果您需要在站点的不同位置使用不同的摘录长度,那么您可以使用类似的内容(将此函数添加到functions.php中):

function my_trim_excerpt($text = \'\', $excerpt_length =0) {
    if ( !$excerpt_length )
        $excerpt_length = apply_filters(\'excerpt_length\', 55);

    $raw_excerpt = $text;
    $text = strip_shortcodes( $text );

    $text = apply_filters(\'the_content\', $text);
    $text = str_replace(\']]>\', \']]&gt;\', $text);
    $excerpt_length = apply_filters(\'excerpt_length\', 55);
    $excerpt_more = apply_filters(\'excerpt_more\', \' \' . \'[...]\');
    $text = wp_trim_words( $text, $excerpt_length, $excerpt_more );

    return apply_filters(\'get_the_excerpt\', apply_filters(\'wp_trim_excerpt\', $text, $raw_excerpt));
}
然后像这样使用:

echo apply_filters(\'the_excerpt\', my_trim_excerpt($post->post_content, 40)); // 40 is the excerpt length

SO网友:TTech IT Solutions

不要把这件事搞得太复杂了

如果您使用[get_the_content][1] 在循环中,您可以使用[wp_trim_words][2].

$id = 9;
$post = get_page($id);
$content = $post->post_content ; 
echo wp_trim_words($content, 55, \'<a href=""> Read More Link</a>\');

结束

相关推荐

Remove some pages from search

在我的网站上,我希望一些页面不能通过搜索表单进行查询(这样当我有类似www.ex.com/?s=banana的内容时,它们就不会出现)有没有一种方法可以从搜索结果页面中“删除”页面(而不是盲目地执行if Is\\u page(id),display:none的条件)