সেটআপ_পোস্টডটা () মনে হচ্ছে কাজ করছে না?


12

আমি নিশ্চিত না কেন তবে আমি get_posts()কিছু ডেটা জিজ্ঞাসা করেছি। তারপরে আমি ব্যবহার করেছি setup_postdata()... আমি মনে করি এটির ব্যবহারটি যাতে আমি the_permalink()নতুন পোস্টের ডেটা সহ ইত্যাদি জাতীয় ফাংশন ব্যবহার করতে পারি ?

<?php foreach ($childPosts as $cp) : setup_postdata($cp); ?>

<article <?php post_class() ?> id="post-<?php the_ID(); ?>">
  <h1><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h1>
  <?php if (has_post_thumbnail()) : ?>
  <a href="<?php the_permalink() ?>"><?php the_post_thumbnail(($hasOutputNotFeaturedDiv) ? 'thumb-small' : null) ?></a>
  <?php endif; ?>
  <?php the_excerpt(); ?>
  <p class="more"><a href="<?php the_permalink() ?>">Read more ...</a></p>
  <?php include (TEMPLATEPATH . '/inc/meta.php' ); ?>
</article>

<?php endforeach; ?>

তবে দেখা যাচ্ছে যে কেবলমাত্র the_excerptনতুন পোস্ট ডেটা মান রয়েছে, কেন এটি? আমি দেখতে পেলাম যে আমি এটি ব্যবহার echo get_the_permalink($cp)করি ঠিক আছে। তবে আমি মনে করি সংক্ষিপ্ত সংস্করণটি আরও ভাল হবে

উত্তর:


32

আমি ভুল হতে পারে, কিন্তু আমি কি দেখছি মধ্য থেকে "setup_postdata ()" ব্যবহার করা উচিত যখন একটি কাস্টম নির্বাচন কোয়েরি (শুধুমাত্র query_posts) করছেন: http://codex.wordpress.org/Displaying_Posts_Using_a_Custom_Select_Query

পাশাপাশি, আপনি এবং "the_permalink) (" কাস্টম নির্বাচন কোয়েরি মতো ট্যাগ "the_title ()" ব্যবহার করতে চান ... আপনি পরিবর্তনশীল নাম ব্যবহার করতে হবে $ পোস্ট setup_postdata মধ্যে বিশেষভাবে (না অন্য পরিবর্তনশীল নাম) ( ) - যেমন ভাল - আপনার "ফোরচ" লুপের আগে আপনাকে গ্লোবাল $ পোস্টে কল করা উচিত ...

সুতরাং মূলত যে উদাহরণটি অনুসরণ করুন কোডেক্স লিঙ্কে। এবং পরিবর্তনশীল নাম name পোস্ট পরিবর্তন করবেন না - অন্যথায় এটি এটি ভেঙে দেয়।

আছে HTH


2
"আপনার গ্লোবাল $ পোস্ট কল করা উচিত"। হ্যাঁ! কেন কোডেক্সে তা নেই
— AlxVallejo

27

প্রতিস্থাপন

foreach ( $childPosts as $cp ) : setup_postdata( $cp );

সঙ্গে

foreach ( $childPosts as $post ) : setup_postdata( $post );

সুতরাং আপনার $postসাথে সঠিক ভেরিয়েবলটি ব্যবহার করতে হবে setup_postdata()।


এটি আমার যে সমস্যাটি ছিল তা ঠিক করেছিল fixed চিয়ারস সাথী
— জেফ কে।

2
কেউ এই বিয়ার কিনে! আপনাকে ধন্যবাদ .. কোনও স্থানীয় ধারণা কেন / কীভাবে গণ্ডগোল করতে পারে তার কোনও ধারণা setup_postdata()?
— ওডিস

রহস্যময়। যখন আপনি এটি প্যারামিটার হিসাবে পাস করছেন তখন একটি নির্দিষ্ট ভেরিয়েবলের নাম প্রয়োজন তাই অযৌক্তিক মনে হয়।
— গ্যাভিন

6

আপনি সেটআপ_পোস্টডেটা () কোথায় ব্যবহার করছেন তার উপর নির্ভর করে (এটি যদি প্রধান লুপে না হয়, বা কোনও ফাংশন / সাইডবার উইজেটে থাকে, উদাহরণস্বরূপ), আপনাকে ঘোষণা করতেও হতে পারে -

global $post;

4

global post;setup_postdata($post);আপনি যদি the_title()আদেশের পরিবার ইত্যাদি ব্যবহার করতে চান তবে এটি কাজ করে না

এটি https://codex.wordpress.org/Function_References/setup_postdata এ রয়েছে

পরিবর্তে ব্যবহার

// global $post; setup_postdata($post_object); //don't do this!
setup_postdata( $GLOBALS['post'] =& $post_object );

... এটি নিশ্চিত করুন যে আপনার $post_objectবৈধ WP_Post অবজেক্ট।


1
এই উত্তরটি আসলে ওপি: পি
— ধমক দেবার

1

অনুসন্ধানের পোস্টগুলিতে কেবলমাত্র আর্গুমেন্টের সেট সেট করে সাধারণ লুপ ব্যবহার করুন। তারপরে শেষে ক্যোয়ারীটি পুনরায় সেট করুন।

<?php 

    // makes query respect paging rules
    $paged = get_query_var('paged');

    // defining the arguements for the custom loop
    $variablenameQuery = array(
        'post_type'                 => 'seating-charts',
        'post_status'               => 'publish',
        'cust_tax_name'             => 'custom-tax-term',
        'posts_per_page'            => -1, // neg 1 means all posts
        'orderby'                   => 'date',
        'order'                     => 'ASC',
        'paged'                     => $paged,
    ); // end query

    // pass result into query_posts to get result
    query_posts($variablenameQuery);

?>
<?php if (have_posts()) : ?>

    <?php while (have_posts()) : the_post(); ?>

        <?php // Individual Post Styling ?>

    <?php endwhile; ?>

        <?php // paged navigation - next post, previous post... ?>

    <?php else : ?>

    <h3>Ooops looks like there was an issue. Please <a href="<?php echo get_option('home'); ?>/contact" title="Contact Us">get in touch</a> with us and we'll get the problem fixed.</h3>

<?php endif; ?>

<!-- resets the WordPress Query -->
<?php wp_reset_query(); ?>

ধন্যবাদ, এটি কাজ করে। তবে কেবল বোঝার জন্য, আপনি কি জানেন না কেন কাজ setup_postdata()করে না? আমি কি এটি ভুলভাবে ব্যবহার করেছি?
— জিউ মেনগ

1
@ জিউমেং - সমস্যা সমাধানের $postপরিবর্তে ব্যবহার করছেন কিনা তা দেখুন $cp।
— t31os

আমি @ t31os পরামর্শের জন্য ভোট দিয়েছি। কোডেক্সের উদাহরণগুলি এর মতো ব্যবহার দেখায় এবং WordPress পোস্টটি ওয়ার্ডপ্রেসে একটি বিশেষ পরিবর্তনশীল তাই এটি আপনার ব্যবহারের চেয়ে লুপের ভিতরে আরও বেশি কিছু করতে পারে।
— curtismchale

@ t31os, @ কর্টিজমলে, এটি খুব বেশি কাজ করে বলে মনে হচ্ছে না। এটি এখনও একই ফলাফল দেয়
— জিউ মেনগ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.