আপনি যখন ওয়ার্ডপ্রেস থিমটি সক্রিয় করেন, জিনিসগুলি পরিবর্তন করতে কোন ফাইলটি যেতে হবে তা সন্ধান করা সর্বদা ঝামেলা। কীভাবে জিনিসগুলি সহজীকরণের কোনও ধারণা?
তবে অন্যদিকে, get_template_part কার্যকারিতা বিবেচনা করে, এটি অসম্ভব হতে পারে। কি বলো?
আপনি যখন ওয়ার্ডপ্রেস থিমটি সক্রিয় করেন, জিনিসগুলি পরিবর্তন করতে কোন ফাইলটি যেতে হবে তা সন্ধান করা সর্বদা ঝামেলা। কীভাবে জিনিসগুলি সহজীকরণের কোনও ধারণা?
তবে অন্যদিকে, get_template_part কার্যকারিতা বিবেচনা করে, এটি অসম্ভব হতে পারে। কি বলো?
উত্তর:
হুক template_include
, থিম দ্বারা সেট করা টেমপ্লেটটি নোট করার জন্য একটি গ্লোবাল সেট করুন তারপরে কোন মানটি দেখার জন্য কোন টেমপ্লেটটি আহ্বান করা হচ্ছে তা দেখার জন্য সেই মানটি আবার পাদলেখ বা শিরোলেখটিতে পড়ুন।
আমি এই ফিল্টার হুক সম্পর্কে আগে বর্তমান টেম্পলেট ফাইলের নাম পান বললাম , তবে সেই কোডটির একটি অনুলিপি ধরুন এবং এটি আপনার থিমের functions.php
ফাইলটি ছাঁটাই করুন।
তারপরে থিমটির header.php
বা footer.php
(বা আপনি যেখানে খুশি) খুলুন এবং বর্তমান টেম্পলেটটি মুদ্রণের জন্য নীচের মতো কিছু ব্যবহার করুন।
<div><strong>Current template:</strong> <?php get_current_template( true ); ?></div>
আপনি যদি কোনও প্রোডাকশন সাইটে এটি ব্যবহার করতে এবং সেই তথ্যটি আপনার প্রশাসনিক প্রশাসকদের থেকে দূরে রাখতে চান তবে সামান্য শর্তযুক্ত যুক্তি যুক্ত করুন।
<?php
// If the current user can manage options(ie. an admin)
if( current_user_can( 'manage_options' ) )
// Print the saved global
printf( '<div><strong>Current template:</strong> %s</div>', get_current_template() );
?>
আপনার দর্শকদের থেকে সেই তথ্যকে দূরে রেখে এখন আপনি কী দেখছেন কী টেমপ্লেট ব্যবহার করছে তা ট্র্যাক করে রাখতে পারেন।
get_page_template
ঠিক আছে, যদি আপনি যা চান তা হ'ল বর্তমান পৃষ্ঠাটি উত্পন্ন করতে কোন টেম্পলেট ফাইলটি ব্যবহার করা হয়েছে তা যদি আপনার কোডের সাথে হাত ময়লা করার দরকার হয় না;)
এখানে ডিবাগ বার নামে একটি সহজ প্লাগইন রয়েছে । এটি আপনার সহ অনেক পরিস্থিতিতে এক দুর্দান্ত সহায়ক। আপনার অবশ্যই এটি পরীক্ষা করা উচিত - আমার এবং অনেকের জন্য এটি কোনও ডাব্লুপি বিকাশের অবশ্যই সহযোগী হতে হবে।
আমি এমন একটি স্ক্রিনশট সংযুক্ত করেছি যা আপনাকে প্রেমে পড়তে পারে ...
ডিবাগ বারটি কাজ করার জন্য , আপনাকে সক্ষম wp_debug
এবং wp_savequeries
বিকল্পগুলি প্রয়োজন। এই বিকল্পগুলি ডিফল্টরূপে অক্ষম অবস্থায় রয়েছে।
আপনি যদিও কোনও পরিবর্তন করার আগে কিছু বিষয় মনে রাখতে হবে:
পরিবর্তনগুলি করতে:
wp_config.php
একটি এফটিপি ক্লায়েন্টের মাধ্যমে ফাইল খুলুন ।wp_debug
বিকল্পের জন্য অনুসন্ধান করুন । এটি সম্পাদনা করুন define( 'WP_DEBUG', true );
। লাইনটি উপস্থিত না থাকলে এটি ফাইলটিতে যুক্ত করুন।define( 'SAVEQUERIES', true );
ফাইলটিতে লাইনটি সম্পাদনা করুন বা যুক্ত করুন।আরও তথ্য: কোডেক্স
WP_DEBUG
এবং SAVEQUERIES
, যদিও এটা করা হয় উন্নত তাদের দ্বারা।
আমি এই সহজ ফাংশনটি ব্যবহার করি যা কেবলমাত্র সুপার প্রশাসকদের জন্য বর্তমান টেম্পলেটটি প্রদর্শন করে:
function show_template() {
if( is_super_admin() ){
global $template;
print_r($template);
}
}
add_action('wp_footer', 'show_template');
আশা করি এইটি কাজ করবে. :)
আমি খুঁজে পাওয়া সবচেয়ে সহজ উপায় হ'ল বডি ট্যাগে ওয়ার্ডপ্রেস ফাংশন অন্তর্ভুক্ত করা। আপনি কোন পৃষ্ঠাটি দেখছেন তার উপর নির্ভর করে এটি বেশ কয়েকটি ক্লাস যুক্ত করবে (সম্মুখের পৃষ্ঠা, পৃষ্ঠার পৃষ্ঠা ইত্যাদি)
এটি এখানে দেখুন: http://codex.wordpress.org/Function_References/body_class
প্লাস এটি সেই পৃষ্ঠাগুলিতে সিএসএস সহ উপাদানগুলিকে টার্গেট করার জন্য সহায়ক।
ডেভিড আর উল্লিখিত হিসাবে টেম্পলেট হায়ারার্কি (http://codex.wordpress.org/Template_Hierarchy) সম্পর্কে জানার বিষয়টিও একটি ভাল ধারণা।
এই উদ্দেশ্যে বিশেষভাবে আরও একটি খালি-হাড় প্লাগইন রয়েছে। আমি ডিবাগ বারটি ইনস্টল করার দিকে ঝুঁকছি, কারণ এই অন্যান্য বৈশিষ্ট্যগুলি দরকারী বলে মনে হচ্ছে তবে এটি আরও মূল এবং বিশেষত এই উদ্দেশ্যে: http://wordpress.org/extend/plugins/ what-the-file /
আমি খুব সহজ একটি কাজ হ'ল থিমের প্রতিটি প্রাসঙ্গিক ফাইলের টেমপ্লেট ফাইল সনাক্ত করে একটি এইচটিএমএল মন্তব্য সন্নিবেশ করা, যেমন আমার সূচকের শীর্ষে at
<!-- index -->
এবং সামনের পৃষ্ঠায়. পৃষ্ঠাগুলির শীর্ষে
<!-- front -->
তবে স্পষ্টতই এর জন্য থিমটি সংশোধন করা দরকার। আমার সন্দেহ হয় আপনি ফুটার.এফপি ফাইল বা হেডার.এফপিতে একটি কাস্টম ফাংশন যুক্ত করতে পারেন যা আপনাকে জানাবে যে কোন ফাইলটি ব্যবহৃত হচ্ছে। উপরোক্ত পদ্ধতি এবং রেফারেন্স চার্ট http://codex.wordpress.org/ টেম্পলেট_শক্তি আমার ব্যবহারের ঝোঁক।
থিম চেক নামে একটি প্লাগইন রয়েছে যা হুবহু এটি করে। এটি এইচটিএমএল মন্তব্য হিসাবে ব্যবহৃত বর্তমান টেম্পলেট ফাইলটির নাম প্রদর্শন করে।
আপনি এখানে যান:
বর্তমান ল্যান্ডিং পৃষ্ঠার জন্য সমস্ত টেম্পলেট ফাইলের সাথে ব্যবহৃত একটি এইচটিএমএল-তালিকা , সমস্ত কোডের এক লাইনে প্লাগইনস, চাইল্ড থিম এবং / অথবা প্যারেন্ট থিম সংমিশ্রণের সমস্ত টেম্পলেট অংশগুলি সহ :
echo '<ul><li>'.implode('</li><li>', str_replace(str_replace('\\', '/', ABSPATH).'wp-content/', '', array_slice(str_replace('\\', '/', get_included_files()), (array_search(str_replace('\\', '/', ABSPATH).'wp-includes/template-loader.php', str_replace('\\', '/', get_included_files())) + 1)))).'</li></ul>';
আপনার সার্ভারটি কোনও পথে ডাবল স্ল্যাশগুলি ফেরত না এমনটি পরীক্ষা করা দরকার । সমস্ত টেমপ্লেট ফাইলগুলি আসলে ফুটার.এফপি এর মতো ব্যবহৃত হওয়ার পরে, তবে অ্যাডমিন বারের রেন্ডারগুলির আগে রাখার কথা মনে রাখবেন ।
যদি admin-bar stuff
শীর্ষে বা অন্য কোনও ফাইলের উপরে পথ দেখানো হয় তবে template-loader.php
কোডের এই লাইনে ফাইলের নামটি এতে পরিবর্তন করুন : আপনার যে ফিল্মের নামটি ভেঙে যেতে হবে। প্রায়শই:class-wp-admin-bar.php
অ্যাডমিন বারে আপনার যদি এটির প্রয়োজন হয় তবে এই তালিকার শেষে কোনও ফাইল প্রবেশ করা হয়নি শ্যুর করার জন্য ডান প্রাইটিটি (প্রথম দিকের) ব্যবহার করুন । উদাহরণ স্বরূপ:
add_action('admin_bar_menu', 'my_adminbar_template_monitor', -5);
অগ্রাধিকার -5
শুর করুন এটি প্রথমে লোড হয়। কীটি হ'ল get_included_files()
সঠিক মুহূর্তে কল করা, অন্যথায় কিছু অ্যারে-পপিংয়ের প্রয়োজন!
এটি ভেঙে ফেলার জন্য:
আপনি পিএইচপি ব্যাকট্র্যাস ব্যতীত সমস্ত অন্তর্ভুক্ত টেম্পলেট ফাইল সংগ্রহ করতে পারবেন না । Superglobals ভিতরে template_include
অভ্যস্ত তাদের সবাইকে সংগ্রহ । অন্য উপায়টি হ'ল প্রতিটি টেম্পলেট ফাইলগুলিতে "একটি মার্কার স্থাপন", তবে আপনাকে যদি প্রথমে ফাইলগুলির সাথে ইন্টারঅ্যাক্ট করতে হয় তবে আপনি সময় এবং পুরো ধারণার সাথে বিচলিত হন।
1) আমাদের বর্তমান ওয়ার্ডপ্রেস অনুরোধ দ্বারা ব্যবহৃত সমস্ত ফাইল ভিতরে পরীক্ষা করা প্রয়োজন। এবং তারা অনেক! এমনকি যদি আপনার ফাংশন.এফপি নিবন্ধিত হওয়ার আগে আপনি 300 টি ফাইল ব্যবহার করেন তবে অবাক হবেন না।
$included_files = str_replace('\\', '/', get_included_files());
আমরা পিএইচপি নেটিভ get_incused_files () ব্যবহার করছি, বেশিরভাগ ওয়ার্ডপ্রেস ফিরতি পাথের সাথে ম্যাচের জন্য স্ল্যাশ ফরোয়ার্ডে ব্যাকস্ল্যাশ রূপান্তর করে।
2) আমরা সেই অ্যারেটি কাটাচ্ছি যেখান থেকে টেমপ্লেট-লোডার.এফপি নিবন্ধিত আছে। এর পরে, পপুলেটেড get_incused_files () কেবলমাত্র টেমপ্লেট ফাইল পপুলেটে থাকা উচিত।
/* The magic point, we need to find its position in the array */
$path = str_replace('\\', '/', ABSPATH);
$key = $path.'wp-includes/template-loader.php';
$offset = array_search($key, $included_files);
/* Get rid of the magic point itself in the new created array */
$offset = ($offset + 1);
$output = array_slice($included_files, $offset);
3) ফলাফলগুলি সংক্ষিপ্ত করুন, থিম ফোল্ডার বা প্লাগইন ফোল্ডারটি ব্যবহারের টেম্পলেট হিসাবে প্লাগইন, থিম বা চাইল্ড থিম ফোল্ডারগুলির সাথে মিশ্রিত না হওয়া পর্যন্ত আমাদের পাথের প্রয়োজন হবে না ।
$replacement = $path.'wp-content/';
$output = str_replace($replacement, '', $output);
4) অবশেষে, অ্যারে থেকে একটি দুর্দান্ত এইচটিএমএল তালিকায় রূপান্তর করুন
$output = '<ul><li>'.implode('</li><li>', $output).'</li></ul>';
পার্ট 3 ) -রপ্লেসমেন্টে একটি শেষ পরিবর্তনের প্রয়োজন হতে পারে - যদি আপনি প্রয়োজন না চান তবে প্লাগইনগুলি অন্তর্ভুক্ত করে। তারা class-files
দেরীতে কল করতে এবং টেমপ্লেট আউটপুট প্রক্রিয়াকরণের সময় "ইন্টারসেপ্ট" করতে পারে ।
যাইহোক, আমি এগুলি দৃশ্যমান রেখে দেওয়া যুক্তিসঙ্গত বলে মনে করি, কারণ এই পর্যায়ে কোনও "টেমপ্লেট" রেন্ডারিং আউটপুটটি কোনও "টেম্পলেট" না হলেও, কী লোড হয়েছে তা ট্র্যাক করা ধারণা ।