বিভাগ টেমপ্লেটের ভিতরে বিভাগ আইডি পান


22

আমি কীভাবে টেমপ্লেটের ভিতরে বিড়াল আইডি পাব। খুব গুরুত্বপূর্ণ: আমি নামটি দিয়ে এটি করতে পারি না, কারণ আমাদের একই নামের সাথে মুলিপল বিড়াল রয়েছে। কেবল স্লাগই আলাদা। আমি যদি স্লাগটি পেতাম তবে তাও ঠিক আছে। তবে আমি যেমন বলেছিলাম: আমি বিড়াল শিরোনাম ব্যবহার করতে পারি না .....

উত্তর:


40

$wp_query->get_queried_object()আপনাকে "বর্তমানে অনুসন্ধান করা অবজেক্ট" দেবে। বিভাগের সংরক্ষণাগারে এটি বিভাগের বিষয়বস্তু, কোনও লেখকের পৃষ্ঠায় এটি লেখক, একটি পোস্টে এটি পোস্ট নিজেই, ... ভাল, আপনি ধারণাটি পান। আপনি যদি কেবল আইডি চান তবে আপনি এটিও ব্যবহার করতে পারেন $wp_query->get_queried_object_id()


9

আমার অনুসন্ধানের ভিত্তিতে আপনাকে অবশ্যই এটি ব্যবহার করতে হবে:

$category = get_queried_object();
echo $category->term_id;

আমি ধরে নিয়েছি যে আপনি ডাউনটি পেয়েছেন কারণ আপনি কেন এটি সহায়তা করে তা ব্যাখ্যা করছেন না , কেবল এটি উল্লেখ করে যে এটি করে। আপনি এই ফাংশনের উত্সটি পরীক্ষা করতে এবং আপনার উত্তরে সম্পাদনা হিসাবে আপনার আউটকামিংগুলি যুক্ত করতে চাইতে পারেন। ইঙ্গিত: যদি আপনার উত্তরটির চেয়ে বেশি মন্তব্য করা দরকার, তবে এটির একটি মন্তব্য হওয়া উচিত :)
কায়সার

7

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

<?php
$category = get_the_category(); 
echo $category[0]->cat_ID;
?>

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


এটি কোনও কার্যকর সমাধান নয় কারণ এটি বিভাগের পৃষ্ঠায় থাকা সমস্ত পোস্টের জন্য সমস্ত বিভাগ ফিরিয়ে দেয়। আপনার প্রতিধ্বনিত ফলাফল তালিকার সর্বশেষ পোস্টের প্রাথমিক বিভাগটি প্রদান করে।
সিজে 5

4

যতক্ষণ না আমি প্রশ্নটি ভুল বুঝেছি, আমি মনে করি আপনি বডি ক্লাসে আইডি / স্লাগ বিভাগটিও যুক্ত করতে পারেন:

<?php if(is_category()) { $cat_ID = 'cat-'.get_query_var('cat'); } ?>
<body <?php body_class($cat_ID); ?>>

4

@ জান ফ্যাব্রির প্রতিক্রিয়া আসলে সঠিক উত্তর, এখানে কেন: ওয়ার্ডপ্রেস যেহেতু কোনও পোস্টের জন্য একাধিক বিভাগের মঞ্জুরি দেয়, ব্যবহার $category = get_the_category()এবং অনুসন্ধান করা $category[0]প্রতিটি ক্ষেত্রে কার্যকর হবে না যেহেতু আপনি আসলে যা করছেন প্রথম পোস্টের প্রথম বিভাগের জন্য জিজ্ঞাসা করছেন। কল্পনা করুন আপনার কাছে A, B এবং C. বিভাগ রয়েছে তবে যদি আপনার কেবল একটি পোস্ট থাকে তবে এটিতে A এবং B বিভাগ রয়েছে এবং আপনি বি এর বিভাগের পৃষ্ঠায় রয়েছেন, পরিবর্তে আপনি এ এর ​​তথ্য দিয়ে শেষ করতে পারেন।

এজন্য এটি ব্যবহার করা ভাল $category = $wp_query->get_queried_object(), কারণ পূর্ববর্তী উদাহরণে আপনি বি এর বিভাগের পৃষ্ঠার ভিতরে থাকাকালীন সবসময় আপনাকে বি এর তথ্য পাবেন।


2

আপনি এটি করতে ব্যবহার get_the_category()করতে পারেন।

উদাহরণ:

<?php

$category = get_the_category(); 

// use this to echo the slug
echo $category[0]->slug;

// use this to echo the cat id
echo $category[0]->cat_ID;

// if you've got multiple categories you can run a foreach loop like so
foreach ( $category as $cat ) :

    echo '<li>' . $cat->name . '</li>';

endforeach;

?>

আপনি ব্যবহার করতে পারেন:

<?php
    echo '<pre>';
    print_r($category);
    echo '</pre>';
?>

ফিরে আসা বস্তুর অ্যারে দেখতে।


প্রশ্নটি 'কীভাবে আমি টেমপ্লেটের অভ্যন্তরে বিড়াল আইডি পাব' তা বিভিন্ন ব্যাখ্যার জন্য উন্মুক্ত। একটি একক পোস্ট টেম্পলেট মধ্যে, আপনি ঠিক বলেছেন। এটি একটি একক পোস্টের বিভাগগুলি পেতে লুপের অভ্যন্তরে কাজ করে; তবে get_the_category()বিভাগ আইডি পেতে কোনও বিভাগ সংরক্ষণাগার পৃষ্ঠায় কাজ করবে না, ফলাফলটি হবে স্বেচ্ছাসেবী।
মাইকেল

@ মিশেল সত্য বলেছেন। @ জান মনে হয় যে সেই নির্দিষ্ট প্রসঙ্গে আপনি আরও উপযুক্ত উত্তর দিয়েছেন।
ভাইসপ্রেজ

1
get_the_category()বিভাগ.
php এর

0
$category = get_category( get_query_var( 'cat' ) );

$cat_id = $category->cat_ID;

$catname=explode(",",get_category_parents($cat_id,'',','));
print_r($catname);

1
কেন এটি সমস্যার সমাধান করতে পারে দয়া করে তা ব্যাখ্যা করুন । একটি কোড স্নিপেট একটি উত্তর নয়।
ফুসিয়া

0

উপরের উদাহরণগুলির বেশিরভাগটি কাজ করে তবে আপনি যদি অন্য পদ্ধতির নন (লেখার হিসাবে ডাব্লুপি সংস্করণ 3.6) একাধিক বিভাগ ব্যবহার করেন তবে "বিড়াল" বা "বিভাগ_নাম" এর মধ্যে পাস করা সমস্ত বিভাগ পেতে কাজ করে।

আমি খুঁজে পেয়েছি একমাত্র উপায় হ'ল ডেটা টানুন:

$wp_query->query['category_name']

কিছু কারণে এটি একটি পৃথক মান দেয় get_query_var( 'category_name' )যা কেবল প্রথম বিভাগটি দেয়।

একাধিক বিভাগগুলি ব্যবহার করার সময় আপনাকে কিছু ফাংশন ব্যবহার করতে হবে যেমন explodeবিভাগ স্লাগগুলির একটি অ্যারে পেতে, তারপরে সমস্ত আইডি হস্তান্তর করার জন্য লুপ করুন:

<?php
global $wp_query;

//grab all categories from query string (if using `category_name`)
$category_slugs_array = explode("+",esc_attr($wp_query->query['category_name']));

$categories = array();
$category_ids = array();

//loop through all the slugs
foreach($category_slugs_array as $category_slug)
{
    //get category object using slug
    $category = get_category_by_slug( $category_slug );

    //check to make sure a matching category has been found
    if(isset($category->cat_ID))
    {
        $categories[] = $category;
        $category_ids[] = $category->cat_ID;
    }
}

var_dump($categories); //array of categories
var_dump($category_ids); //array of category IDs

?>

স্পষ্টতই AND (+) বা ওআর (,) অপারেটরগুলি ব্যবহার করার সময় কিছু বিবেচনা হওয়া দরকার।

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