Get_template_part () কীভাবে ব্যবহার করবেন?


25

এই ফাংশনটি কীভাবে কাজ করে কেউ দয়া করে আমাকে ব্যাখ্যা করতে পারেন? আমি জানি এটি কী করে তবে আমি যখন বিশটি টেমপ্লেটে উত্স কোডটি দেখি, তখন আমি বুঝতে পারি না যে সমস্ত লুপগুলি কীভাবে একটি একক লুপ.এফপিতে সংগ্রহ করা হচ্ছে (আমি সেই ফাইলটিও দেখেছি)।

সুতরাং উদাহরণস্বরূপ কীভাবে টেমপ্লেটের একটি নির্দিষ্ট সাধারণ অংশটিকে বিমূর্ত করা যায় এবং তারপরে অন্যান্য টেম্পলেটগুলির মধ্যে এটি পুনরায় ব্যবহার করতে পারে?


উত্তর:


25

কিছু খুব ভাল সূচনা উত্তর এখানে।

মূলত, get_template_part()থিম বিকাশকারীদের টেমপ্লেট ফাইলগুলির সুনির্দিষ্টতার একটি অর্ডার সেট করতে দেয়। এটি সিএসএস নির্বাচকদের ক্ষেত্রে প্রযোজ্য হিসাবে নির্দিষ্টতার সাথে এটি একইভাবে ভাবুন। কোনও কিছুর নকশা করার সময়, আপনি সুনির্দিষ্ট ন্যূনতমতা দিয়ে শুরু করতে চান, যাতে এটির ডিজাইনের অংশগুলিতে সহজেই ওভাররাইড করা যায় যার জন্য ব্যক্তিগত মনোযোগ প্রয়োজন।

সুতরাং উদাহরণস্বরূপ, আপনি একটি ব্লগ স্টাইল করছেন এবং আপনি একটি লুপ.এফপি ফাইল তৈরি করেন যা পোস্টগুলি চিহ্নিত করার জন্য ভাল কাজ করে। তবে আপনি এগিয়ে পরিকল্পনা করছেন, এবং আপনি এটিকে পরে আপনার টেম্পলেট ফাইলগুলিতে অতিরিক্ত প্রসঙ্গের স্পেসিফায়ারগুলির সাথে কল করে বলুন - সূচী পৃষ্ঠায় আপনি get_template_part( 'loop', 'index' );একক টেম্পলে কল করেন, আপনি কল করেনget_template_part( 'loop', 'single' ); , সংরক্ষণাগার পৃষ্ঠাগুলিতে আপনি কল করেন get_template_part( 'loop', 'archive' );, আপনি কল করেন , ইত্যাদি। আপনি হোম পৃষ্ঠার থেকে আলাদাভাবে আপনার সংরক্ষণাগার পৃষ্ঠাগুলিতে লুপটি চিহ্নিত করার সিদ্ধান্ত নেওয়ার পরে এটি রাস্তাটিকে খুব সহজ করে তোলে: কেবল একটি লুপ- সংরক্ষণাগার ph.pp টেমপ্লেট তৈরি করুন এবং এটি জেনেরিক লুপ.এফপি পরিবর্তে ব্যবহৃত হবে ।

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

locate_template($template_names, $load = false, $require_once = true )

স্টাইলশিট ডিরেক্টরিতে $ টেমপ্লেট_নামের অ্যারেতে থাকা প্রতিটি নামের জন্য অনুসন্ধান করবে, তারপরে টেমপ্লেট ডিরেক্টরিতে। 'সত্য' কে লোড আর্গুমেন্ট হিসাবে পাস করার অর্থ এটি হবে will প্রয়োজন, প্রথম ফাইলটি পাওয়া যায় নি, এবং একটি খালি স্ট্রিং ফিরে আসবে যদি কোনো টেমপ্লেট ফাইল করা হয়। সুতরাং আমি আমার প্লাগইনে এটির মতো কিছু করতে পারি:

if ( '' === locate_template( 'loop-mycustomposttype.php', true, false ) )
    include( 'loop-mycustomposttype.php' );

... যা আশা এটি খুব সহজ থিম ডেভেলপার শুধু একটি ফাইল নামক অন্তর্ভুক্ত করে আমার প্লাগইন আচরণ কনফিগার করার জন্যে করা উচিত লুপ-mycustomposttype.php তাদের থিম হবে।


2
দয়া করে এর দ্বারা অবস্থান_পরিবর্তন প্রতিস্থাপন করুন। include(locate_template( 'loop-mycustomposttype.php')) এই পদ্ধতিতে ভেরিয়েবলগুলি পাস করা সম্ভব। আমি এই এখানে লিঙ্ক খুঁজে পেয়েছি । এটি অত্যন্ত দরকারী!
পাবলো এসজি পাচেকো

1
এটি করার পরে এটি পরিবর্তন করাও প্রয়োজনীয় হবে। এটি পছন্দ করুনif ( false === include(locate_template( 'loop-mycustomposttype.php')) )
পাবলো এসজি পাচেকো

1
ওহ, ভাল পয়েন্ট। সূত্র সঙ্গে আমি দিয়েছেন, requireবা require_onceকল (থেকে locate_template) বর্তমান সুযোগ এক্সেস নেই একটি ফাংশন ভিতরে এবং তাই।
সুবর্ণপ্লেস

5

সমস্ত লুপ নয়, মূল লুপ। ;-) আপনার সামনের পাতা বা কোনও বিভাগ বা হোকনোস্চুট তাকান না কেন আপনার কাছে সর্বদা একটি প্রধান লুপ থাকবে। এই মূল লুপের সামগ্রীটি আপনার টেম্পলেটটি একেবারে ডাকার আগেই চালানো ক্যোয়ারী দ্বারা নির্ধারিত হয় ।

লুপ.এফপি টেম্পলেটটি কেবল লুপের আইটেমগুলির উপরে চলে এবং সেগুলি বিন্যাস করে। কোডেক্সে ডকুমেন্টেশন দেখুন ।

আপনি যদি টোয়েন্টি টেনের লুপ.এফপি তাকান, আপনি দেখতে পারেন টোয়েন্টি টেন তার পরে একক টেম্পলেট ফাইলের মধ্যে বৈচিত্রপূর্ণ ।

get_template_part()কেবলমাত্র একটি টেম্পলেট অংশ লোড করে এবং এটির মধ্য দিয়ে চলে। আপনি ঠিক তেমনি আপনার লুপ.এফপি এর কিছু অংশ আলাদা আলাদা ফাইলগুলিতে বের করতে পারেন এবং কলগুলিতে এগুলি প্রতিস্থাপন করতে get_template_part('loop', 'category')পারেন।

অথবা লুপের প্রতিটি স্বতন্ত্র পোস্টের জন্য একটি অংশ-টেম্পলেট থাকতে পারে এবং আপনার লুপ.এফপি কেবল ক্লজের get_template_part('loop','post');মধ্যে কল করতে পারে while...। সব আপনার উপর।


3

থেকে get_template_part প্যাড :

<?php get_template_part( 'loop', 'index' ); ?>

উপস্থিত থাকা প্রথম ফাইলটির জন্য একটি পিএইচপি প্রয়োজন হবে () করবে ...

সুতরাং কার্যকরভাবে এটি কাজ করবে যেমন আপনি অন্য পিএইচপি ফাইল প্রয়োজন হয়।

আপডেট : 'প্রয়োজন' এর সাথে সামান্য পার্থক্য রয়েছে - এটি একটি ফাংশনের অভ্যন্তরে আবৃত থাকে যাতে আপনি globalযদি কোনও টেম্পলেট থেকে আপনার টেম্পলেট অংশে কোনও পরিবর্তনশীল পাস করতে চান তবে আপনাকে অবশ্যই আবশ্যক ।

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