বর্তমান পৃষ্ঠায় কোন টেম্পলেট পৃষ্ঠাটি সরবরাহ করা হচ্ছে তা আপনি কীভাবে আবিষ্কার করবেন?


54

আপনি যখন ওয়ার্ডপ্রেস থিমটি সক্রিয় করেন, জিনিসগুলি পরিবর্তন করতে কোন ফাইলটি যেতে হবে তা সন্ধান করা সর্বদা ঝামেলা। কীভাবে জিনিসগুলি সহজীকরণের কোনও ধারণা?

তবে অন্যদিকে, get_template_part কার্যকারিতা বিবেচনা করে, এটি অসম্ভব হতে পারে। কি বলো?


1
আমি এইচটিএমএল পরিদর্শন করি এবং একটি চিহ্নিত ট্যাগ বা অনন্য কিছু পাই।
নাইওস গোল্ডেন

1
উত্স কোডটি দেখুন এবং বডি ক্লাসগুলি সন্ধান করুন যা আপনাকে জানায় কোন টেম্পলেট ব্যবহার করা হয়েছে। এছাড়াও আপনাকে আইডি দেয়
ব্র্যাড ডাল্টন


@ ব্র্যাডডাল্টন +1। বিশেষত যখন আমাদের লক্ষ্য অর্জনের জন্য কোনও প্লাগইন ইনস্টল করার বা কোনও ফাংশন লেখার অনুমতি নেই।
সুব্রত সরকার

উত্তর:


34

হুক 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() ); 
?>

আপনার দর্শকদের থেকে সেই তথ্যকে দূরে রেখে এখন আপনি কী দেখছেন কী টেমপ্লেট ব্যবহার করছে তা ট্র্যাক করে রাখতে পারেন।


1
যদি এই উত্তরের সাথে কিছু ভুল হয়, বা কেউ যদি এই উত্তরটির উন্নতি করতে কী করা যায় সে সম্পর্কে মন্তব্য প্রদান করতে পারে, সেটিতে থাকতে পারে, একটি মন্তব্য এখানে রেখে এবং কীভাবে এটি আরও ভাল করা যায় সে সম্পর্কে আপনার মতামত এবং ধারণা ভাগ করে নিন।
t31os

1
এটি ব্রো কাজ করেনি, এটি "অপরিজ্ঞাত ফাংশন" বলে
বুস্তামন্তে

1
@ লুকাস বি একই, এখানে আমি পেয়েছি ত্রুটি
লিংকন বার্গসন

এটি হওয়া উচিতget_page_template
ব্লেজমোনজার

40

ঠিক আছে, যদি আপনি যা চান তা হ'ল বর্তমান পৃষ্ঠাটি উত্পন্ন করতে কোন টেম্পলেট ফাইলটি ব্যবহার করা হয়েছে তা যদি আপনার কোডের সাথে হাত ময়লা করার দরকার হয় না;)

এখানে ডিবাগ বার নামে একটি সহজ প্লাগইন রয়েছে । এটি আপনার সহ অনেক পরিস্থিতিতে এক দুর্দান্ত সহায়ক। আপনার অবশ্যই এটি পরীক্ষা করা উচিত - আমার এবং অনেকের জন্য এটি কোনও ডাব্লুপি বিকাশের অবশ্যই সহযোগী হতে হবে।

আমি এমন একটি স্ক্রিনশট সংযুক্ত করেছি যা আপনাকে প্রেমে পড়তে পারে ...

এখানে চিত্র বর্ণনা লিখুন

ডিবাগ বারটি কাজ করার জন্য , আপনাকে সক্ষম wp_debugএবং wp_savequeriesবিকল্পগুলি প্রয়োজন। এই বিকল্পগুলি ডিফল্টরূপে অক্ষম অবস্থায় রয়েছে।

আপনি যদিও কোনও পরিবর্তন করার আগে কিছু বিষয় মনে রাখতে হবে:

  • ওয়েবসাইট প্রচুর ট্র্যাফিক না পূরণ না করে উত্পাদনের পরিবেশে এটি করবেন না।
  • আপনি ডিবাগিং শেষ করার পরে, ওয়েবসাইটটির বিকল্পগুলি (বিশেষত wp_savequeries বিকল্পটি কার্য সম্পাদনকে প্রভাবিত করে) অক্ষম করার বিষয়টি নিশ্চিত করুন।

পরিবর্তনগুলি করতে:

  1. wp_config.phpএকটি এফটিপি ক্লায়েন্টের মাধ্যমে ফাইল খুলুন ।
  2. wp_debugবিকল্পের জন্য অনুসন্ধান করুন । এটি সম্পাদনা করুন define( 'WP_DEBUG', true );। লাইনটি উপস্থিত না থাকলে এটি ফাইলটিতে যুক্ত করুন।
  3. একইভাবে, define( 'SAVEQUERIES', true );ফাইলটিতে লাইনটি সম্পাদনা করুন বা যুক্ত করুন।
  4. সংরক্ষণ. আপনি ডিবাগ করতে প্রস্তুত।

আরও তথ্য: কোডেক্স


2
@justCallMeBiru - ডিবাগ বার প্লাগইন নেই প্রয়োজন, WP_DEBUG এবং SAVEQUERIES, যদিও এটা করা হয় উন্নত তাদের দ্বারা।
প্যাট জে

3
এই ধরনের একটি প্লাগইন চালানো, কেবলমাত্র একটি জোয়ার বিট তথ্যের জন্য প্রচুর পরিমাণে ওভারহেড ইমো তৈরি হয় এবং এই কারণেই আমি আমার নিজের উত্তরে এটি প্রস্তাব করি নি। এটি বলেছে, স্পষ্টভাবে লোকেরা এই উত্তরটিকে পছন্দ করে, আমি কেন জানি তা জানতে আগ্রহী।
t31os

23

আমি এই সহজ ফাংশনটি ব্যবহার করি যা কেবলমাত্র সুপার প্রশাসকদের জন্য বর্তমান টেম্পলেটটি প্রদর্শন করে:

function show_template() {
    if( is_super_admin() ){
        global $template;
        print_r($template);
    } 
}
add_action('wp_footer', 'show_template');

আশা করি এইটি কাজ করবে. :)


2
এটি গোটো উত্তর, গ্রহণ করা উচিত।
হাইব্রিড ওয়েব দেব

12

প্রতিটি প্রাসঙ্গিক টেমপ্লেট ফাইলে get_header লাইনের ঠিক পরে নিম্নলিখিত কোডটি যুক্ত করুন:

<!-- <?php echo basename( __FILE__ ); ?> -->

আপনার ব্রাউজারে> উত্স দেখুন এবং টেমপ্লেটের নামটি আপনার এইচটিএমএল কোডে মন্তব্য হিসাবে প্রদর্শিত হবে, যেমন

<!-- page.php -->

এটি
যেকোন

4

আমি খুঁজে পাওয়া সবচেয়ে সহজ উপায় হ'ল বডি ট্যাগে ওয়ার্ডপ্রেস ফাংশন অন্তর্ভুক্ত করা। আপনি কোন পৃষ্ঠাটি দেখছেন তার উপর নির্ভর করে এটি বেশ কয়েকটি ক্লাস যুক্ত করবে (সম্মুখের পৃষ্ঠা, পৃষ্ঠার পৃষ্ঠা ইত্যাদি)

এটি এখানে দেখুন: http://codex.wordpress.org/Function_References/body_class

প্লাস এটি সেই পৃষ্ঠাগুলিতে সিএসএস সহ উপাদানগুলিকে টার্গেট করার জন্য সহায়ক।

ডেভিড আর উল্লিখিত হিসাবে টেম্পলেট হায়ারার্কি (http://codex.wordpress.org/Template_Hierarchy) সম্পর্কে জানার বিষয়টিও একটি ভাল ধারণা।


4

এই উদ্দেশ্যে বিশেষভাবে আরও একটি খালি-হাড় প্লাগইন রয়েছে। আমি ডিবাগ বারটি ইনস্টল করার দিকে ঝুঁকছি, কারণ এই অন্যান্য বৈশিষ্ট্যগুলি দরকারী বলে মনে হচ্ছে তবে এটি আরও মূল এবং বিশেষত এই উদ্দেশ্যে: http://wordpress.org/extend/plugins/ what-the-file /


3

আমি খুব সহজ একটি কাজ হ'ল থিমের প্রতিটি প্রাসঙ্গিক ফাইলের টেমপ্লেট ফাইল সনাক্ত করে একটি এইচটিএমএল মন্তব্য সন্নিবেশ করা, যেমন আমার সূচকের শীর্ষে at

<!-- index -->

এবং সামনের পৃষ্ঠায়. পৃষ্ঠাগুলির শীর্ষে

<!-- front -->

তবে স্পষ্টতই এর জন্য থিমটি সংশোধন করা দরকার। আমার সন্দেহ হয় আপনি ফুটার.এফপি ফাইল বা হেডার.এফপিতে একটি কাস্টম ফাংশন যুক্ত করতে পারেন যা আপনাকে জানাবে যে কোন ফাইলটি ব্যবহৃত হচ্ছে। উপরোক্ত পদ্ধতি এবং রেফারেন্স চার্ট http://codex.wordpress.org/ টেম্পলেট_শক্তি আমার ব্যবহারের ঝোঁক।


3

থিম চেক নামে একটি প্লাগইন রয়েছে যা হুবহু এটি করে। এটি এইচটিএমএল মন্তব্য হিসাবে ব্যবহৃত বর্তমান টেম্পলেট ফাইলটির নাম প্রদর্শন করে।


3

আপনি এখানে যান:

বর্তমান ল্যান্ডিং পৃষ্ঠার জন্য সমস্ত টেম্পলেট ফাইলের সাথে ব্যবহৃত একটি এইচটিএমএল-তালিকা , সমস্ত কোডের এক লাইনে প্লাগইনস, চাইল্ড থিম এবং / অথবা প্যারেন্ট থিম সংমিশ্রণের সমস্ত টেম্পলেট অংশগুলি সহ :

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দেরীতে কল করতে এবং টেমপ্লেট আউটপুট প্রক্রিয়াকরণের সময় "ইন্টারসেপ্ট" করতে পারে ।

যাইহোক, আমি এগুলি দৃশ্যমান রেখে দেওয়া যুক্তিসঙ্গত বলে মনে করি, কারণ এই পর্যায়ে কোনও "টেমপ্লেট" রেন্ডারিং আউটপুটটি কোনও "টেম্পলেট" না হলেও, কী লোড হয়েছে তা ট্র্যাক করা ধারণা

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