Is_page_template () এর তুলনা কী?


10

ওয়ার্ডপ্রেস ডকুমেন্টেশনের মাধ্যমে অনুসন্ধান করে বলা হয়েছে যে is_page_template()যদি কোনও সরবরাহ করা হয় তবে একটি "টেম্পলেট নাম" এর সাথে তুলনা করে।

আমি সঞ্চিত একটি টেমপ্লেট আছে page-homepage.phpবলা Homepage:

/*
 * Template Name: Homepage
 * Description: The template for displaying the homepage
 */

এবং যখন আমি এই টেমপ্লেটটি ব্যবহার করছি তখন আমার ফাংশন.এফপি চালানোর জন্য আমার কিছু কোড রয়েছে:

if (is_page_template('Homepage')) { 
   ...

কিন্তু যখন আমি সেই পৃষ্ঠাতে আছি যা সেই টেম্পলেটটি ব্যবহার করে তখন এটি ট্রিগার করা হচ্ছে না।

ওয়ার্ডপ্রেস যে কোডটির জন্য কার্যকর করে কোডটি আমি যখন দেখি তখন is_page_template()মনে হয় এটি আসলে নথির নাম পরীক্ষা করে, টেমপ্লেটের নাম নয় ...?

function is_page_template( $template = '' ) {

    $page_template = get_page_template_slug( get_queried_object_id() );

    if ( $template == $page_template )
        return true;

আমার উদাহরণে এটি মনে $page_templateহয় page-homepage.php- টেমপ্লেটের নাম নয়, যেমন ডকুমেন্টেশনের পরামর্শ দেয় ...?

আমি কি ভুল কিছু করছি?


ডকুমেন্টেশন সম্পর্কিত ভাল পর্যবেক্ষণ।
বার্জায়ার

উত্তর:


15

আপনার অবস্থাটি এইভাবে লেখা উচিত:

if (is_page_template('path/file.php')) { 
    // Do stuff
}

আমি বিশ্বাস করি বিভ্রান্তি দুটি জিনিসের ফলাফল:

  1. দস্তাবেজগুলি অস্পষ্টভাবে "নাম" উল্লেখ করে। "ফাইলের নাম" নির্দিষ্ট করা ডকুমেন্টেশনগুলিকে আরও পরিষ্কার করে তুলবে।
  2. পিছনের কোডটি এর মূল অংশটিতে ফাংশনটি is_page_template()দেখায় get_page_template_slug()। এই ফাংশনটি আসলে কোনও ফাইলের নাম দেয়, টেম্পলেট স্লাগ নয়। https://codex.wordpress.org/Function_Reference/get_page_template_slug

is_page_template()ফাংশনের জন্য আর্গুমেন্ট নির্দিষ্ট করার সময় (উপরের উদাহরণ হিসাবে), ফাইল পাথ থিম মূলের সাথে সম্পর্কিত।

এই ফাংশনটি লুপের অভ্যন্তরে কাজ করবে না।


2
এখানে কী পথটি দাঁড়ায় তা ব্যাখ্যা দিয়ে ভাল লাগবে ।
বার্জায়ার

1
এটি কেন বিভ্রান্তিকর হতে পারে সে সম্পর্কে অতিরিক্ত ব্যাখ্যা এবং বিশদ যুক্ত করা হয়েছে।
jdm2112

3
কি দারুন. দ্বিধা দ্বিধা বিভ্রান্তির। আমি ডক্সকে কিছুটা দ্বিধাগ্রস্থ বলে বুঝতে পারি (যদিও এটি সত্যই স্থির করা উচিত) তবে আমি সত্যিই অবাক হয়েছি যে get_page_template_slug()আসলে কোনও স্লাগ ফিরে আসে না!
জাজানো রেইনহার্ট

একমত। কোড লেখার সময় "নামকরণ করা" সবচেয়ে কঠিন বিষয়গুলির ধারণার প্রতি আরও সমর্থন supportণ দেওয়া।
jdm2112

এই উত্তরে "সেরা অনুশীলন" সমাধান রয়েছে। তবে, যদি আপনার পৃষ্ঠাটি "ডিফল্ট টেম্পলেট" ব্যবহার করে (তবে এটি আসলে একটি পৃষ্ঠা টেম্পলেট), এই উত্তরটি আপনার আগ্রহী হতে পারে।
রিনোগো

7

আমি মনে করি সবচেয়ে ভাল কথাটি হ'ল এটি ফাইলের নামটি যাচাই করে এবং আপনার ক্ষেত্রে এটি পৃষ্ঠা-হোমপেজ.এফপি হবে। তাই:

if (is_page_template('page-homepage.php')) { 
  ...

ভাবার মতো অন্যান্য বিষয়গুলি হ'ল যদি টেম্পলেট ফাইলটি থিমের অভ্যন্তরে অন্য ফোল্ডারে রাখা হয়। আরও পড়ুন

আরও একটি বিষয়, Template Name: Homepageকোনও পৃষ্ঠা বা পোস্ট তৈরি করার সময় টেম্পলেটটি সনাক্ত করতে সাধারণভাবে যা ব্যবহৃত হয় তা।


অন্য উত্তরটি যেমন উল্লেখ করেছে - এটিও বিবেচনার পথে নেয় takes page-templates/page-homepage.phpথিম মূলের টেমপ্লেটের চেয়ে পৃথক।
হাওডি_এমসিজি

আকর্ষণীয় এবং আমি জানতাম না, কেবল তা নিশ্চিত করার জন্য, আমি পৃষ্ঠার টেমপ্লেটগুলি থিম বা চাইল্ড থিম ফোল্ডারের বাইরে সঞ্চয় করতে পারি?
মালিশা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.