আমি ওয়ার্ডপ্রেস থিম বিকাশে বেশ নতুন এবং আমি পিএইচপি তে আসছি না (আমি জাভা এবং সি # থেকে এসেছি) এবং এই কাস্টম থিমটিতে নিম্নলিখিত পরিস্থিতি রয়েছে
যেমন আপনি হোমপৃষ্ঠায় দেখতে পাচ্ছেন আমি প্রথমে বৈশিষ্ট্যযুক্ত পোস্টগুলি সহ একটি বিভাগ ( ইভিডেনজারে আর্টিকোলি নামকরণ ) দেখাব (আমি এটি একটি নির্দিষ্ট ট্যাগ ব্যবহার করে প্রয়োগ করেছি) এবং এর অধীনে আরও একটি ক্ষেত্র রয়েছে (নামটি আলটিমি আর্টিকোলি ) যেখানে সর্বশেষ পোস্ট রয়েছে এটি বৈশিষ্ট্যযুক্ত পোস্ট নয়।
এটি করতে আমি এই কোডটি ব্যবহার করি:
<section id="blog-posts">
<header class="header-sezione">
<h2>Articoli in evidenza</h2>
</header>
<!--<?php query_posts('tag=featured');?>-->
<?php
$featured = new WP_Query('tag=featured');
if ($featured->have_posts()) :
while ($featured->have_posts()) : $featured->the_post();
/*
* Include the post format-specific template for the content. If you want to
* use this in a child theme, then include a file called called content-___.php
* (where ___ is the post format) and that will be used instead.
*/
get_template_part('content', get_post_format());
endwhile;
wp_reset_postdata();
else :
// If no content, include the "No posts found" template.
get_template_part('content', 'none');
endif;
?>
<header class="header-sezione">
<h2>Ultimi Articoli</h2>
</header>
<?php
// get the term using the slug and the tag taxonomy
$term = get_term_by( 'slug', 'featured', 'post_tag' );
// pass the term_id to tag__not_in
query_posts( array( 'tag__not_in' => array ( $term->term_id )));
?>
<?php
if (have_posts()) :
// Start the Loop.
while (have_posts()) : the_post();
/*
* Include the post format-specific template for the content. If you want to
* use this in a child theme, then include a file called called content-___.php
* (where ___ is the post format) and that will be used instead.
*/
get_template_part('content', get_post_format());
endwhile;
else :
// If no content, include the "No posts found" template.
get_template_part('content', 'none');
endif;
?>
</section>
এটি দুর্দান্ত কাজ করে, তবে এই সমাধানটির গুণমান এবং এটি ঠিক কীভাবে কাজ করে সে সম্পর্কে আমার কিছু সন্দেহ আছে doubts
সমস্ত বৈশিষ্ট্যযুক্ত পোস্ট নির্বাচন করতে , আমি এই লাইনটি ব্যবহার করি যা একটি নতুন WP_Query
অবজেক্ট তৈরি করে যা নির্দিষ্ট ট্যাগযুক্ত কোয়েরিকে সংজ্ঞায়িত করে featured
:
$featured = new WP_Query('tag=featured');
তারপরে আমি এর have_posts()
পদ্ধতিটি ব্যবহার করে এই ক্যোয়ারির ফলাফলটিতে পুনরাবৃত্তি করি ।
সুতরাং, আমি যা বুঝতে পেরেছি, এটি ওয়ার্ডপ্রেস মূল ক্যোয়ারী নয়, এটি আমার তৈরি একটি নতুন ক্যোয়ারী। আমি যা বুঝতে পেরেছি তা থেকে আরও ভাল একটি নতুন ক্যোয়ারী তৈরি করা (যেমনটি হয়েছে) এবং যখন আমি এই ধরণের ক্রিয়াকলাপ করতে চাই তখন মূল ক্যোয়ারীটি ব্যবহার না করা।
এটা কি সত্য, নাকি আমি কিছু মিস করছি? যদি এটি সত্য হয় তবে আপনি কি আমাকে ব্যাখ্যা করতে পারেন, কেন নতুন কাস্টম ক্যোয়ারী তৈরি করা ভাল এবং ওয়ার্ডপ্রেসের মূল কোয়েরিটি সংশোধন না করা কেন ভাল?
ঠিক আছে, চলছে। আমি সমস্ত পোস্ট দেখাই যেগুলিতে 'বৈশিষ্ট্যযুক্ত' ট্যাগ নেই। এটি করার জন্য, আমি এই কোড স্নিপেট ব্যবহার করি, যা বিপরীতে, মূল ক্যোয়ারীটি সংশোধন করে:
<?php
// get the term using the slug and the tag taxonomy
$term = get_term_by( 'slug', 'featured', 'post_tag' );
// pass the term_id to tag__not_in
query_posts( array( 'tag__not_in' => array ( $term->term_id )));
?>
<?php
if (have_posts()) :
// Start the Loop.
while (have_posts()) : the_post();
get_template_part('content', get_post_format());
endwhile;
else :
// If no content, include the "No posts found" template.
get_template_part('content', 'none');
endif;
?>
সুতরাং আমি মনে করি, এটি বেশ ভয়ঙ্কর। এটা সত্যি?
হালনাগাদ:
একই অপারেশন আমি এই ফাংশন (নীচে মহান উত্তর) পাওয়া গেছে যে আমি যুক্ত করেছেন কাজের জন্য থিমের functions.php
function exclude_featured_tag( $query ) {
if ( $query->is_home() && $query->is_main_query() ) {
$query->set( 'tag__not_in', 'array(ID OF THE FEATURED TAG)' );
}
}
add_action( 'pre_get_posts', 'exclude_featured_tag' );
এই ফাংশনে একটি হুক রয়েছে যা ক্যোয়ারী ভেরিয়েবল অবজেক্ট তৈরি হওয়ার পরে ডাকা হয়, তবে আসল কোয়েরি চালানোর আগে।
সুতরাং, আমি যা বুঝতে পেরেছি সেগুলি থেকে ইনপুট প্যারামিটার হিসাবে এটি একটি ক্যোয়ারী অবজেক্ট নেয় এবং নির্দিষ্ট ট্যাগ বাদে সমস্ত পোস্ট নির্বাচন করে এটি পরিবর্তন করে (আসলে ফিল্টার করে) (আমার ক্ষেত্রে featured
ট্যাগ পোস্টগুলি)
সুতরাং, আমি কীভাবে আমার থিমের বৈশিষ্ট্যযুক্ত নয় এমন পোস্টগুলি দেখানোর জন্য এই ফাংশনটির সাথে পূর্ববর্তী ক্যোয়ারী (বৈশিষ্ট্যযুক্ত পোস্টগুলি দেখানোর জন্য ব্যবহৃত এক) ব্যবহার করতে পারি? বা আমার কি নতুন কোয়েরি তৈরি করতে হবে?