লুপের বাইরে থেকে পোস্ট সামগ্রী পান


22

লুপের বাইরে অন্য থেকে সামগ্রী পাওয়ার কোনও উপায় আছে? আইডিটি 302 এবং আমি এর লিখিত সামগ্রী অন্য পৃষ্ঠায় প্রদর্শিত করতে হবে।


আইডি জানেন না? ব্যবহার করুন get_queried_object_id()! বিকাশকারী.ওয়ার্ডপ্রেস.অর্গ
রেফারেন্স

উত্তর:


39

আপনি কোনও স্থির পৃষ্ঠার অবজেক্টটি get_page()ফেরত দিতে ব্যবহার করতে পারেন $post:

$page_id = 302;
$page_object = get_page( $page_id );
echo $page_object->post_content;

সম্পাদন করা

একইভাবে, আপনি কোনও পোস্টের অবজেক্টটি get_post()ফেরত দিতে ব্যবহার করতে পারেন $post:

$post_id = 302;
$post_object = get_post( $post_id );
echo $post_object->post_content;

এটি ব্যবহার করার পরে কি শর্টকোডগুলি এখনও কাজ করে?
টিম বাশ

সবেমাত্র এটি পাওয়া যায় না। setup_postdata( $post );প্রথমে ব্যবহার করুন , তার পরে, আপনি ব্যবহার করতে পারেনthe_content();
টিম বাশ

4
আপনি কেবল চালাতে পেরেছিলেনapply_filters( 'the_content', $post_object->post_content );
নাথন পাওয়েল

6

লুপের বাইরে পোস্টের সামগ্রী পেতে আপনি এই জাতীয় কিছু লিখতে পারেন

global $post;
$content = $post->post_content;

if ( !empty( $content ) ) :
    echo $content;
endif;

3

যদি আপনার সামগ্রীতে শর্টকোড অন্তর্ভুক্ত থাকে তবে আপনার ব্যবহার করা উচিত:

$post_id = 22;        
$post_object = get_post( $post_id );        
echo do_shortcode( $post_object->post_content );


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

এবং এটি আপনার কোড এবং মূল শর্টকোডের কোডের মধ্যে সংযোগ বাড়িয়ে তোলে। শর্টকোডের ব্যাকিং পদ্ধতিটি যদি কখনও পুনরায় নামকরণ করা হয় বা স্বাক্ষর পরিবর্তন হয় তবে আপনার কোডটি ভেঙে যাবে।
জেফ

1

সম্পূর্ণতার জন্য, উপরের টিমের মন্তব্যের উপর ভিত্তি করে এবং স্টিফেন হ্যারিসের নিবন্ধ থেকে অনুপ্রাণিত , যে সমাধানটি এর ব্যবহারকে সক্ষম করে the_content()তা হল:

$post_id = 302;
global $post;
$post = get_post($post_id);
setup_postdata( $post );
the_content();
wp_reset_postdata( $post );

এবং তাই ফিল্টারগুলি প্রয়োগ হয় (অনুচ্ছেদগুলি sertedোকানো হবে ইত্যাদি) এবং শর্টকোডগুলি কাজ করে।


এটি আমার ব্রাউজারটিকে প্রায় ক্র্যাশ করেছে: / এম্পারস্যান্ডটি সাহায্য করে তবে এটি এখনও শর্টকোডগুলি পার্স করে না p
জেড 8

0

যেহেতু আপনি আপনার টার্গেট পোস্ট আইডিটি জানেন (302), আপনি লুপটির বাইরে ব্যবহার করতে পারেন এই শর্টহ্যান্ড সিনট্যাক্সটি দরকারী খুঁজে পেতে পারেন (যদিও এর কার্য সম্পাদন অন্য কোনও বিকল্প পদ্ধতির মতো প্রায় একই রকম :)

echo(get_post_field('post_content',302));

0

আপনি get_post_data()লুপের বাইরে পোস্ট পেতে ফাংশনটি ব্যবহার করতে পারেন । এই কোডগুলি ফাংশন.এফপি-তে রাখুন

function get_post_data($postId) {
    global $wpdb;
    return $wpdb->get_row("SELECT * FROM $wpdb->posts WHERE ID=$postId");
}

এবং তারপরে প্রক্রিয়াটিতে আরও নিয়ন্ত্রণের জন্য এই স্নিপেট যুক্ত করুন

<?php $data = get_post_data(302);
    echo $data->post_date;     // post date
    echo $data->post_title;    // post title
    echo $data->post_content;  // post content
    echo $data->comment_count; // comments number
?>

0

আপনি যেমনটি বলেছিলেন তেমন সমাধানটি get_postএবং এর সাথে $post_object->post_contentব্যবহার করতে পারেন তবে আপনি পোস্ট পোস্টটি ব্যবহার করার আগে একটি চেক যোগ করতে ভুলবেন না:

function get_post_content( $post_id = null ) {
    $post_object = get_post( $post_id );
    if ( ! $post_object ) { return ''; }
    //else

    return apply_filters('the_content', $post_object->post_content);
}

echo get_post_content( $other_post_id );


-2

wp_reset_postdata();এটি কাজ করবে ব্যবহার করুন .. (সম্পাদিত)

<?php 
$args = array(
        'post_type' => 'posttype',
        'p' => 'post_id'
       );
$the_query = new WP_Query( $args );
if( have_posts() ) : while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
        <?php the_content(); ?>
    <?php endwhile; endif; 
wp_reset_postdata();
?>

পোস্ট টাইপ "পোস্ট", "পৃষ্ঠা" বা আপনার কাস্টম পোস্টের ধরণ হতে পারে। এখানে পি = 302 আপনার পোস্ট আইডি .. আশা করি এটি কার্যকর হবে।


2
query_postsপৃষ্ঠার কার্যকারিতা ভঙ্গ করার প্রয়োজন না হলে কখনও ব্যবহার করবেন না। সর্বদা ব্যবহার করুন WP_Queryবা get_postsকাস্টম প্রশ্নের জন্য :-)
পিটার গুজন

হ্যাঁ .. আপনি ঠিক বলেছেন .. এটি ডাব্লুপিওউ কিউরিও করতে পারে .. একই ফলাফল পাওয়া গেছে ..
জহিরুল ইসলাম মামুন

pre_get_postsফিল্টার এছাড়াও আছে , এবং the_post। এত বিস্তারিত।
নাথন পাওয়েল

-3

আপনি এক্স বিভাগে বিষয়বস্তু রাখতে পারেন এবং কোয়েরি_পোস্টটি এর আগে যেমন ব্যবহার করতে পারেন:

    <?php query_posts('cat=X&showposts=1'); ?>
    <?php while (have_posts()) : the_post(); ?>
          <?= get_the_content(); ?>
    <?php endwhile; ?>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.