Shahoo Ghadery
5 سال پیش توسط Shahoo Ghadery مطرح شد
2 پاسخ

استفاده از autoloader composer برای قالب های وردپرسی

با سلام
ببخشید بنده کامپوزر را در وردپرس نصب کرده ام و اتولود کردن کلاس ها رو با کامپوزر هندل کرده ام.
ولی با این مشکل مواجهم:
هنگامی که از autoload composer استفاده میکنم و اسم و مسیر دقیق کلاس رو هم میگیره و اینکلود میکنه ولی وردپرس این ارور رو میده:
Warning: call_user_func_array() expects parameter 1 to be a valid callback, class 'initialiser' not found in C:\xampp\htdocs\wordpress-specialist\j5-wordpress-theme\wp-includes\class-wp-hook.php on line 286

و هنگامی هم که با تابع spl_autoload_register پی اچ پی خودم اتولود مینویسم کار میکند در وردپرس ولی مشکل آن این است که هنگام فراخوانی یک کلاس در پلاگین ها این تابع نام کلاس را میگیرد و به مسیر قالب ارجاع میده. چطوری باید به spl_autoload_register بگویم فقط کلاس های قالب رو هندل کن و کاری به توابع و کلاس های افزونه ها نداشته باش؟

و هنگامی که برای کلاس های قالبم namespace میگذارم باز این تابع spl_autoload_register هم همین اروری که برای اتولودر کامپوزر میدهد را برای اتولودر خودم هم میدهد.
ممنون میشم راهنمایی بفرمایید که چگونه در وردپرس با کامپوز اتولو بنویسم و این اتولود فقط مخصوص قالب باشد و کاری به کلاس های افزونه ها نداشته باشد.


ثبت پرسش جدید
علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 5 سال پیش مطرح شد
1

لینک‌های زیر رو چک کنید
https://stackoverflow.com/questions/51909961/php-warning-call-user-func-array-expects-parameter-1-to-be-a-valid-callback

یه جا توی پلاگین‌ها و یا قالب از تابع add_filter استفاده شده. شبیه زیر:

add_filter('filter_name', 'method');

پیداش کنید و به صورت زیر ویرایشش کنید:

add_filter('filter_name', array($this, 'method'));

و اگر متد، استاتیک بود:

add_filter('filter_name', array(CLASSNAME::class, 'method'));

Shahoo Ghadery
تخصص : برنامه نویس بک اند
@shahoo.gh 5 سال پیش مطرح شد
0

با سلام
ممنونم از پاسختون و اینکه وقت گذاشتید.
بزرگوار اگر بنده تابعی که در add_action ها و add_filter ها فراخوانی میکنم در این مسیر باشد: App/Classes ، و متد کلاس هم ایستاتیک باشد، باید چگونه آن را در add_action یا add_filter فراخوانی کنم؟
نحوه فراخوانی تابع add_action که در یک مسیر دیگر هست و در داخل خود function.php نیست، به چه صورت هست؟
فک کنم مشکل از اینجاست.
نیم اسپس اون کلاسی که باید یکی از توابعش فراخوانی شود در add_action فایل function.php به این صورت هستش:
namespace App\classes


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام