লুপের বাইরে_এক্সসার্ট () পেতে wp_trim_excerpt ব্যবহার করা


20

আমি এমন একটি থিম তৈরি করছি যা সম্ভাব্য কয়েক ডজন পোস্টের জন্য হোমপেজে অংশগুলি প্রদর্শন করতে চলেছে। আমার সমস্ত পোস্টে ম্যানুয়াল অংশ নেই, তাই $post->post_excerptঅনেকগুলি পোস্টের জন্য খালি। কোনও ম্যানুয়াল অংশ নেই এমন ইভেন্টে, আমি বিল্ট-ইন get_the_excerpt () ফাংশনটি ব্যবহার করতে চাই, তবে এটি লুপের বাইরে উপলভ্য নয়।

ফাংশনটি সন্ধান করে, দেখে মনে হচ্ছে এটি উড়ানের অংশগুলি তৈরি করতে ডাব্লুপি-অন্তর্ভুক্ত / ফরম্যাটিং.এফপি থেকে wp_trim_excerpt ব্যবহার করে। আমি এটিকে আমার কোডে কল দিচ্ছি wp_trim_excerpt( $item->post_content ), তবে এটি কেবল সম্পূর্ণ সামগ্রীটি ফিরিয়ে দিচ্ছে। আমি কি ভুল কিছু করছি?

আমি জানি যে একটি অংশ তৈরি করার জন্য আমি আমার নিজস্ব ফাংশন তৈরি করতে পারি, তবে আমি আমার কোডটি অন্যান্য সম্ভাব্য প্লাগইন / ফিল্টারগুলির সাথে সামঞ্জস্য রেখে, যেখানে সম্ভব সেখানে অন্তর্নির্মিত ফাংশনগুলি ব্যবহার করতে চাই।

http://adambrown.info/p/wp_hooks/hook/wp_trim_excerpt?version=3.0&file=wp-includes/formatting.php


আপনি উদ্ধৃতি ফিল্টারগুলি কল করার চেষ্টা করতে পারেন ...$myvar = apply_filters( 'the_excerpt', $myvar );
t31os

উত্তর:


22

যেহেতু ডাব্লুপিপি ৩.৩.০, wp_trim_words()আপনি যদি সেই সামগ্রীর জন্য একটি অংশ তৈরি করতে চান তা পেতে সক্ষম হন। আশা করি এটি কারও পক্ষে সহায়ক এবং এটি আপনার নিজের শব্দ গণনা ফাংশন তৈরি করে সংরক্ষণ করে।

http://codex.wordpress.org/Function_Reference/wp_trim_words


8

wp_trim_excerpt() কিছুটা কৌতূহলী যান্ত্রিকতা রয়েছে - যদি এতে কিছু দেওয়া হয় তবে তা কিছুই করে না।

এর পিছনে এখানে মৌলিক যুক্তি রয়েছে:

  • get_the_excerpt() ম্যানুয়াল উদ্ধৃতি জন্য চেক;
  • wp_trim_excerpt() কোনও ম্যানুয়াল অংশ নেই এবং কন্টেন্ট বা টিজার থেকে একটি তৈরি করে যদি চিমগুলি।

উভয়ই বিশ্বব্যাপী ভেরিয়েবল এবং তাই লুপের সাথে শক্তভাবে আবদ্ধ।

লুপের বাইরে আপনি কোডটি বাইরে নিয়ে wp_trim_excerpt()নিজের ট্রিম ফাংশনটি লেখার চেয়ে ভাল ।


6

হালনাগাদ:

এখানে আমি ব্যবহৃত wp_trim_excerpt () এর একটি ডেরাইভেটিভ is পুরোপুরি কাজ করে। ওয়ার্ডপ্রেস সংস্করণ 3.0.4 থেকে প্রাপ্ত

function my_excerpt($text, $excerpt)
{
    if ($excerpt) return $excerpt;

    $text = strip_shortcodes( $text );

    $text = apply_filters('the_content', $text);
    $text = str_replace(']]>', ']]>', $text);
    $text = strip_tags($text);
    $excerpt_length = apply_filters('excerpt_length', 55);
    $excerpt_more = apply_filters('excerpt_more', ' ' . '[...]');
    $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);
}

আপনাকে নতুন উত্তর পোস্ট করতে হবে না, আপনি নতুন তথ্য অন্তর্ভুক্ত করতে সর্বদা আপনার পুরানো সম্পাদনা করতে পারেন। আপনি উদাহরণস্বরূপ, ডাব্লুপি কোডের লিঙ্কটি আপনার প্রথম উত্তর থেকে এই উত্তরটিতে অনুলিপি করতে পারেন এবং তারপরে আপনার প্রথম উত্তরটি মুছতে পারেন।
জান ফ্যাব্রি

সেখানে অনুলিপি / পাস্টারদের জন্য: $ Raw_excerpt = $ পাঠ্য যোগ করুন;
স্বেটোস্লাভ মেরিনভ

1

প্যারামিটার হিসাবে পোস্ট অবজেক্ট বা একটি পোস্ট আইডি গ্রহণ করে এমন একটি "ট্রিম_এক্সসার্ট" নিয়ে আমার এখানে ক্লিক করুন।

স্পষ্টতই মূল বিষয়গুলির উপর ভিত্তি করে। জানেন না কেন এই (এবং get_the_author ()) এর নন-লুপ সমতুল্য নেই।

/**
     * Generates an excerpt from the content, if needed.
     *
     * @param int|object $post_or_id can be the post ID, or the actual $post object itself
     * @param string $excerpt_more the text that is applied to the end of the excerpt if we algorithically snip it
     * @return string the snipped excerpt or the manual excerpt if it exists         
     */
    function zg_trim_excerpt($post_or_id, $excerpt_more = ' [...]') {
        if ( is_object( $post_or_id ) ) $postObj = $post_or_id;
        else $postObj = get_post($post_or_id);

        $raw_excerpt = $text = $postObj->post_excerpt;
        if ( '' == $text ) {
            $text = $postObj->post_content;

            $text = strip_shortcodes( $text );

            $text = apply_filters('the_content', $text);
            $text = str_replace(']]>', ']]>', $text);
            $text = strip_tags($text);
            $excerpt_length = apply_filters('excerpt_length', 55);

            // don't automatically assume we will be using the global "read more" link provided by the theme
            // $excerpt_more = apply_filters('excerpt_more', ' ' . '[...]');
            $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

রাস্ট থেকে +1 এটি অত্যন্ত অদ্ভুত যে get_the_excerpt ($ পোস্ট-> আইডি) এর মতো কোনও জিনিস নেই, যখন এটি হওয়া উচিত একেবারে স্পষ্ট হওয়া উচিত। যাইহোক, এখানে ওয়ার্ডপ্রেস সংস্করণে p.০.৪ রয়েছে wp_trim_excerpt ()

http://core.trac.wordpress.org/browser/tags/3.0.4/wp-includes/formatting.php

function wp_trim_excerpt($text) {
1824            $raw_excerpt = $text;
1825            if ( '' == $text ) {
1826                    $text = get_the_content('');
1827    
1828                    $text = strip_shortcodes( $text );
1829    
1830                    $text = apply_filters('the_content', $text);
1831                    $text = str_replace(']]>', ']]>', $text);
1832                    $text = strip_tags($text);
1833                    $excerpt_length = apply_filters('excerpt_length', 55);
1834                    $excerpt_more = apply_filters('excerpt_more', ' ' . '[...]');
1835                    $words = preg_split("/[\n\r\t ]+/", $text, $excerpt_length + 1, PREG_SPLIT_NO_EMPTY);
1836                    if ( count($words) > $excerpt_length ) {
1837                            array_pop($words);
1838                            $text = implode(' ', $words);
1839                            $text = $text . $excerpt_more;
1840                    } else {
1841                            $text = implode(' ', $words);
1842                    }
1843            }
1844            return apply_filters('wp_trim_excerpt', $text, $raw_excerpt);
1845    }

আপনি 1826 লাইনে দেখতে পাচ্ছেন যে এটি get_the_contents এর মাধ্যমে $ পোস্ট গ্লোবাল ভেরিয়েবলের সাথে লিঙ্কযুক্ত। এবং হ্যাঁ, তারা কী ভাবছিল তা আমার কোনও ধারণা নেই। তবে এখান থেকে get_the_conte টি আপনার নিজের my_excerpt এর $ পাঠ্যের সাথে প্রতিস্থাপন করুন এবং এটি একই ধরণের আচরণ করা উচিত।


আজুর_আরডি : wp_trim_words () ব্যবহারকারীর বিবেচনা করুন

0

Get_the_content () ফাংশনটি সম্পূর্ণ সামগ্রীতে ফিরে আসবে যদি আরও! = 0.

পরিবর্তিত wp_trim_excerpt () ফাংশন:

function wp_trim_excerpt($text) {
    $raw_excerpt = $text;
    if ( '' == $text ) {
        global $more;
        $tmp = $more;
        $more = 0;
        $text = get_the_content('');
        $more = $tmp;

        $text = strip_shortcodes( $text );

        $text = apply_filters('the_content', $text);
        $text = str_replace(']]>', ']]>', $text);
        $text = strip_tags($text);
        $excerpt_length = apply_filters('excerpt_length', 55);
        $excerpt_more = apply_filters('excerpt_more', ' ' . '[...]');
        $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

উপরে অন্যের উত্তর ব্যবহার করে, এখানে একটি সহজ উত্তর যা ভালভাবে কাজ করছে বলে মনে হচ্ছে:

global $post;

$excerpt = apply_filters('get_the_excerpt', get_post_field('post_excerpt', $post->ID));

if ( $excerpt == '' ) {
    $excerpt = wp_trim_words( $post->post_content, 55 );
}

আমি <meta>ওপেনগ্রাফের বিবরণ সংজ্ঞায়িত করতে একটি ফাংশনে ট্যাগগুলিতে এটি ব্যবহার করছি । সুতরাং আমি কেবল যোগ:

<meta property="og:description" content="<?php echo esc_html( $excerpt ); ?>" />

এইচটিএমএল বিষয়বস্তু সম্পর্কে কি? এই ট্যাগ কিভাবে মোকাবেলা করবে? সংক্ষিপ্তসারটি এইচটিএমএল ট্যাগ এবং শর্টকোডগুলিও সরিয়ে দেয়। যদি অংশটির প্রথম শব্দগুলিতে একটি চিত্র থাকে? এটি সম্ভবত আপনার লেআউটটি ভেঙে দেবে।
ব্রেট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.