Get_template_part লুপের সাথে একটি কাস্টম WP_Query ব্যবহার করা ery


9

একটি কাস্টম পোস্ট ধরণের জন্য আমার কাছে একটি প্রশ্ন রয়েছে:

<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$books = new WP_Query(array(
    'post_type' => 'wiki',
    'posts_per_page' => '50',
    'paged' => $paged
));
?>

এবং আমি লুপ-বই.এফপি ব্যবহার করে এই পোস্টগুলির মাধ্যমে লুপ করতে চাই:

<?php get_template_part( 'loop', 'books' ); ?>

লুপ-বুকস.এফপি এর অভ্যন্তরে আমি নিয়মিত লুপ.এফপি এর মতোই have বইয়ের ক্যোয়ারীর সাথে কাজ করার জন্য কেবলমাত্র have_posts এবং the_post ফাংশনটি পরিবর্তন করেছি:

<?php if ( $books->have_posts() ) : ?>      
    <?php while ($books->have_posts()) : $books->the_post(); ?>
        <?php the_title(); ?><br/>
    <?php endwhile; ?>
<?php endif; ?>

তবে এর পরে, আমি পিএইচপি ত্রুটি পেয়েছি:

Fatal error: Call to a member function have_posts() on a non-object in .../loop-books.php on line 1

সুতরাং দেখে মনে হচ্ছে get বইগুলির ভেরিয়েবলটি get_template_part ফাংশনের ভিতরে পাওয়া যায় না। আমি কীভাবে এই সমস্যাটি সমাধান করতে পারি? আমি যদি লুপ-বুকের ভিতরে $ বইয়ের ক্যোয়ারী রাখি ph পিপি এটির কাজটি ঠিকঠাক করে তবে আমি সেগুলি আলাদা করতে চাই।


$books->লুপ-বুকস.এফপি থেকে মুছে ফেলার চেষ্টা করুন এবং আমি আশা করি এটি কার্যকর হবে।
রোহিত পান্ডে

যদি আমি $ বই-> অংশটি সরিয়ে ফেলি তবে এটি একটি ডিফল্ট ক্যোয়ারী ব্যবহার করবে সুতরাং এটি আমার পক্ষে ভাল না।
Passatgt

আপনি যদি এর মতো কিছু ব্যবহার করছেন: <?php $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; $books = new WP_Query(array( 'post_type' => 'wiki', 'posts_per_page' => '50', 'paged' => $paged )); ?>এবং এখানে আপনি get_template_partক্যোয়ারী লোড করুন । এবং এর পরে যদি আপনি reset postdataতবে আমি মনে করি আমার সমাধানটি সঠিকভাবে কাজ করবে।
রোহিত পান্ডে

উত্তর:


5

আপনি হয় বিশ্বায়ন করতে হবে $books(আপনি যদি লেগে থাকতে চান get_template_part()) বা ব্যবহার করতে পারেন

require( locate_template( 'loop-books.php' ) );

পরিবর্তে get_template_part( 'loop', 'books' );। এই সমস্যা সৃষ্টি হয় $booksযে loop-books.phpশুধুমাত্র সংজ্ঞায়িত হচ্ছে সুযোগ এর get_template_part()


2
এই. যদিও, যদি ক্যোরিটি টেম্পলেট-অংশ ফাইলের সাথে $booksসুনির্দিষ্ট হয় তবে loop-books.phpআমি $books = new WP_Query()কলটি কেবল টেম্পলেট-অংশ ফাইলের মধ্যে রাখার পরামর্শ দেব ।
চিপ বেনেট

ধন্যবাদ। আপনার মতামত কি, ভাল সমাধানটি কোনটি?
Passatgt

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

1
@ পাসসটগেট যতদূর ভাল, উপরের মন্তব্যগুলি দেখুন, আমি বরং একটি ফাইল দিয়ে যাচ্ছি এবং এটি দিয়ে শেষ করব। আপনার যদি তাদের অবশ্যই আলাদা করে দেওয়া হয় তবে আমি locate_template()বিশ্বব্যাপী নেমস্পেসের বিশৃঙ্খলা না করার জন্য বিকল্পটি নিয়ে যাব ।
জোহানেস পিল

ঠিক আছে ধন্যবাদ. আমি তাদের আলাদা করতে চাইছি কারণ আমি অন্যান্য বিভাগগুলির / ট্যাক্সনোমির উপর ভিত্তি করে অন্যান্য প্রশ্নের সাথেও একই লুপটি ব্যবহার করতে চাই
Passatgt

8

একটি বিকল্প পদ্ধতি: লুপটি খুলুন / বন্ধ করুন এবং তারপরে লুপ সামগ্রীর জন্য loop-books.phpকেবল মার্কআপটি ব্যবহার করুন। উদাহরণ:

<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
// Get books query
$books = new WP_Query(array(
    'post_type' => 'wiki',
    'posts_per_page' => '50',
    'paged' => $paged
));
// Open books loop
if ( $books->have_posts() ) :     
    while ($books->have_posts()) : $books->the_post();
        // Get loop markup
        get_template_part( 'loop', 'books' );
// Close books loop
    endwhile;
endif;
?>

তারপরে, এর ভিতরে loop-books.php:

<?php the_title(); ?><br/>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.