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.