বিলম্বিত উত্তর
কীভাবে আপনার ফাইলগুলি সঠিকভাবে অন্তর্ভুক্ত করবেন:
function wpse1403_bootstrap()
{
// Here we load from our includes directory
// This considers parent and child themes as well
locate_template( array( 'inc/foo.class.php' ), true, true );
}
add_action( 'after_setup_theme', 'wpse1403_bootstrap' );
প্লাগিনগুলিতেও একই কাজ করে।
কীভাবে সঠিক পথ বা ইউআরআই পাবেন
ফাইল সিস্টেমের এপিআই ফাংশনগুলি দেখুন:
home_url()
plugin_dir_url()
plugin_dir_path()
admin_url()
get_template_directory()
get_template_directory_uri()
get_stylesheet_directory()
get_stylesheet_directory_uri()
- প্রভৃতি
কিভাবে সংখ্যা হ্রাস করা যায় include/require
আপনার যদি কোনও ডিরেক্টরি থেকে সমস্ত ফাইল আনার প্রয়োজন হয় তবে যান
foreach ( glob( 'path/to/folder/*.php' ) as $file )
include $file;
মনে রাখবেন যে এটি ব্যর্থতা (উত্পাদন ব্যবহারের পক্ষে ভাল) / লোডযোগ্য ফাইলগুলি উপেক্ষা করে।
এই আচরণটি পরিবর্তন করতে আপনি বিকাশের সময় একটি আলাদা কনফিগার ব্যবহার করতে চাইতে পারেন:
$files = ( defined( 'WP_DEBUG' ) AND WP_DEBUG )
? glob( 'path/to/folder/*.php', GLOB_ERR )
: glob( 'path/to/folder/*.php' )
foreach ( $files as $file )
include $file;
সম্পাদনা করুন: ওওপি / এসপিএল পদ্ধতির
আমি যখন ফিরে এসেছি এবং দেখেছি যে এই উত্তরটি আরও বেশি পরিমাণে উত্সাহ পাচ্ছে, আমি ভেবেছিলাম যে আমি আজকাল এটি কীভাবে করছি - একটি পিএইচপি 5.3+ বিশ্বে show নীচের উদাহরণটি থিম সাবফোল্ডার নামের একটি ফাইল থেকে সমস্ত ফাইল লোড করে src/
। এখানে আমার লাইব্রেরি রয়েছে যা মেনু, চিত্র ইত্যাদির মতো নির্দিষ্ট কাজগুলি পরিচালনা করে যা প্রতিটি ফাইল লোড হওয়ার সাথে সাথে আপনাকে নামটিরও যত্ন নিতে হবে না। এই ডিরেক্টরিতে আপনার যদি অন্য সাবফোল্ডার থাকে তবে সেগুলি উপেক্ষা করা হবে।
\FilesystemIterator
পিএইচপি 5.3+ হয় supercedor উপর \DirectoryIterator
। দুজনেই পিএইচপি এসপিএলের অংশ। পিএইচপি 5.2 এর ফলে বিল্টটি এসপিএল এক্সটেনশানটি বন্ধ করা সম্ভব করে (সমস্ত ইনস্টলের 1% এর নীচে এটি করেছে), এসপিএল এখন পিএইচপি মূল অংশ part
<?php
namespace Theme;
$files = new \FilesystemIterator( __DIR__.'/src', \FilesystemIterator::SKIP_DOTS );
foreach ( $files as $file )
{
/** @noinspection PhpIncludeInspection */
! $files->isDir() and include $files->getRealPath();
}
উত্তর: পূর্বে যখন আমি এখনও পিএইচপি 5.2.x সমর্থিত আমি নিম্নলিখিত সমাধান ব্যবহৃত \FilterIterator
মধ্যে src/Filters
ডিরেক্টরি শুধুমাত্র ফাইল (ও ফোল্ডারের পয়েন্টার বিন্দু নয়) উদ্ধার করতে হবে এবং একটি \DirectoryIterator
looping এবং লোডিং না।
namespace Theme;
use Theme\Filters\IncludesFilter;
$files = new IncludesFilter( new \DirectoryIterator( __DIR__.'/src' ) );
foreach ( $files as $file )
{
include_once $files->current()->getRealPath();
}
\FilterIterator
যে হিসাবে হিসাবে সহজ ছিল:
<?php
namespace Theme\Filters;
class IncludesFilter extends \FilterIterator
{
public function accept()
{
return
! $this->current()->isDot()
and $this->current()->isFile()
and $this->current()->isReadable();
}
}
পিএইচপি 5.2 এখনই মারা যাওয়া / ইওএল পাশাপাশি (এবং পাশাপাশি 5.3), সত্য যে এটি আরও কোড এবং গেমটিতে আরও একটি ফাইল রয়েছে, তাই পরবর্তীকালে যাওয়ার এবং পিএইচপি 5.2.x সমর্থন করার কোনও কারণ নেই the
সংকলিত
আরও গভীরতার নিবন্ধটি ডাব্লুপিক্রাটসে এখানে পাওয়া যাবে ।
সম্পাদনা স্পষ্টতই সঠিক উপায় হল namespace
ডি কোড ব্যবহার করা , পিএসআর -4 অটোলয়েডিংয়ের জন্য প্রস্তুত করা হয়েছে যথাযথ ডিরেক্টরিতে যা ইতিমধ্যে নেমস্পেসের মাধ্যমে সংজ্ঞায়িত করা হয়েছে putting তারপরে আপনার নির্ভরতাগুলি পরিচালনা করতে কেবল সুরকার এবং একটি ব্যবহার করুন এবং composer.json
এটি আপনার পিএইচপি অটোলোডারকে স্বয়ংক্রিয়ভাবে তৈরি করতে দিন (যা কেবল কল করে স্বয়ংক্রিয়ভাবে কোনও ফাইল আমদানি করে use \<namespace>\ClassName
)। এটি পিএইচপি ওয়ার্ল্ডের ডি-ফ্যাক্টো স্ট্যান্ডার্ড, যাওয়ার সহজতম উপায় এবং আরও প্রাক-স্বয়ংক্রিয় এবং ডাব্লুপি স্টার্টার দ্বারা সরলীকৃত ।