Cắt bớt các trường tùy chỉnh


7

Tôi đang sử dụng các trường tùy chỉnh để lấy một mô tả thứ cấp. Tôi muốn sử dụng rút gọn trong WordPress nhưng dường như không thể tìm ra.

$desc = get_post_meta($post->ID, "youtube-desc", true);
echo '<p>' . $desc . '</p>';

Bất kỳ trợ giúp sẽ được đánh giá cao.

Câu trả lời:


11

Xem phần thảo luận về Mô tả ngắn Phân loại để biết cách tốt hơn để rút ngắn chuỗi. Tôi không biết chức năng WP đang bị cắt cụt.

Đây là mã của tôi dựa trên các cuộc thảo luận được liên kết:

/**
 * Shortens an UTF-8 encoded string without breaking words.
 *
 * @param  string $string     string to shorten
 * @param  int    $max_chars  maximal length in characters
 * @param  string $append     replacement for truncated words.
 * @return string
 */
function utf8_truncate( $string, $max_chars = 200, $append = "\xC2\xA0…" )
{
    $string = strip_tags( $string );
    $string = html_entity_decode( $string, ENT_QUOTES, 'utf-8' );
    // \xC2\xA0 is the no-break space
    $string = trim( $string, "\n\r\t .-;–,—\xC2\xA0" );
    $length = strlen( utf8_decode( $string ) );

    // Nothing to do.
    if ( $length < $max_chars )
    {
        return $string;
    }

    // mb_substr() is in /wp-includes/compat.php as a fallback if
    // your the current PHP installation doesn’t have it.
    $string = mb_substr( $string, 0, $max_chars, 'utf-8' );

    // No white space. One long word or chinese/korean/japanese text.
    if ( FALSE === strpos( $string, ' ' ) )
    {
        return $string . $append;
    }

    // Avoid breaks within words. Find the last white space.
    if ( extension_loaded( 'mbstring' ) )
    {
        $pos   = mb_strrpos( $string, ' ', 'utf-8' );
        $short = mb_substr( $string, 0, $pos, 'utf-8' );
    }
    else
    {
        // Workaround. May be slow on long strings.
        $words = explode( ' ', $string );
        // Drop the last word.
        array_pop( $words );
        $short = implode( ' ', $words );
    }

    return $short . $append;
}

Kiểm tra

print utf8_truncate( 'ööööö ööööö' , 10 );
// prints 'ööööö …'

Thêm chức năng vào functions.phpvà thay đổi mã của bạn thành:

echo '<p>' . utf8_truncate( $desc ) . '</p>';

Bạn cũng có thể sử dụng nó rút ngắn một tiêu đề:

echo '<h1>' . utf8_truncate( get_the_title() ) . '</h1>';
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.