久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

如何防止 Wordpress 在摘錄中剝離 HTML 標簽

How to Prevent Wordpress from Stripping HTML Tags in Excerpt(如何防止 Wordpress 在摘錄中剝離 HTML 標簽)
本文介紹了如何防止 Wordpress 在摘錄中剝離 HTML 標簽的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

限時送ChatGPT賬號..

我正在使用 wp_trim_words 來修剪我主頁上的一些摘錄.它工作正常,只是它從摘錄中剝離了 HTML 標簽.我需要能夠將摘錄的某些部分加粗(使用 ).按照此處的說明,我嘗試刪除 wp_trim_words 函數并替換它使用以下代碼使用新的代碼,將 $text = wp_strip_all_tags( $text ); 從原始 WP 函數替換為 $text = strip_tags($text, '<strong>',);.但這破壞了網站.我做錯了什么?

I am using wp_trim_words to trim some excerpts on my homepage. It's working fine except that it's stripping the HTML tags from the excerpts. I need to be able to make certain pieces of the excerpt bold (using <strong>). Following the instructions here, I tried removing the wp_trim_words function and replacing it with a new one using the following code, which replaces $text = wp_strip_all_tags( $text ); from the original WP function with $text = strip_tags($text, '<strong>',);. But this breaks the site. What am I doing wrong?

    // Remove Reverie Trim Words
function remove_trim_words() {
    remove_filter('get_the_excerpt', 'wp_trim_words');
    add_filter('get_the_excerpt', 'oakwood_trim_words');
}

// Replace Reverie Trim Words
function oakwood_trim_words( $text, $num_words = 55, $more = null ) {
    if ( null === $more )
        $more = __( '&hellip;' );
    $original_text = $text;
    $text = strip_tags($text, '<strong>',);
    /* translators: If your word count is based on single characters (East Asian characters),
       enter 'characters'. Otherwise, enter 'words'. Do not translate into your own language. */
    if ( 'characters' == _x( 'words', 'word count: words or characters?' ) && preg_match( '/^utf-?8$/i', get_option( 'blog_charset' ) ) ) {
        $text = trim( preg_replace( "/[

	 ]+/", ' ', $text ), ' ' );
        preg_match_all( '/./u', $text, $words_array );
        $words_array = array_slice( $words_array[0], 0, $num_words + 1 );
        $sep = '';
    } else {
        $words_array = preg_split( "/[

	 ]+/", $text, $num_words + 1, PREG_SPLIT_NO_EMPTY );
        $sep = ' ';
    }
    if ( count( $words_array ) > $num_words ) {
        array_pop( $words_array );
        $text = implode( $sep, $words_array );
        $text = $text . $more;
    } else {
        $text = implode( $sep, $words_array );
    }
    /**
     * Filter the text content after words have been trimmed.
     *
     * @since 3.3.0
     *
     * @param string $text          The trimmed text.
     * @param int    $num_words     The number of words to trim the text to. Default 5.
     * @param string $more          An optional string to append to the end of the trimmed text, e.g. &hellip;.
     * @param string $original_text The text before it was trimmed.
     */
    return apply_filters( 'oakwood_trim_words', $text, $num_words, $more, $original_text );
}

推薦答案

完整指南摘錄

我最近回答了幾個關于摘錄的問題,所以我會盡可能詳細地解釋一下.

I've recently answered a few questions regarding excerpts, so I' going to give a detailed explanation covering as much as I can.

HTML 標簽/格式

the_excerpt() 首先不排除任何參數,所以沒有什么可以傳遞給它.事實上,the_excerpt() 將內容修剪為 55 個單詞,并且在返回文本之前去除所有 html 標簽.the_excerpt() 位于 wp-includes/post-template.php.要允許摘錄中的某些或所有 html 標記,必須創建新的摘錄.

the_excerpt() first of all doesn't except any parameters, so nothing can be passed to it. In is a fact that the_excerpt() trims the content to 55 words, and all html tags are stripped before returning the text. the_excerpt() is located in wp-includes/post-template.php. To allow certain or all html tags in the excerpt, a new excerpt have to be created.

首先需要先把原來的函數去掉,然后新的函數需要hook到get_the_excerpt.請注意,這個新的摘錄在模板文件中仍可作為 the_excerpt() 調用,無需更改.get_the_excerpt() 位于 wp-includes/post-template.php.

First of all, the original function needs to be removed first, and then the new function needs to be hooked to get_the_excerpt. Please take note, this new excerpt will still be callable as the_excerpt() in template files, no need to change that. get_the_excerpt() is located in wp-includes/post-template.php.

摘錄使用wp_trim_excerpt返回修剪后的文本,所以我們需要刪除wp_trim_excerpt 首先來自摘錄過濾器.wp_trim_excerpt() 位于 wp-includes/formatting.php,第 2355 行.這是如何:

The excerpt uses wp_trim_excerpt to return the trimmed text, so we need to remove wp_trim_excerpt first from the excerpt filter. wp_trim_excerpt() is located in wp-includes/formatting.php, line 2355. This is how:

remove_filter('get_the_excerpt', 'wp_trim_excerpt');

您現在可以將新摘錄添加到 get_the_excerpt

You can now add your new excerpt to get_the_excerpt

add_filter('get_the_excerpt', 'wpse_custom_wp_trim_excerpt');

要允許 html 標簽/格式,我們需要指定您需要允許的標簽.您可以使用以下 strip_tags 語句來實現

To allow html tags/formatting, we will need to specify which tags you will need to allow. You can use the following strip_tags statement to achieve that

$wpse_excerpt = strip_tags($wpse_excerpt, wpse_allowedtags());

第二個參數 wpse_allowedtags() 是一個小函數,用于添加 the_excerpt() 允許的標簽.如需有效 HTML5 標簽的完整列表,請前往此處查看.這是函數,向其中添加您需要允許/保留的任何 html 標記

The second argument wpse_allowedtags() is a small function that is used to add the tags the_excerpt() will allow. For a complete list of valid HTML5 tags, go and check it out here. Here is function, add any html tag to this that you need to allow/keep

function wpse_allowedtags() {
// Add custom tags to this string
    return '<script>,<style>,<br>,<em>,<i>,<ul>,<ol>,<li>,<a>,<p>,<img>,<video>,<audio>'; 
}

如果需要允許所有HTML標簽,即不剝離任何標簽,可以完全省略/刪除strips_tags()函數.

If you need to allow all HTML tags, that is, no stripping of any tags, the strips_tags() function can be omitted/removed completely.

但是需要注意的一點是,當允許使用 html 標簽時,這些標簽被計為字數,因此帶標簽和不帶標簽的摘錄的字數不會相同.要糾正這一點,您需要先從實際字數中刪除這些標簽,以便只計算字數.

A point to note however, when html tags are allowed, these tags are counted as words, so your word count for excerpts with tags and without tags will not be the same. To correct that, you will need to remove these tags from the actual word count first so that only words are counted.

我寫了一個摘錄,允許所有標簽,僅將單詞計為單詞,并在設定的單詞數量后完成一個句子(不會在句子中間修剪文本)并在最后一個單詞后添加閱讀更多文本.

I have written an excerpt that will allow all tags, count only words as words, and complete a sentence after the set amount of words (won't trim text mid-sentence) and add a read more text after the last word.

這是完整的代碼

function wpse_allowedtags() {
    // Add custom tags to this string
        return '<script>,<style>,<br>,<em>,<i>,<ul>,<ol>,<li>,<a>,<p>,<img>,<video>,<audio>'; 
    }

if ( ! function_exists( 'wpse_custom_wp_trim_excerpt' ) ) : 

    function wpse_custom_wp_trim_excerpt($wpse_excerpt) {
    global $post;
    $raw_excerpt = $wpse_excerpt;
        if ( '' == $wpse_excerpt ) {

            $wpse_excerpt = get_the_content('');
            $wpse_excerpt = strip_shortcodes( $wpse_excerpt );
            $wpse_excerpt = apply_filters('the_content', $wpse_excerpt);
            $wpse_excerpt = str_replace(']]>', ']]&gt;', $wpse_excerpt);
            $wpse_excerpt = strip_tags($wpse_excerpt, wpse_allowedtags()); /*IF you need to allow just certain tags. Delete if all tags are allowed */

            //Set the excerpt word count and only break after sentence is complete.
                $excerpt_word_count = 75;
                $excerpt_length = apply_filters('excerpt_length', $excerpt_word_count); 
                $tokens = array();
                $excerptOutput = '';
                $count = 0;

                // Divide the string into tokens; HTML tags, or words, followed by any whitespace
                preg_match_all('/(<[^>]+>|[^<>s]+)s*/u', $wpse_excerpt, $tokens);

                foreach ($tokens[0] as $token) { 

                    if ($count >= $excerpt_word_count && preg_match('/[,;?.!]s*$/uS', $token)) { 
                    // Limit reached, continue until , ; ? . or ! occur at the end
                        $excerptOutput .= trim($token);
                        break;
                    }

                    // Add words to complete sentence
                    $count++;

                    // Append what's left of the token
                    $excerptOutput .= $token;
                }

            $wpse_excerpt = trim(force_balance_tags($excerptOutput));

                $excerpt_end = ' <a href="'. esc_url( get_permalink() ) . '">' . '&nbsp;&raquo;&nbsp;' . sprintf(__( 'Read more about: %s &nbsp;&raquo;', 'wpse' ), get_the_title()) . '</a>'; 
                $excerpt_more = apply_filters('excerpt_more', ' ' . $excerpt_end); 

                //$pos = strrpos($wpse_excerpt, '</');
                //if ($pos !== false)
                // Inside last HTML tag
                //$wpse_excerpt = substr_replace($wpse_excerpt, $excerpt_end, $pos, 0); /* Add read more next to last word */
                //else
                // After the content
                $wpse_excerpt .= $excerpt_end; /*Add read more in new paragraph */

            return $wpse_excerpt;   

        }
        return apply_filters('wpse_custom_wp_trim_excerpt', $wpse_excerpt, $raw_excerpt);
    }

endif; 

remove_filter('get_the_excerpt', 'wp_trim_excerpt');
add_filter('get_the_excerpt', 'wpse_custom_wp_trim_excerpt'); 

您可以從需要額外的函數中刪除//".

You can just remove the '//' from functions that you need extra.

自定義摘錄長度

有時您需要顯示不同長度的簡單摘錄,并且為每個帖子/功能/頁面編寫摘錄是不可行的.這是一個使用 wp_trim_words

Sometimes you need to display simple excerpts of different lengths and it is not viable to write an excerpt for every post/function/page. Here is a nice small little function using wp_trim_words

function wpse_custom_excerpts($limit) {
    return wp_trim_words(get_the_excerpt(), $limit, '<a href="'. esc_url( get_permalink() ) . '">' . '&nbsp;&hellip;' . __( 'Read more &nbsp;&raquo;', 'wpse' ) . '</a>');
}

這個小函數的作用是將 get_the_excerpt 修剪為用戶設置的 $limit 并在末尾返回帶有閱讀更多鏈接的文本.

What this little function do is taking get_the_excerpt trimming that to $limit set by the user and returning the text with a read more link at the end.

您可以在模板中按如下方式調用此摘錄

You can call this excerpt as follow in your template

echo wpse_custom_excerpts($limit);

其中 $limit 將是您的字數,因此 30 個字的摘錄將是

where $limit will be your word count, so an excerpt of 30 word will be

echo wpse_custom_excerpts(30);

這里要記住一件事,如果您將限制設置為超過 55 個單詞,則只會返回 55 個單詞,因為摘錄的長度僅為 55 個單詞.如果需要更長的摘錄,請改用 get_the_content.

Just one thing to remember here, if you set your limit to more that 55 words, only 55 words will be returned as the excerpt is only 55 words in length. If longer excerpts are needed, use get_the_content instead.

自定義摘錄長度

如果只需要修改the_excerpt()的長度,可以使用下面的函數

If you just need to alter the length of the_excerpt(), you can use the following function

function wpse_excerpt_length( $length ) {
    return 20;
}
add_filter( 'excerpt_length', 'wpse_excerpt_length', 999 );

請記住,您需要設置大于 10 的優先級,以便您的自定義函數在默認值之后執行.

Remember, you will need to set a priority bigger than 10 so that your custom function executes after the default.

添加閱讀更多鏈接

摘錄返回的所有文本都在末尾帶有不可點擊的討厭的 [...].要在 helips 的位置添加閱讀更多文本,請使用此功能

All text returned by the excerpt have the hated [...] at the end that is not clickable. To add a read more text in the place of the hellips, use this function

 function wpse_excerpt_more( $more ) {
    return ' <a class="read-more" href="'. get_permalink( get_the_ID() ) . '">' . __('Read More', 'your-text-domain') . '</a>';
}
add_filter( 'excerpt_more', 'wpse_excerpt_more' );

編輯

摘錄第一段

我想保持完整,所以這里是第一段之后的摘錄

I want to keep this complete, so here is the excerpt that trims after the first paragraph

這是一個保持 HTML 標簽完整的功能,在摘錄的末尾添加一個閱讀更多"鏈接,并在第一段之后修剪摘錄.

Here is a function that keeps HTML tags in tact, adds a "Read More" link at the end of the excerpt and trims the excerpt after the first paragraph.

if ( ! function_exists( 'wpse0001_custom_wp_trim_excerpt' ) ) : 

function wpse0001_custom_wp_trim_excerpt($wpse0001_excerpt) {
global $post;
$raw_excerpt = $wpse0001_excerpt;
if ( '' == $wpse0001_excerpt ) {

$wpse0001_excerpt = get_the_content('');
$wpse0001_excerpt = strip_shortcodes( $wpse0001_excerpt );
$wpse0001_excerpt = apply_filters('the_content', $wpse0001_excerpt);
$wpse0001_excerpt = substr( $wpse0001_excerpt, 0, strpos( $wpse0001_excerpt, '</p>' ) + 4 );
$wpse0001_excerpt = str_replace(']]>', ']]&gt;', $wpse0001_excerpt);

$excerpt_end = ' <a href="'. esc_url( get_permalink() ) . '">' . '&nbsp;&raquo;&nbsp;' . sprintf(__( 'Read more about: %s &nbsp;&raquo;', 'pietergoosen' ), get_the_title()) . '</a>'; 
$excerpt_more = apply_filters('excerpt_more', ' ' . $excerpt_end); 

//$pos = strrpos($wpse0001_excerpt, '</');
//if ($pos !== false)
// Inside last HTML tag
//$wpse0001_excerpt = substr_replace($wpse0001_excerpt, $excerpt_end, $pos, 0);
//else
// After the content
$wpse0001_excerpt .= $excerpt_end;

return $wpse0001_excerpt;

}
return apply_filters('wpse0001_custom_wp_trim_excerpt', $wpse0001_excerpt, $raw_excerpt);
}

endif; 

remove_filter('get_the_excerpt', 'wp_trim_excerpt');
add_filter('get_the_excerpt', 'wpse0001_custom_wp_trim_excerpt');

這篇關于如何防止 Wordpress 在摘錄中剝離 HTML 標簽的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

Add programmatically a downloadable file to Woocommerce products(以編程方式將可下載文件添加到 Woocommerce 產品)
Get today#39;s total orders count for each product in Woocommerce(獲取今天 Woocommerce 中每種產品的總訂單數)
Add Custom registration fields in WooCommerce and phone field validation issue(在 WooCommerce 和電話字段驗證問題中添加自定義注冊字段)
Add a select field that will change price in Woocommerce simple products(在 Woocommerce 簡單產品中添加一個將更改價格的選擇字段)
Add custom columns to admin products list in WooCommerce 3(在 WooCommerce 3 中將自定義列添加到管理產品列表)
Customizing checkout quot;Place Orderquot; button output html(自定義結帳“下訂單按鈕輸出html)
主站蜘蛛池模板: 视频一二三区 | 日韩手机在线看片 | 免费看黄视频网站 | 久久久久久亚洲国产精品 | 日韩福利 | 成人av电影免费在线观看 | 日韩在线免费视频 | 少妇精品久久久久久久久久 | 午夜精品久久久久久久99黑人 | 国产成人福利 | 亚洲视频在线播放 | 一区二区三区视频在线免费观看 | 亚洲精品久久久一区二区三区 | 99热国产在线播放 | 夜夜爽99久久国产综合精品女不卡 | 五月婷婷在线播放 | 在线观看毛片网站 | 欧美日韩亚洲国产 | 久久福利电影 | 国产欧美精品一区二区色综合朱莉 | 日韩久久精品 | www亚洲精品 | 国内成人免费视频 | 日韩成人中文字幕 | 日韩高清一区 | 国产成人久久精品 | 亚洲日韩第一页 | 91视频进入 | 国产精品不卡视频 | 国产精品久久久久久久久免费 | 日日日视频 | 91久久精品视频 | 丝袜美腿一区二区三区 | 在线不卡视频 | 精品一区二区av | 日韩欧美在线观看一区 | 久久国产精品免费视频 | 国产精品久久久久久婷婷天堂 | 久久精品91久久久久久再现 | 免费v片在线观看 | 欧美久久久久 |