ওয়ার্ডপ্রেস থিম পরিবর্তনশীল সুযোগ


9

আমার এমন একটি পরিবর্তনশীল তৈরি করতে হবে যা আমার ওয়ার্ডপ্রেস থিম টেম্পলেট ফাইলগুলিতে অ্যাক্সেসযোগ্য হতে পারে (index.php, header.php ইত্যাদি)। আমি জানি ফাংশন সংজ্ঞাগুলি functions.phpটেম্পলেট ফাইলের ভিতরে চলে (আপনার থিমের পথে), তবে ভেরিয়েবলগুলির জন্য এ জাতীয় কোনও জিনিস নেই।

উদাহরণস্বরূপ আমার ক্রমাগত আমার থিমের বিভাগগুলি পুনরুদ্ধার করা দরকার, তাই আমি আমার থিমের যে কোনও জায়গা থেকে এটিকে অ্যাক্সেসযোগ্য রাখতে চাই:

$categories = get_categories(); /* get_categories() is a wordpress function */ 

এইভাবে আমি আমার বিভাগগুলি পাওয়ার জন্য যতবার প্রয়োজন তা পুনরায় বরাদ্দ না করেই কেবল বরাদ্দ করা ডেটা অ্যাক্সেস করতে পারি।

দুর্ভাগ্যক্রমে আমার functions.phpফাইলে সেই টুকরা কোডটি যুক্ত করা , কাজ করে না, পরিবর্তনশীলও করে না global

উত্তর:


5

স্পষ্টতই globalকৌশলটি করে। সমস্যাটি ছিল আমার ভেরিয়েবলটির সামনে একটি নতুন করে সংজ্ঞা দেওয়া$categories উচিত ছিল , প্রতিটি টেম্পলেটে আমার এটি ব্যবহার করা দরকার।global


2
প্রত্যেকটি টেমপ্লেট ফাইলে একে বৈশ্বিক হিসাবে পুনরায় সংজ্ঞা দেওয়ার চেয়ে আরও স্বজ্ঞাত সমাধানের কথা অন্য কেউ কি জানেন? আমি আমার থিমটি বিকাশে এই পদ্ধতিটি ব্যবহার করি এবং এটি দেখতে ... জায়গা থেকে দূরে।

1
অসাধারণ বন্ধু, ধন্যবাদ! এটি প্রস্তুত কারও জন্য যিনি আমার মতো খানিকটা ঘন: আপনার ফাংশন.ফ্প ফাইলটিতে: <? পিএইচপি $ পরীক্ষা = "আমি একটি পরীক্ষা!"; ?> আপনার মধ্যে, আমি জানি না, হেডার.এইচপিপি: <? পিএইচপি গ্লোবাল $ পরীক্ষা; প্রতিধ্বনি $ পরীক্ষা; ?> এবং আপনি সোনার!
ডোমিনিক

ওয়ার্ডপ্রেস টেমপ্লেট ফাইল সব দ্বারা বলা হয়: এই নির্মল সহায়তা করেন, তাহলে require()বিবৃতি যা ফাংশন আবৃত করা হয়: get_header(), get_footer(), ইত্যাদি; যা তারা নিজেরাই ফাংশনটির চারপাশে মোড়ক রাখে get_template_part()। যেহেতু পিএইচপি-র ফাংশনগুলির মধ্যে কেবলমাত্র সেগুলির মধ্যে সংজ্ঞাযুক্ত বা তাদের রেফারেন্সের সাহায্যে পাস করা ভেরিয়েবলগুলির অ্যাক্সেস রয়েছে, আপনি যদি বিশ্বব্যাপী সুযোগ থেকে কোনও ভেরিয়েবল ব্যবহার করতে চান (বা কোনও ভেরিয়েবল সংজ্ঞায়িত করতে এবং এটি বিশ্বব্যাপী সুযোগে অ্যাক্সেসযোগ্য করতে চান) আপনাকে এটি ঘোষণা করতে হবে প্রথমে গ্লোবাল কীওয়ার্ড সহ ।
সোনালী অ্যাপল

1

ডমিনিক (তার উত্তরে কীভাবে একটি নোট যুক্ত করবেন তা জানেন না):

সংজ্ঞায়িত শুধুমাত্র স্কেলার গ্রহণ করে, তাই আপনি না করতে পারেন define( CATS, get_categories() ); এমনকি না

$categories = get_categories();
define( CATS, $categories );

অন্যথায় কাজটি সূক্ষ্মভাবে সংজ্ঞায়িত করা হয়, এবং এটি মাপদণ্ডের পক্ষে প্রকৃতপক্ষে নিরাপদ (আপনি যেমন নিশ্চিত হতে পারেন যে ধ্রুবকগুলি ওভাররাইট করা যায় না)


1

আমি জানি এটি সত্যিই পুরানো, তবে উন্নতির জন্য একটি ঘর আছে।

আপনার কেবলমাত্র গ্লোবালের পরিবর্তে $ গ্লোবালস ['বিভাগ'] ব্যবহার করা বিবেচনা করা উচিত।

এই জন্য দুটি কারণ আছে:

  1. আমাদের global $categories;প্রতিটা লিখতে হবে না ।
  2. এটি স্ফটিক স্পষ্ট তখন আমরা গ্লোবাল ব্যবহার করছি এবং না তখন।

এই কোডটি বিবেচনা করুন:

global $categories;

// a lot of PHP code here

<?php print_r ($categories) ?>

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

এর জন্য নামকরণের সম্মেলনগুলি ব্যবহার করা সম্ভব, তবে আমার মতে আরও ভাল উপায় আছে।

ব্যবহার বিবেচনা করুন $GLOBALS['categories']

আমাদের কেবলমাত্র একবারের পরিবর্তন সম্পর্কে আর চিন্তা না করে global $categoriesফাংশন.এফপিতে একবার শুরু করতে হবে। এবং আমরা দেখতে পাচ্ছি এটি একটি বিশ্বব্যাপী।

print_r ($GLOBALS['categories']);

পারফরম্যান্স ইস্যু এই পরিস্থিতিতে মোটেই সমস্যা নয়। আমি সারা গোলেমনকে উদ্ধৃত করব ( লিঙ্ক ):

আপনার $ গ্লোবাল অ্যারে ব্যবহারের অর্থ কী? এটি ঠিক, গ্লোবাল কীওয়ার্ডটি প্রযুক্তিগতভাবে দ্রুত। এখন, আমি এখানে একটি বিষয় সম্পর্কে সত্যিই পরিষ্কার হতে চাই। আপনার গ্লোবালগুলি স্থানীয় [সংকলিত ভেরিয়েবলস) হিসাবে ব্যবহার করে দেওয়া গৌণ গতির সামর্থ্যের জন্য পাঁচ বছরের মধ্যে আপনার কোডটি দেখার রক্ষণাবেক্ষণের বিরুদ্ধে গুরুতরভাবে ওজন করা দরকার এবং জেনে যে। ফু বিশ্বব্যাপী সুযোগ থেকে এসেছে। something_using ($ GLOBALS [ 'foo বিন্যাস']); সর্বদা গ্লোবাল than foo এর চেয়ে লাইনটি আরও পরিষ্কার করে দেওয়া হবে; / * বাঞ্চা কোড * / কিছু_ ব্যবহার (oo ফু); অর্থ-জ্ঞানী এবং পাউন্ড বোকা হয়ে উঠবেন না ..


0

এটিও কাজ করে:

থিমের functions.php যোগ define('TEST', 'this is a test');
এবং আপনার header.php বা যাই হোক না কেনecho TEST;

অন্য পদ্ধতিতে কোনও পদ্ধতিতে কি পারফরম্যান্স সুবিধা রয়েছে?

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