নির্দিষ্ট টেম্পলেট সহ কোনও পৃষ্ঠার আইডি পাওয়া সম্ভব কিনা তা আমি জানতে চাই। "পেজ-স্পেশাল.পিপি" বরাদ্দ করা কোনও পৃষ্ঠার আইডি পাওয়া কি সম্ভব?
নির্দিষ্ট টেম্পলেট সহ কোনও পৃষ্ঠার আইডি পাওয়া সম্ভব কিনা তা আমি জানতে চাই। "পেজ-স্পেশাল.পিপি" বরাদ্দ করা কোনও পৃষ্ঠার আইডি পাওয়া কি সম্ভব?
উত্তর:
যখন একটি পৃষ্ঠা তৈরি করা হয়, সেই পৃষ্ঠায় নির্ধারিত টেম্পলেটটি কাস্টম ক্ষেত্রগুলির মতো কাস্টম পোস্ট মেটা হিসাবে সংরক্ষণ করা হয়। meta_key
হয় _wp_page_template
এবং meta_value
পৃষ্ঠা টেমপ্লেট হতে হবে
নির্দিষ্টভাবে টেমপ্লেট রয়েছে এমন get_pages
সমস্ত পৃষ্ঠা পুনরুদ্ধার করার জন্য আপনি কেবল ব্যবহার করতে পারেনmeta_value
$pages = get_pages(array(
'meta_key' => '_wp_page_template',
'meta_value' => 'page-special.php'
));
foreach($pages as $page){
echo $page->ID.'<br />';
}
যদি কেবল একটি পৃষ্ঠার আইডির প্রয়োজন হয় তবে আপনি ব্যবহার করতে পারেন get_posts
এবং তারপরে কেবল ' আইডস ফিল্ডস ' মান page
হিসাবে পাস করুন । এটি কেবলমাত্র ডিবিতে পোস্ট আইডি কলামটি ফিরিয়ে দেব এবং প্রদত্ত পৃষ্ঠাগুলির জন্য সমস্তগুলি নয়, এটি একটি আরও দ্রুত এবং আরও অনুকূলতর ক্যোয়ারী নিশ্চিত করবেpost_type
as
( পিএইচপি 5.4+ প্রয়োজন )
$args = [
'post_type' => 'page',
'fields' => 'ids',
'nopaging' => true,
'meta_key' => '_wp_page_template',
'meta_value' => 'page-special.php'
];
$pages = get_posts( $args );
foreach ( $pages as $page )
echo $page . '</br>';
set_transient
( কোডেক্স.ওয়ার্ডপ্রেস.আর / ট্রান্সিয়েন্টস_এপিআই ) ব্যবহার করতে পারেন।
যদি আপনার পৃষ্ঠা টেমপ্লেটটি সাব-ফোল্ডার, থিম-ফোল্ডার / পৃষ্ঠা-টেম্পলেটগুলি / পৃষ্ঠা-টেম্পলেট.এফপি এর অভ্যন্তরে থাকে তবে আপনি নীচের প্রশ্নের সাথে কাজ করবে:
$page_details = get_pages( array(
'post_type' => 'page',
'meta_key' => '_wp_page_template',
'hierarchical' => 0,
'meta_value' => 'page-templates/page-template.php'
));
এই উপরের কোডগুলি উপ-পৃষ্ঠাগুলিও প্রদর্শন করে।
ধন্যবাদ
নীচে একটি সামান্য আরও স্পষ্ট লিপি দেওয়া আছে যা প্রয়োজনে কোনও ভাষা বিবেচনা করে। লক্ষ্য করুন যে এটি ডব্লুপিএমএল নয়, পল্যাং-এর ব্যবহার অনুমান করে।
function get_post_id_by_template($template,$lang_slug = null){
global $wpdb;
$wh = ($lang_slug) ? " AND t.slug = %s" : "";
$query = $wpdb->prepare(
"SELECT DISTINCT p.ID
FROM $wpdb->posts p
INNER JOIN $wpdb->postmeta meta ON meta.post_id = p.ID
INNER JOIN $wpdb->term_relationships tr ON meta.post_id = tr.object_id
INNER JOIN $wpdb->term_taxonomy tt ON tr.term_taxonomy_id = tt.term_taxonomy_id
INNER JOIN $wpdb->terms t ON tt.term_id = t.term_id
WHERE p.post_status = 'publish' AND meta.meta_key = %s AND meta.meta_value = %s" . $wh,
'_wp_page_template',
$template,
$lang_slug
);
$ids = $wpdb->get_results($query);
if($ids && isset($ids[0])){
$p = $ids[0];
return $p->ID;
} else {
return false;
}
}// get_post_id_by_template
এখানে একটি সম্পূর্ণ ফাংশন যা ডাব্লুপিএমএল এবং পলিয়াংয়ের সাথে কাজ করে। Https://github.com/cyrale/ এ ক্রেডিট
/**
* Search for a page with a particular template.
*
* @param string $template Template filename.
* @param array $args (Optional) See also get_posts() for example parameter usage.
* @param bool $single (Optional) Whether to return a single value.
*
* @return Will be an array of WP_Post if $single is false. Will be a WP_Post object if the page is find, FALSE otherwise
*/
if (!function_exists('get_page_by_template')) {
function get_page_by_template($template, $args = array(), $single = true) {
$pages_by_template = wp_cache_get('pages_by_template', 'cyrale');
if (empty($pages_by_template) || !is_array($pages_by_template)) {
$pages_by_template = array();
}
if (!isset($pages_by_template[$template])) {
$args = wp_parse_args(array(
'posts_per_page' => -1,
'post_type' => 'page',
'suppress_filters' => 0,
'meta_query' => array(
array(
'key' => '_wp_page_template',
'value' => $template,
),
),
), $args);
$pages = get_posts($args);
$pages_by_template[$template]= array(
'single' => !empty($pages) && is_array($pages) ? reset($pages) : false,
'pages' => $pages,
);
}
wp_cache_set('pages_by_template', $pages_by_template, 'cyrale');
return $pages_by_template[$template][$single ? 'single' : 'pages'];
}
}