অংশগুলিতে এইচটিএমএলকে অনুমতি দিন


56

এখানে আমার সংক্ষিপ্ত কোড।

// Generate custom excerpt length
function wpbx_excerpt_length($length) {
    return 300;
}
add_filter('excerpt_length', 'wpbx_excerpt_length');

আমি কীভাবে এইচটিএমএলকে অনুমতি দেব <a> <b> <i> <br>

উত্তর:


124

এক্সারপটস সম্পূর্ণ গাইড

আমি সম্প্রতি উদ্ধৃতাংশগুলি সম্পর্কে কয়েকটি প্রশ্নের উত্তর দিয়েছি, তাই আমি যতটা পারি তার বিস্তৃত বিবরণ দিতে যাচ্ছি।

মুখবন্ধ

কোডটি কোথায় যাওয়া উচিত, এবং এই উত্তরটি থেকে এই প্রশ্ন থেকে একাধিক প্রশ্ন উত্থাপিত হয়েছে বলে মনে হয়, এটি সত্যই আপনার উপর নির্ভর করে এবং আপনি কীভাবে উপযুক্ত দেখেন। কয়েকটি বিকল্প রয়েছে যেখানে আপনি কোডটি রাখতে পারেন (যদি স্পষ্টভাবে বিবৃত না করা হয়):

  • আপনার থিমের ফাংশন.এফপি বা কোনও ফাইল ফাংশন ফাইল হিসাবে ব্যবহার করুন। আপনি যখন এটি করবেন তখন কেবল মনে রাখবেন, থিমটি যদি আপনার নিজস্ব না হয় তবে আপনি যখন আপনার থিমটি আপগ্রেড করবেন তখন সমস্ত পরিবর্তন হারাবে

  • চাইল্ড থিমটিতে কোডটি ব্যবহার করা আরও ভাল উপায়। উপরে হিসাবে, ফাংশন.এফপি বা ফাংশন সম্পর্কিত ফাইলটিতে

  • একটি প্লাগইনে কোডটি ব্যবহার করুন। এটি পছন্দসই উপায় কারণ এটি সমস্ত থিম জুড়ে কোড উপলব্ধ করে। আপনি যদি থিমগুলি স্যুইচ করেন, আপনাকে একই কোডটি পুনরায় লেখার বিষয়ে চিন্তা করতে হবে না।

আমি আশা করি এটি কিছুটা পরিষ্কার করে দিয়েছে :-)

এইচটিএমএল ট্যাগস / ফর্ম্যাটিং

the_excerpt()প্রথমত কোনও প্যারামিটার গ্রহণ করে না, তাই এতে কোনও কিছুই প্রেরণ করা যায় না। এটি এমন একটি সত্য যা the_excerpt()55 টি শব্দের সাথে সামগ্রীটি ছাঁটাই করে দেয় এবং পাঠ্য ফেরত দেওয়ার আগে সমস্ত এইচটিএমএল ট্যাগ কেটে ফেলা হয়। the_excerpt()মধ্যে অবস্থিত / পোস্ট-template.php WP-অন্তর্ভুক্ত । অংশে নির্দিষ্ট বা সমস্ত এইচটিএমএল ট্যাগকে মঞ্জুরি দেওয়ার জন্য একটি নতুন অংশ তৈরি করতে হবে।

প্রথমত, আসল ফাংশনটি প্রথমে সরানো দরকার এবং তারপরে নতুন ফাংশনটি হুক করা দরকার get_the_excerpt। দয়া করে নোট করুন, এই নতুন অংশটি এখনও the_excerpt()টেমপ্লেট ফাইলগুলির মতো কলযোগ্য হবে , এটি পরিবর্তন করার দরকার নেই। get_the_excerpt()মধ্যে অবস্থিত / পোস্ট-template.php WP-অন্তর্ভুক্ত

উদ্ধৃতাংশ ছাঁটাইযুক্ত wp_trim_excerptপাঠ্যটি ফেরত দিতে ব্যবহার করে, তাই আমাদের wp_trim_excerptপ্রথমে উদ্ধৃতি ফিল্টারটি সরিয়ে ফেলতে হবে । wp_trim_excerpt()মধ্যে অবস্থিত WP-অন্তর্ভুক্ত / formatting.php , লাইন 2355. এভাবেই হল:

remove_filter('get_the_excerpt', 'wp_trim_excerpt');

আপনি এখন আপনার নতুন অংশটি যোগ করতে পারেন get_the_excerpt

add_filter('get_the_excerpt', 'wpse_custom_wp_trim_excerpt');

এইচটিএমএল ট্যাগ / ফর্ম্যাটিংয়ের অনুমতি দেওয়ার জন্য, আপনাকে কোন ট্যাগগুলি মঞ্জুর করতে হবে তা আমাদের নির্দিষ্ট করতে হবে। এটি strip_tagsঅর্জনের জন্য আপনি নীচের বিবৃতিটি ব্যবহার করতে পারেন

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

দ্বিতীয় যুক্তি wpse_allowedtags()হ'ল একটি ছোট ফাংশন যা ট্যাগ যুক্ত করার জন্য ব্যবহৃত হয় the_excerpt()তা মঞ্জুরি দেয়। বৈধ এইচটিএমএল 5 ট্যাগের একটি সম্পূর্ণ তালিকার জন্য, যান এবং এটি চেক আউট এখানে । এখানে ফাংশন রয়েছে, এতে যে কোনও এইচটিএমএল ট্যাগ যুক্ত করুন যা আপনাকে অনুমতি / রাখা দরকার

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

আপনার যদি সমস্ত এইচটিএমএল ট্যাগকে অনুমতি দেওয়ার দরকার হয়, এটি হ'ল কোনও ট্যাগ ছাড়াই নয়, তবে strips_tags()ফাংশনটি পুরোপুরি বাদ / অপসারণ করা যাবে।

একটি বিষয় লক্ষণীয়, যখন এইচটিএমএল ট্যাগগুলিকে অনুমতি দেওয়া হয়, এই ট্যাগগুলিকে শব্দ হিসাবে গণনা করা হয়, তাই ট্যাগ সহ এবং ট্যাগ ছাড়াই সংক্ষিপ্তসারগুলির জন্য আপনার শব্দ গণনা একরকম হবে না। এটি সংশোধন করার জন্য, আপনাকে প্রথমে আসল শব্দের গণনা থেকে এই ট্যাগগুলি সরিয়ে ফেলতে হবে যাতে কেবল শব্দগুলি গণনা করা যায়।

আমি একটি অংশ লিখেছি যা সমস্ত ট্যাগকে অনুমতি দেবে, কেবলমাত্র শব্দকে শব্দের হিসাবে গণনা করবে এবং শব্দের নির্ধারিত পরিমাণের পরে একটি বাক্য সম্পূর্ণ করবে (সুতরাং পাঠ্যটি মধ্য-বাক্যটি ছাঁটাই করা হবে না) এবং শেষ শব্দের পরে আরও একটি পাঠ্য পাঠ্য যুক্ত করবে ।

এখানে সম্পূর্ণ কোড

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) {
    $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_length && 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_more; /*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'); 

আপনার অতিরিক্ত প্রয়োজন এমন ফাংশনগুলি থেকে আপনি কেবল '//' সরাতে পারেন।

কাস্টম এক্সেরপেট দৈর্ঘ্য

কখনও কখনও আপনাকে বিভিন্ন দৈর্ঘ্যের সাধারণ অংশগুলি প্রদর্শন করতে হবে এবং প্রতিটি পোস্ট / ফাংশন / পৃষ্ঠার জন্য একটি অংশ লিখতে পারা যায় না। এখানে একটি দুর্দান্ত ছোট্ট ছোট্ট ফাংশন ব্যবহার করা হচ্ছে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, এবং শেষে আরও পড়ার লিঙ্কের সাহায্যে পাঠ্যটি ফিরিয়ে দেওয়া।

আপনি আপনার টেম্পলেটটিতে অনুসরণ হিসাবে এই উদ্ধৃতি কল করতে পারেন

echo wpse_custom_excerpts($limit);

$limitআপনার শব্দের গণনা কোথায় হবে, তাই 30 টি শব্দের একটি অংশ থাকবে

echo wpse_custom_excerpts(30);

এখানে কেবল একটি বিষয় মনে রাখবেন, যদি আপনি 55 টির বেশি সীমা নির্ধারণ করেন তবে উদ্ধৃতিটির দৈর্ঘ্য কেবল 55 শব্দই হওয়ায় কেবল 55 শব্দই ফিরে আসবে। যদি দীর্ঘ অংশগুলির প্রয়োজন হয় তবে তার get_the_contentপরিবর্তে ব্যবহার করুন।

কাস্টম এক্সারপেট দৈর্ঘ্য

আপনার যদি কেবল দৈর্ঘ্যের পরিবর্তন the_excerpt()করতে হয় তবে আপনি নীচের ফাংশনটি ব্যবহার করতে পারেন

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

মনে রাখবেন, আপনাকে 10 এর চেয়ে বড় অগ্রাধিকার সেট করতে হবে যাতে আপনার কাস্টম ফাংশনটি ডিফল্টর পরে কার্যকর হয়।

আরও পড়ুন লিঙ্ক

উদ্ধৃতি দ্বারা ফিরিয়ে দেওয়া সমস্ত পাঠ্যটি [...]ক্লিকযোগ্য নয় এমন শেষে ঘৃণা করে। Hellips এর জায়গায় আরও পড়ুন পাঠ্য যুক্ত করতে, এই ফাংশনটি ব্যবহার করুন

 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' );

সম্পাদনা

প্রথম অনুচ্ছেদ

আমি এটি সম্পূর্ণ রাখতে চাই, সুতরাং এখানে প্রথম অনুচ্ছেদের পরে ছাঁটা অংশগুলি এখানে দেওয়া হয়েছে।

এখানে এমন একটি ফাংশন যা এইচটিএমএল ট্যাগগুলিকে কৌশল অবলম্বন করে, অংশের শেষে একটি "আরও পড়ুন" লিঙ্ক যুক্ত করে এবং প্রথম অনুচ্ছেদের পরে অংশটি ছাঁটাই।

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_more;

            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');

29-10-2015 সম্পাদনা করুন

অংশের সংক্ষিপ্ত আকারে শব্দের পরিমাণ নির্ধারিত হলে সংক্ষিপ্তসারের পরে আরও পড়ার লিঙ্কটি প্রদর্শন না করার জন্য যে কারও কারও কাজের প্রয়োজন রয়েছে, দয়া করে নীচের প্রশ্নটি এবং উত্তরটি দেখুন


আমি এই অংশটি ঠিক কোথায় function wpse_allowedtags() { // Add custom tags to this string return '<script>,<style>,<br>,<em>,<i>,<ul>,<ol>,<li>,<a>,<p>,<img>,<video>,<audio>'; }বিভ্রান্ত করে
রেখেছি

1
এই সমস্ত কোড ভিতরে যায় functions.php। আপনি শুধু উপরে যে যোগ করতে পারেন if ( ! function_exists( 'wpse_custom_wp_trim_excerpt' ) ) :আপনারfunctions.php
পিটার Goosen

1
এনভিএম আমি কোডের
শীর্ষটি

1
এটি যদি ফাংশনে যায় ph পিএইচপি ফাইলটি কোনও আপডেটের সাথে আসে তখন ওভাররাইট হবে না?
এম সিগ্রিল্ম

3
@ এমসিগ্রায়েলম হ্যাঁ এটি হবে। এ কারণেই এটি আপনার সন্তানের থিমগুলির ফাংশন.এফপিতে যুক্ত করা গুরুত্বপূর্ণ । আপনি এটি অবশ্যই ব্যবহারযোগ্য প্লাগইনে যোগ করতে পারেন
পিটার গুজন

1

আপনার প্রয়োজন হলে আরও ট্যাগ যুক্ত করুন $allowed_tags = ...

function _20170529_excerpt($text) {
$raw_excerpt = $text;
if ( '' == $text ) {
    //Retrieve the post content. 
    $text = get_the_content('');

    //Delete all shortcode tags from the content. 
    $text = strip_shortcodes( $text );

    $text = apply_filters('the_content', $text);
    $text = str_replace(']]>', ']]&gt;', $text);

    $allowed_tags = '<a>,<b>,<br><i>'; 
    $text = strip_tags($text, $allowed_tags);

    $excerpt_word_count = 55; /*** MODIFY THIS. change the excerpt word count to any integer you like.***/
    $excerpt_length = apply_filters('excerpt_length', $excerpt_word_count); 

    $excerpt_end = '[...]'; /*** MODIFY THIS. change the excerpt endind to something else.***/
    $excerpt_more = apply_filters('excerpt_more', ' ' . $excerpt_end);

    $words = preg_split("/[\n\r\t ]+/", $text, $excerpt_length + 1, PREG_SPLIT_NO_EMPTY);
    if ( count($words) > $excerpt_length ) {
        array_pop($words);
        $text = implode(' ', $words);
        $text = $text . $excerpt_more;
    } else {
        $text = implode(' ', $words);
    }
}
return apply_filters('wp_trim_excerpt', $text, $raw_excerpt);
}

প্রেরণ থেকে:


0

আপনি উদ্ধৃত্তির জন্য সমৃদ্ধ পাঠ্য সম্পাদকও যুক্ত করতে পারেন, প্লাগইন ফাইল বা থিমের ফাংশন.এফপি ফাইলে কোডের নীচে যুক্ত করুন এবং আপনি উদ্ধৃতার জন্য এইচটিএমএল সম্পাদক দেখতে সক্ষম হবেন। তদতিরিক্ত, এটি এইচটিএমএল ফর্ম্যাটেও অংশগুলি রেন্ডার করবে। #cheers

আমি এটিকে কোথাও থেকে অনুলিপি করেছি তবে উত্সটি মনে নেই। আমি আমার সমস্ত প্রকল্পে এটি ব্যবহার করছি এবং এটি কাজ করছে।

এখানে চিত্র বর্ণনা লিখুন

/**
  * Replaces the default excerpt editor with TinyMCE.
*/
add_action( 'add_meta_boxes', array ( 'T5_Richtext_Excerpt', 'switch_boxes' ) );
class T5_Richtext_Excerpt
{
    /**
     * Replaces the meta boxes.
     *
     * @return void
     */
    public static function switch_boxes()
    {
        if ( ! post_type_supports( $GLOBALS['post']->post_type, 'excerpt' ) )
        {
            return;
        }

        remove_meta_box(
            'postexcerpt', // ID
            '',            // Screen, empty to support all post types
            'normal'      // Context
        );

        add_meta_box(
            'postexcerpt2',     // Reusing just 'postexcerpt' doesn't work.
            __( 'Excerpt' ),    // Title
            array ( __CLASS__, 'show' ), // Display function
            null,              // Screen, we use all screens with meta boxes.
            'normal',          // Context
            'core',            // Priority
        );
    }

    /**
     * Output for the meta box.
     *
     * @param  object $post
     * @return void
     */
    public static function show( $post )
    {
        ?>
        <label class="screen-reader-text" for="excerpt"><?php
        _e( 'Excerpt' )
        ?></label>
        <?php
            // We use the default name, 'excerpt', so we don’t have to care about
            // saving, other filters etc.
            wp_editor(
                self::unescape( $post->post_excerpt ),
                'excerpt',
                array (
                    'textarea_rows' => 15,
                    'media_buttons' => FALSE,
                    'teeny'         => TRUE,
                    'tinymce'       => TRUE
                )
            );
    }

    /**
     * The excerpt is escaped usually. This breaks the HTML editor.
     *
     * @param  string $str
     * @return string
     */
    public static function unescape( $str )
    {
        return str_replace(
            array ( '&lt;', '&gt;', '&quot;', '&amp;', '&nbsp;', '&amp;nbsp;' ),
                array ( '<',    '>',    '"',      '&',     ' ', ' ' ),
                $str
        );
    }
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.