php 从内容中删除字符而不是单词- WordPress

ttcibm8c  于 2023-09-29  发布在  PHP
关注(0)|答案(4)|浏览(110)

所以我一直在寻找一个解决方案相当长的一段时间。但却找不到。
我需要的是一个函数,它显示内容中特定数量的字符,而不是特定数量的单词。因为单词可以比其他单词更长,我想保持后预览的样式相同。
现在我还在用修饰词:

<p><?php echo wp_trim_words( get_the_content(), 15 ); ?></p>

有人知道我如何从文章的内容中删除字符而不是字数吗?
在此先谢谢您!
更新:
以下是我完整的文章部分:

<?php
      $args = array(
        'post_type' => 'post',
        'posts_per_page' => 3,
        'category__in' => array(2, 3),
        'post__not_in' => array( $post->ID ),
      );
    ?>
    <?php $query = new WP_Query($args); ?>
    <?php if ($query->have_posts()) : while ($query->have_posts()) : $query->the_post(); ?>

      <a href="<?php the_permalink();?>">
        <div class="post">
          <?php $thumb = get_the_post_thumbnail_url(); ?>
          <div class="post-image" style="background-image:url('<?php echo $thumb;?>');"></div>
          <div class="post-prev">
            <?php
            foreach (get_the_category() as $category){
              echo "<span>";
              echo $category->name;
              echo "</span>";
            } ?>
            <h2>
              <?php
                $thetitle = $post->post_title;
                $getlength = strlen($thetitle);
                $thelength = 20;
                echo substr($thetitle, 0, $thelength);
                if ($getlength > $thelength) echo "..";
              ?>
            </h2>
            <p><?php echo wp_trim_words( get_the_content(), 15 ); ?></p>
            <span class="btn">Lees verder</span>
          </div>
        </div>
      </a>

    <?php endwhile; wp_reset_postdata(); else : ?>
      <p><?php _e("Geen content gevonden.."); ?></p>
    <?php endif; ?>
niwlg2el

niwlg2el1#

为了避免切割单词,我使用以下自定义函数:

function theme_truncate( $string, $length = 100, $append = '&hellip;' ) {
$string = trim( $string );

if ( strlen( $string ) > $length ) {
    $string = wordwrap( $string, $length );
    $string = explode( "\n", $string, 2 );
    $string = $string[0] . $append;
}

return $string;}

它使用PHP wordwrapexplode来实现目标。
你可以在以后像这样调用这个函数:

echo esc_html( theme_truncate( get_the_content(), 15 ) );
fae0ux8s

fae0ux8s2#

如果你想在字符串中不包含任何HTML的15个字符,你可以分几步来做:
首先获取字符串并使用strip_tags()删除HTML:

$content = strip_tags(get_the_content());

然后使用substr()从现在的无HTML字符串中抓取前15个字符:

echo substr($content, 0, 15);

那就行了
您也可以将其作为一行程序来执行:

echo substr(strip_tags(get_the_content()), 0, 15);
mu0hgdu0

mu0hgdu03#

<p><?php echo substr(get_the_content(),0,15); ?></p>

如果get_the_content()方法的输出是一个字符串,那么可以使用substr()方法。上面的示例从索引0开始输出15个字符

nwsw7zdq

nwsw7zdq4#

wp_html_excerpt是您正在寻找的函数:

<p><?php echo wp_html_excerpt( get_the_content(), 15, '...' ); ?></p>

它将剥离所有HTML标记并将内容截断到15个字符,并在末尾添加...

相关问题