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


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.