হেডার.এফপি থেকে টেমপ্লেট এবং ভাইস ভার্কারায় ভেরিয়েবলগুলি পাস করা


9

আমি একটি ভেরিয়েবল সংজ্ঞায়িত করেছি - আসুন এটি কল করুন $header_var, যা শিরোনাম.এফপি ফাইলের মধ্যে স্থাপন করা হয়েছে। আমি এই পরিবর্তনশীলটি আমার টেমপ্লেট ফাইলে (এই ক্ষেত্রে ট্যাক্সোনমি.এফপি) পাস করতে চাই।

এছাড়াও আমি $template_varআমার ট্যাক্সোনমি.এফপি থেকে শিরোনাম.এফপিতে পাস করার মতো অন্যভাবে একইভাবে করতে সক্ষম হতে চাই ।

শিরোনাম লোড হয়ে যাওয়ার পরে ভেরিয়েবলটি ঘোষিত না হওয়ায় এটি কি সম্ভব?

আমি গ্লোবাল ব্যবহার করার চেষ্টা করেছি $header_varকিন্তু ভাগ্য ছাড়াই।

কোন পরামর্শ?

উত্তর:


24

আমি একটি ভেরিয়েবল সংজ্ঞায়িত করেছি - আসুন এটির নাম দিন ph header_var, যা শিরোনাম.পিএফপি ফাইলটিতে স্থাপন করা হয়েছে। আমি এই পরিবর্তনশীলটি আমার টেমপ্লেট ফাইলে (এই ক্ষেত্রে ট্যাক্সোনমি.এফপি) পাস করতে চাই।

globalকৌতুকটি করার খুব প্রস্তাবিত উপায় নয়, তবে আপনি যদি এটি সঠিকভাবে ব্যবহার করেন তবে এটি কাজ করে: ভেরিয়েবলটি পুনরুদ্ধার করার আগে header.php এবং পুনরায় পরিবর্তনের আগে taxonomy.phpএটি রাখুন (get_header () অন্তর্ভুক্ত করার পরে header.php)

// in header.php
global $header_var;
$header_var = 'A value';

// in taxonomy.php
get_header();
global $header_var;
echo $header_var; // 'A value'

আমি আমার ট্যাক্সোনমি.এইচপিপি থেকে শিরোনাম.এফপি থেকে $ টেম্পলেট_ভারকে পাশ কাটিয়ে যেমন অন্যভাবে করতে পারি তেমন করতে চাই। শিরোনাম লোড হয়ে যাওয়ার পরে ভেরিয়েবলটি ঘোষিত না হওয়ায় এটি কি সম্ভব?

এটি পিএইচপি, যাদু বা টাইম মেশিন নয়: সময়ের বিধি বিশ্বব্যাপী অন্যান্য অংশের মতো ওয়ার্ডপ্রেসেও প্রযোজ্য ।

সুতরাং, না, আপনি কোনও পরিবর্তনশীল সময় মতো পাস করতে পারবেন না, তবে সাধারণত, টেম্পলেটগুলিতে আপনি header.phpকল করে অন্তর্ভুক্ত করেন get_header()যদি আপনি সেই ফাংশনটি কল করার আগে কোনও ভেরিয়েবল সেট করে থাকেন তবে বৈশ্বিক কৌতুকটিও কাজ করবে:

// in header.php
global $template_var;
echo $template_var; // 'A value'

// in taxonomy.php
global $template_var;
$template_var = 'A value'
get_header();

তবে আপনার যদি ভেরিয়েবলগুলি header.phpএবং টেম্পলেটগুলিতে ভাগ করে নেওয়া দরকার তবে সবচেয়ে ভাল কাজ হ'ল হেডারে বা টেমপ্লেটগুলিতে নয়, তবে ভেরিয়েবলগুলি ঘোষণা করতে হলে নিয়ন্ত্রণ করার জন্য অ্যাকশন হুকfunctions.php ব্যবহার করা উচিত।

'template_redirect'আপনার বর্তমান ক্যোয়ারিতে অ্যাক্সেস রয়েছে এমন জায়গায় একটি দরকারী হুক রয়েছে এবং এটি header.phpটেমপ্লেটগুলি লোড হওয়ার আগেই বহিস্কার করা হয়।

মোটামুটি উদাহরণ:

// in functions.php
add_action( 'template_redirect', 'get_my_shared_vars' );

function get_my_shared_vars() {
   static $shared_vars = NULL;
   if ( empty( $shared_vars ) ) {
     $shared_vars = array( 'header_var' => 'An header value' );
     if ( is_tax() || is_category() || is_tag() ) {
       $shared_vars['taxonomy_var'] = 'A taxonomy value';
     }
   }
   return $shared_vars;
}


// in header.php
$shared_vars = get_my_shared_vars();
echo $shared_vars['header_var']; // 'An header value'

// in taxonomy.php
$shared_vars = get_my_shared_vars();
echo $shared_vars['taxonomy_var']; // 'A taxonomy value'

পূর্ববর্তী কোডে, ভেরিয়েবল সেট করতে ব্যবহৃত ফাংশনের staticসমস্ত কোডটি কীওয়ার্ডের জন্য ধন্যবাদ get_my_shared_varsশুধুমাত্র একবারে রান হয়, সুতরাং ফাংশনটিকে একাধিকবার কল করলে আপনার পারফরম্যান্স সংক্রান্ত সমস্যা নিয়ে চিন্তা করতে হবে না।


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