কাস্টম লুপগুলির জন্য পৃষ্ঠা সংশোধন কীভাবে করবেন?


122

আমি একটি টেম্পলেট ফাইল / কাস্টম পৃষ্ঠার টেম্পলেটটিতে একটি কাস্টম / গৌণ ক্যোয়ারী যুক্ত করেছি; প্রধান ক্যোয়ারী লুপের পৃষ্ঠাগুলি ব্যবহারের পরিবর্তে আমি কীভাবে ওয়ার্ডপ্রেসকে আমার কাস্টম ক্যোয়ারীটিকে পৃষ্ঠাগুলির জন্য ব্যবহার করতে পারি?

অভিযোজ্য বস্তু

আমি এর মাধ্যমে মূল লুপ ক্যোয়ারীটি পরিবর্তন করেছি query_posts()। পৃষ্ঠাগুলি কেন কাজ করছে না এবং আমি কীভাবে এটি ঠিক করব?

উত্তর:


215

সমস্যাটি

ডিফল্টরূপে, যে কোনও প্রসঙ্গে, ওয়ার্ডপ্রেস পৃষ্ঠাগুলি নির্ধারণের জন্য মূল ক্যোয়ারী ব্যবহার করে। মূল ক্যোয়ারী অবজেক্টটি $wp_queryবিশ্বব্যাপী সংরক্ষণ করা হয় , যা মূল ক্যোয়ারী লুপ আউটপুট করতে ব্যবহৃত হয়:

if ( have_posts() ) : while ( have_posts() ) : the_post();

আপনি যখন একটি কাস্টম ক্যোয়ারী ব্যবহার করেন , আপনি সম্পূর্ণ পৃথক ক্যোয়ারী অবজেক্ট তৈরি করেন:

$custom_query = new WP_Query( $custom_query_args );

এবং এই ক্যোয়ারীটি সম্পূর্ণ আলাদা লুপের মাধ্যমে আউটপুট হয়:

if ( $custom_query->have_posts() ) : 
    while ( $custom_query->have_posts() ) : 
        $custom_query->the_post();

কিন্তু সহ পত্রাঙ্কন টেমপ্লেট ট্যাগ, previous_posts_link(), next_posts_link(), posts_nav_link(), এবং paginate_links(), তাদের আউটপুট বেস প্রধান ক্যোয়ারী বস্তুর , $wp_query। এই মূল ক্যোয়ারী পৃষ্ঠাবদ্ধ বা নাও থাকতে পারে। যদি বর্তমান প্রসঙ্গটি কোনও কাস্টম পৃষ্ঠার টেম্পলেট হয়, উদাহরণস্বরূপ, মূল $wp_queryঅবজেক্টটি কেবল একটি একক পোস্ট নিয়ে থাকবে - সেই পৃষ্ঠার আইডি যা কাস্টম পৃষ্ঠার টেম্পলেটটি নির্ধারিত হয়েছে।

যদি বর্তমান প্রসঙ্গটি কোনও প্রকারের সংরক্ষণাগার সূচক হয় তবে প্রধান $wp_queryপৃষ্ঠায় পৃষ্ঠাগুলি সৃষ্টির জন্য পর্যাপ্ত পোস্ট থাকতে পারে যা সমস্যার পরবর্তী অংশের দিকে নিয়ে যায়: মূল $wp_queryঅবজেক্টের জন্য ওয়ার্ডপ্রেস কোয়েরিতে একটি paged পরামিতি পাস করবে , তার উপর ভিত্তি করে pagedইউআরএল ক্যোয়ারী ভেরিয়েবল। যখন ক্যোয়ারীটি আনা হবে, তখন সেই pagedপ্যারামিটারটি ফিরিয়ে আনার জন্য কোন সেট পৃষ্ঠাতে পোস্ট করা হবে তা নির্ধারণ করতে ব্যবহৃত হবে। যদি প্রদর্শিত পৃষ্ঠাগুলি লিঙ্কটি ক্লিক করা হয় এবং পরের পৃষ্ঠাটি লোড করা হয়, তবে আপনার কাস্টম ক্যোরিয়ামটি জানার কোনও উপায় থাকবে না যে পৃষ্ঠাগুলি পরিবর্তন হয়েছে

সমাধান

কাস্টম ক্যোয়ারিতে সঠিক পেজ প্যারামিটার পাস করা

ধরে নিচ্ছি যে কাস্টম ক্যোয়ারী একটি আরোগুলি অ্যারে ব্যবহার করে:

$custom_query_args = array(
    // Custom query parameters go here
);

আপনাকে pagedঅ্যারেতে সঠিক পরামিতিটি দিতে হবে। আপনি এটির মাধ্যমে বর্তমান পৃষ্ঠাটি নির্ধারণ করতে ব্যবহৃত URL ক্যোয়ারী ভেরিয়েবলটি আনার মাধ্যমে এটি করতে পারেন get_query_var():

get_query_var( 'paged' );

এরপরে আপনি আপনার কাস্টম ক্যোয়ারী আরগস অ্যারেতে সেই প্যারামিটারটি যুক্ত করতে পারেন:

$custom_query_args['paged'] = get_query_var( 'paged' ) 
    ? get_query_var( 'paged' ) 
    : 1;

দ্রষ্টব্য: আপনার পৃষ্ঠার একটি হয়, তাহলে স্ট্যাটিক সামনে পাতা ব্যবহার নিশ্চিত করা pageপরিবর্তে pagedএকটি স্ট্যাটিক সামনে পাতা ব্যবহার যেমন pageএবং paged। একটি স্থিতিশীল সম্মুখ পৃষ্ঠার জন্য আপনার এটি হওয়া উচিত

$custom_query_args['paged'] = get_query_var( 'page' ) 
    ? get_query_var( 'page' ) 
    : 1;

এখন, কাস্টম ক্যোয়ারী আনার সময়, পৃষ্ঠাযুক্ত পোস্টগুলির সঠিক সেটটি ফিরে আসবে।

পৃষ্ঠাগুলি ফাংশনগুলির জন্য কাস্টম ক্যোয়ারী অবজেক্ট ব্যবহার করা

পৃষ্ঠার জন্য সঠিক ক্রিয়াকলাপ উত্পন্ন করার জন্য - যেমন কাস্টম ক্যোয়ারীর সাথে সম্পর্কিত পূর্ববর্তী / পরবর্তী / পৃষ্ঠার লিঙ্কগুলি - ওয়ার্ডপ্রেসকে কাস্টম কোয়েরিটি সনাক্ত করতে বাধ্য করা দরকার needs এটির জন্য "হ্যাক" এর কিছুটা প্রয়োজন: $wp_queryকাস্টম ক্যোয়ারী অবজেক্টের সাথে প্রধান বিষয়টিকে প্রতিস্থাপন করা $custom_query:

মূল ক্যোয়ারী অবজেক্টটি হ্যাক করুন

  1. মূল ক্যোয়ারী অবজেক্টটির ব্যাকআপ দিন: $temp_query = $wp_query
  2. মূল ক্যোয়ারী অবজেক্টটি নাল করুন: $wp_query = NULL;
  3. প্রধান ক্যোয়ারী অবজেক্টে কাস্টম ক্যোয়ারী অদলবদল করুন: $wp_query = $custom_query;

    $temp_query = $wp_query;
    $wp_query   = NULL;
    $wp_query   = $custom_query;
    

এই "হ্যাক" অবশ্যই যেকোন পৃষ্ঠাগুলির ফাংশন কল করার আগেই করা উচিত

মূল ক্যোয়ারী অবজেক্টটি রিসেট করুন

পৃষ্ঠাগুলি ফাংশনগুলি একবার আউটপুট হয়ে গেলে মূল ক্যোয়ারী অবজেক্টটি পুনরায় সেট করুন:

$wp_query = NULL;
$wp_query = $temp_query;

পৃষ্ঠাগুলি ফাংশন স্থির করে

previous_posts_link()ফাংশন সাধারণত, পত্রাঙ্কন নির্বিশেষে কাজ করবে। এটি কেবলমাত্র বর্তমান পৃষ্ঠাটি নির্ধারণ করে এবং তারপরে লিঙ্কটি আউটপুট করে page - 1। তবে next_posts_link()সঠিকভাবে আউটপুট দেওয়ার জন্য একটি স্থির প্রয়োজন । এটি কারণ প্যারামিটার next_posts_link()ব্যবহার করে max_num_pages:

<?php next_posts_link( $label , $max_pages ); ?>

অন্যান্য ক্যোয়ারী প্যারামিটারগুলির মতো, ডিফল্টরূপে ফাংশনটি max_num_pagesমূল $wp_queryঅবজেক্টের জন্য ব্যবহার করবে । বস্তুর next_posts_link()জন্য অ্যাকাউন্টে বাধ্য করার জন্য $custom_query, আপনাকে max_num_pagesফাংশনে পাস করতে হবে । আপনি $custom_queryঅবজেক্ট থেকে এই মানটি আনতে পারেন $custom_query->max_num_pages:

<?php next_posts_link( 'Older Posts' , $custom_query->max_num_pages ); ?>

সবগুলোকে একত্রে রাখ

নীচে সঠিকভাবে কার্যকরী পৃষ্ঠাগুলি ফাংশন সহ একটি কাস্টম ক্যোয়ারী লুপের একটি মৌলিক নির্মাণ:

// Define custom query parameters
$custom_query_args = array( /* Parameters go here */ );

// Get current page and append to custom query parameters array
$custom_query_args['paged'] = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1;

// Instantiate custom query
$custom_query = new WP_Query( $custom_query_args );

// Pagination fix
$temp_query = $wp_query;
$wp_query   = NULL;
$wp_query   = $custom_query;

// Output custom query loop
if ( $custom_query->have_posts() ) :
    while ( $custom_query->have_posts() ) :
        $custom_query->the_post();
        // Loop output goes here
    endwhile;
endif;
// Reset postdata
wp_reset_postdata();

// Custom query loop pagination
previous_posts_link( 'Older Posts' );
next_posts_link( 'Newer Posts', $custom_query->max_num_pages );

// Reset main query object
$wp_query = NULL;
$wp_query = $temp_query;

সংযোজন: কী query_posts()?

query_posts() মাধ্যমিক লুপগুলির জন্য

যদি আপনি query_posts()একটি কাস্টম লুপ আউটপুট ব্যবহার করে থাকেন WP_Query(), তবে তারপরে কাস্টম ক্যোয়ারির জন্য পৃথক বস্তুর তাত্ক্ষণিক ব্যবহার করে থাকেন _doing_it_wrong(), তবে আপনি হয়ে থাকেন এবং বেশ কয়েকটি সমস্যার মধ্যে চলে যাবেন ( যার মধ্যে কমপক্ষে পৃষ্ঠাগুলির সমস্যাগুলিও হবে)। এই সমস্যাগুলি সমাধানের প্রথম পদক্ষেপটি হ'ল অনুপযুক্ত ব্যবহারকে query_posts()একটি সঠিক WP_Query()কলে রূপান্তর করা ।

query_posts()প্রধান লুপটি সংশোধন করতে ব্যবহার করা হচ্ছে

যদি আপনি কেবল প্রধান লুপ ক্যোয়ারির জন্য প্যারামিটারগুলি পরিবর্তন করতে চান - যেমন প্রতি পৃষ্ঠায় পোস্ট পরিবর্তন করা বা কোনও বিভাগ বাদ দিয়ে - আপনি ব্যবহারে প্ররোচিত হতে পারেন query_posts()। কিন্তু আপনার এখনও করা উচিত নয়। আপনি যখন ব্যবহার করেন query_posts(), আপনি ওয়ার্ডপ্রেসকে মূল ক্যোয়ারী অবজেক্টটি প্রতিস্থাপন করতে বাধ্য করেন । (ওয়ার্ডপ্রেস আসলে একটি দ্বিতীয় ক্যোয়ারী তৈরি করে এবং ওভাররাইট করে $wp_query।) সমস্যাটি হ'ল, পৃষ্ঠাগুলি আপডেট করার প্রক্রিয়াটি খুব বেশি দেরিতে এই প্রতিস্থাপনটি করে।

সমাধান হুক মাধ্যমে পোস্ট আনার আগে মূল ক্যোয়ারী ফিল্টার করা হয়pre_get_posts

এটি বিভাগ টেম্পলেট ফাইল ( category.php) এ যুক্ত করার পরিবর্তে :

query_posts( array(
    'posts_per_page' => 5
) );

নিম্নলিখিতগুলিতে এতে যুক্ত করুন functions.php:

function wpse120407_pre_get_posts( $query ) {
    // Test for category archive index
    // and ensure that the query is the main query
    // and not a secondary query (such as a nav menu
    // or recent posts widget output, etc.
    if ( is_category() && $query->is_main_query() ) {
        // Modify posts per page
        $query->set( 'posts_per_page', 5 ); 
    }
}
add_action( 'pre_get_posts', 'wpse120407_pre_get_posts' );

এটি ব্লগ পোস্ট সূচি টেম্পলেট ফাইল ( home.php) যুক্ত করার পরিবর্তে :

query_posts( array(
    'cat' => '-5'
) );

নিম্নলিখিতগুলিতে এতে যুক্ত করুন functions.php:

function wpse120407_pre_get_posts( $query ) {
    // Test for main blog posts index
    // and ensure that the query is the main query
    // and not a secondary query (such as a nav menu
    // or recent posts widget output, etc.
    if ( is_home() && $query->is_main_query() ) {
        // Exclude category ID 5
        $query->set( 'category__not_in', array( 5 ) ); 
    }
}
add_action( 'pre_get_posts', 'wpse120407_pre_get_posts' );

এইভাবে, ওয়ার্ডপ্রেস $wp_queryকোনও টেমপ্লেট পরিবর্তনের প্রয়োজন নেই, পৃষ্ঠাগুলি নির্ধারণ করার সময় ইতিমধ্যে সংশোধিত অবজেক্টটি ব্যবহার করবে ।

কখন কোন ফাংশন ব্যবহার করবেন

গবেষণা এই প্রশ্ন ও উত্তর এবং এই প্রশ্ন ও উত্তর বুঝতে এবং কখন ব্যবহার করতে WP_Query, pre_get_postsএবং query_posts()


31
কোডেক্সের ইচ্ছের পৃষ্ঠাগুলি এত সম্পূর্ণ হতে পারে।
পিটার গুজন

চিপ, আপনি আমার দিন তৈরি!
tepkenvannkorn

1
চিপ, আপনি সবসময় এত সময় বাঁচান! ধন্যবাদ যদি আমি গুগল অনুসন্ধানে যাওয়ার আগে কেবল গুগল আপনাকে উচ্চতর উত্তর দেয় (গুগলারের জন্য কলআউট);) ধন্যবাদ
সেগিভ এসইও

আপনার উদাহরণটি ব্যবহার করে আমি পেজিংটি পেতে পারা পাচ্ছি না যতক্ষণ না আমি এই পৃষ্ঠার নীচে মাঝ পথে ((পরিবর্তে ?: শর্তাধীন) সন্ধান করা হিসাবে যদি একটি আইফ-ব্লক ব্যবহার না করি: থিমফরেস্ট.নেট / ফোরামস / থ্রেড / ,, খুব আশ্চর্যজনক। নাহলে এই উত্তর আমাকে অনেক কিছু শিখিয়েছে।
পি আউল

2
দুর্দান্ত উত্তর - 1 জিনিস, আমার একটি এজাক্স কলটিতে পরবর্তী / পূর্ববর্তী লিঙ্ক ফাংশনটি চালাতে সমস্যা হচ্ছে - এটি গ্রহণ করা ঠিক হবে না - চারপাশে একটি দ্রুত pagedখোঁজ পাওয়ার পরে আমি দেখতে পেলাম যে গ্লোবাল আপডেট হচ্ছে না (অ্যাডমিনের সাথে কিছু করার জন্য) ajax.php পরিবেশ) তাই আমি এটি যুক্ত করেছি: global $paged; $paged = $custom_query_args['paged']; এবং এটি কাজ করেছে :)
acSlater

21

পৃষ্ঠাগুলি সহ কাস্টম লুপের জন্য আমি এই কোডটি ব্যবহার করি:

<?php
if ( get_query_var('paged') ) {
    $paged = get_query_var('paged');
} elseif ( get_query_var('page') ) { // 'page' is used instead of 'paged' on Static Front Page
    $paged = get_query_var('page');
} else {
    $paged = 1;
}

$custom_query_args = array(
    'post_type' => 'post', 
    'posts_per_page' => get_option('posts_per_page'),
    'paged' => $paged,
    'post_status' => 'publish',
    'ignore_sticky_posts' => true,
    //'category_name' => 'custom-cat',
    'order' => 'DESC', // 'ASC'
    'orderby' => 'date' // modified | title | name | ID | rand
);
$custom_query = new WP_Query( $custom_query_args );

if ( $custom_query->have_posts() ) :
    while( $custom_query->have_posts() ) : $custom_query->the_post(); ?>

        <article <?php post_class(); ?>>
            <h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
            <small><?php the_time('F jS, Y') ?> by <?php the_author_posts_link() ?></small>
            <div><?php the_excerpt(); ?></div>
        </article>

    <?php
    endwhile;
    ?>

    <?php if ($custom_query->max_num_pages > 1) : // custom pagination  ?>
        <?php
        $orig_query = $wp_query; // fix for pagination to work
        $wp_query = $custom_query;
        ?>
        <nav class="prev-next-posts">
            <div class="prev-posts-link">
                <?php echo get_next_posts_link( 'Older Entries', $custom_query->max_num_pages ); ?>
            </div>
            <div class="next-posts-link">
                <?php echo get_previous_posts_link( 'Newer Entries' ); ?>
            </div>
        </nav>
        <?php
        $wp_query = $orig_query; // fix for pagination to work
        ?>
    <?php endif; ?>

<?php
    wp_reset_postdata(); // reset the query 
else:
    echo '<p>'.__('Sorry, no posts matched your criteria.').'</p>';
endif;
?>

উৎস:


1
এই উত্তরের বৈকল্পিক সহ আরও একটি সুন্দর টিউটোরিয়াল: কলম্যানিক ডটকম
কাস্টম- ওয়ার্ডপ্রেস-

5

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

আপনি উপরে উল্লিখিত হিসাবে প্যাগিনেট_লিঙ্কগুলি () ব্যবহার করে বেশিরভাগ ডিফল্টস (এবং ধরে নিচ্ছেন যে আপনি বেশ পারমলিক্স চালু করেছেন) আপনার পৃষ্ঠা লিঙ্কগুলি ডিফল্ট হবে mysite.ca/page-slug/page/#যা ভাল, তবে 404ত্রুটি ছুঁড়ে দেবে কারণ ওয়ার্ডপ্রেস সেই নির্দিষ্ট ইউআরএল কাঠামো সম্পর্কে জানে না এবং আসলে এটি হবে "পৃষ্ঠা" -র একটি শিশু পৃষ্ঠা সন্ধান করুন এটি "পৃষ্ঠা-স্লাগ" এর শিশু।

এখানে কৌশলটি একটি নিফটি পুনর্লিখনের নিয়ম সন্নিবেশ করা যা কেবলমাত্র সেই নির্দিষ্ট "সিউডো সংরক্ষণাগার পৃষ্ঠার" পৃষ্ঠার স্লাগের জন্য প্রযোজ্য যা /page/#/কাঠামো গ্রহণ করে এবং ওয়ার্ডপ্রেস CAN বুঝতে পারে এমন একটি ক্যোয়ারী স্ট্রিংয়ে এটি পুনরায় লিখে দেয় mysite.ca/?pagename=page-slug&paged=#। নোট করুন pagenameএবং pagedনা nameএবং page(যা আমাকে উত্তরটি এখানে অনুপ্রাণিত করে আক্ষরিকভাবে HOURS শোকের কারণ করেছে!)।

পুনর্নির্দেশের নিয়মটি এখানে:

add_rewrite_rule( "page-slug/page/([0-9]{1,})/?$", 'index.php?pagename=page-slug&paged=$matches[1]', "top" );

বরাবরের মতো, পুনর্লিখনের নিয়মগুলি পরিবর্তন করার সময়, অ্যাডমিনের ব্যাক-এন্ডে সেটিংস> পারমলিংকস এ গিয়ে আপনার পারমিলিকগুলি ফ্লাশ করতে ভুলবেন না।

আপনার যদি একাধিক পৃষ্ঠাগুলি থাকে যা এইভাবে আচরণ করে চলেছে (উদাহরণস্বরূপ, একাধিক কাস্টম পোস্ট ধরণের সাথে আচরণ করার সময়), আপনি প্রতিটি পৃষ্ঠা স্লাগের জন্য একটি নতুন পুনর্লিখনের নিয়ম তৈরি করা এড়াতে চাইতে পারেন। আমরা আরও জেনেরিক নিয়মিত অভিব্যক্তি লিখতে পারি যা আপনার চিহ্নিত কোনও পৃষ্ঠা স্লাগের জন্য কাজ করে।

একটি পদ্ধতির নীচে রয়েছে:

function wpse_120407_pseudo_archive_rewrite(){
    // Add the slugs of the pages that are using a Global Template to simulate being an "archive" page
    $pseudo_archive_pages = array(
        "all-movies",
        "all-actors"
    );

    $slug_clause = implode( "|", $pseudo_archive_pages );
    add_rewrite_rule( "($slug_clause)/page/([0-9]{1,})/?$", 'index.php?pagename=$matches[1]&paged=$matches[2]', "top" );
}
add_action( 'init', 'wpse_120407_pseudo_archive_rewrite' );

অসুবিধাগুলি / গুহাত

এই পদ্ধতির একটি অসুবিধা যা আমাকে আমার মুখে আরও খানিকটা ছুঁড়ে ফেলেছে তা হ'ল পেজ স্লাগের হার্ড কোডিং। যদি কোনও প্রশাসক যদি সেই ছদ্ম-সংরক্ষণাগার পৃষ্ঠার পৃষ্ঠা স্লাগ পরিবর্তন করে, আপনি টোস্ট - পুনরায় লেখার নিয়মটি আর মেলে না এবং আপনি ভয়ঙ্কর 404 পেয়ে যাবেন।

আমি নিশ্চিত নই যে আমি এই পদ্ধতির জন্য একটি কার্যকারিতা সম্পর্কে ভাবতে পারি, তবে এটি দুর্দান্ত হবে যদি এটি বিশ্বব্যাপী পৃষ্ঠার টেম্পলেট যা কোনওভাবে পুনর্লিখনের নিয়মকে ট্রিগার করেছিল। অন্য কেউ যদি particular নির্দিষ্ট বাদামকে ক্র্যাক না করে তবে কোনও দিন আমি এই উত্তরে আবার ঘুরে দেখতে পারি।


1
আপনি পোষ্ট সেভ হুক করতে পারেন, মেটা কী এর অধীনে পৃষ্ঠায় আপনার সংরক্ষণাগার টেমপ্লেট রয়েছে কিনা তা পরীক্ষা করে দেখুন _wp_page_template, তারপরে অন্য পুনর্লিখন এবং ফ্লাশ বিধি যুক্ত করুন।
মিলো

2

আমি এর মাধ্যমে মূল লুপ ক্যোয়ারীটি পরিবর্তন করেছি query_posts()। পৃষ্ঠাগুলি কেন কাজ করছে না এবং আমি কীভাবে এটি ঠিক করব?

চিপ তৈরি করা দুর্দান্ত উত্তরকে আজই সংশোধন করা দরকার।
কিছু সময়ের জন্য আমাদের $wp_the_queryচলক রয়েছে যা $wp_queryমূল ক্যোয়ারী কার্যকর করার পরে বৈশ্বিক সমান হতে হবে ।

এই কারণেই এই অংশটি চিপের উত্তর থেকে:

মূল ক্যোয়ারী অবজেক্টটি হ্যাক করুন

আর দরকার নেই। অস্থায়ী পরিবর্তনশীল তৈরির সাথে আমরা এই অংশটি ভুলে যেতে পারি।

// Pagination fix
$temp_query = $wp_query;
$wp_query   = NULL;
$wp_query   = $custom_query;

সুতরাং এখন আমরা কল করতে পারি:

$wp_query   = $wp_the_query;

বা আরও ভাল আমরা কল করতে পারেন:

wp_reset_query();

অন্যান্য সমস্ত চিপ রূপরেখা থেকে যায়। এই ক্যোয়ারী-রিসেট-অংশের পরে আপনি যে প্যাফিকেশন ফাংশনগুলিকে কল করতে পারেন f($wp_query)- সেগুলি $wp_queryবিশ্বব্যাপী নির্ভর করে ।


পৃষ্ঠাগুলি মেকানিক্স আরও উন্নত করার জন্য এবং ফাংশনটিতে আরও বেশি স্বাধীনতা দেওয়ার জন্য query_postsআমি এই সম্ভাব্য উন্নতিটি তৈরি করেছি:

https://core.trac.wordpress.org/ticket/39483


1
global $wp_query;
        $paged = get_query_var('paged', 1);

    $args = array( 
        'post_type' => '{your_post_type_name}',
        'meta_query' => array('{add your meta query argument if need}'),  
        'orderby' => 'modified',
        'order' => 'DESC',
        'posts_per_page' => 20,
        'paged' => $paged 
    );
    $query = new WP_Query($args);

    if($query->have_posts()):
        while ($query->have_posts()) : $query->the_post();
            //add your code here
        endwhile;
        wp_reset_query();

        //manage pagination based on custom Query.
        $GLOBALS['wp_query']->max_num_pages = $query->max_num_pages;
        the_posts_pagination(array(
            'mid_size' => 1,
            'prev_text' => __('Previous page', 'patelextensions'),
            'next_text' => __('Next page', 'patelextensions'),
            'before_page_number' => '<span class="meta-nav screen-reader-text">' . __('Page', 'patelextensions') . ' </span>',
        ));
    else:
    ?>
        <div class="container text-center"><?php echo _d('Result not found','30'); ?></div>
    <?php
        endif;
    ?>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.