টেমপ্লেট দ্বারা পৃষ্ঠা আইডি পান


19

নির্দিষ্ট টেম্পলেট সহ কোনও পৃষ্ঠার আইডি পাওয়া সম্ভব কিনা তা আমি জানতে চাই। "পেজ-স্পেশাল.পিপি" বরাদ্দ করা কোনও পৃষ্ঠার আইডি পাওয়া কি সম্ভব?

উত্তর:


39

যখন একটি পৃষ্ঠা তৈরি করা হয়, সেই পৃষ্ঠায় নির্ধারিত টেম্পলেটটি কাস্টম ক্ষেত্রগুলির মতো কাস্টম পোস্ট মেটা হিসাবে সংরক্ষণ করা হয়। 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 />';
}

23-07-2015 সম্পাদনা করুন

যদি কেবল একটি পৃষ্ঠার আইডির প্রয়োজন হয় তবে আপনি ব্যবহার করতে পারেন get_postsএবং তারপরে কেবল ' আইডস ফিল্ডস ' মান pageহিসাবে পাস করুন । এটি কেবলমাত্র ডিবিতে পোস্ট আইডি কলামটি ফিরিয়ে দেব এবং প্রদত্ত পৃষ্ঠাগুলির জন্য সমস্তগুলি নয়, এটি একটি আরও দ্রুত এবং আরও অনুকূলতর ক্যোয়ারী নিশ্চিত করবেpost_typeas

( পিএইচপি 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>';

হেই ধন্যবাদ. কিছুটা কি খুব বেশি "ভারী" নয়? (সমস্ত পৃষ্ঠাগুলির মধ্য দিয়ে চলমান)
ব্যবহারকারী 3800799

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

আমার আনন্দ, আমি সাহায্য করতে পেরে আনন্দিত। উপভোগ করুন :-)
পিটার গুজন

@ ব্যবহারকারী 3800799 আমি পোস্টটি আপডেট করেছি যদি আপনি কেবল এইডস পেতে আগ্রহী হন, অন্য কিছুই না
পিটার গুসেন

আপনি যদি খুব বেশি ডাটাবেসটি জিজ্ঞাসা করতে না চান তবে আপনি set_transient( কোডেক্স.ওয়ার্ডপ্রেস.আর / ট্রান্সিয়েন্টস_এপিআই ) ব্যবহার করতে পারেন।
ক্রিস অ্যান্ডারসন

2

যদি আপনার পৃষ্ঠা টেমপ্লেটটি সাব-ফোল্ডার, থিম-ফোল্ডার / পৃষ্ঠা-টেম্পলেটগুলি / পৃষ্ঠা-টেম্পলেট.এফপি এর অভ্যন্তরে থাকে তবে আপনি নীচের প্রশ্নের সাথে কাজ করবে:

$page_details = get_pages( array(
 'post_type' => 'page',
 'meta_key' => '_wp_page_template',
 'hierarchical' => 0,
 'meta_value' => 'page-templates/page-template.php'
));

এই উপরের কোডগুলি উপ-পৃষ্ঠাগুলিও প্রদর্শন করে।

ধন্যবাদ


0

নীচে একটি সামান্য আরও স্পষ্ট লিপি দেওয়া আছে যা প্রয়োজনে কোনও ভাষা বিবেচনা করে। লক্ষ্য করুন যে এটি ডব্লুপিএমএল নয়, পল্যাং-এর ব্যবহার অনুমান করে।

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

0

এখানে একটি সম্পূর্ণ ফাংশন যা ডাব্লুপিএমএল এবং পলিয়াংয়ের সাথে কাজ করে। 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'];
    }
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.