ghoo 8 ارسال شده در مهر 94 گزارش بازنشر ارسال شده در مهر 94 سلام دوستانمن این کد رو برای یک افزونه نوشتم ولی نمی دونم چرا هیچ کدومشون کار نمیکنن. نه منو نه فراخوانی استایل و اسکریپت و .... خودم مطمئنم این کد یه قسمتاییش اشتباه هست ولی نمی دونم کجا اگه میشه راهنمایی کنید:public function init(){add_action('admin_menu', 'test_menu');add_action( 'admin_enqueue_scripts', 'test_scripts_styles' );add_action( 'admin_enqueue_scripts', 'test_msg_face' );add_action('admin_init', 'register_testsettings');add_action('wp_head', 'sitemsg_add_css'); add_action('admin_head', 'my_admin_head');add_action( 'init', 'test_translations' );}public function test_menu(){add_menu_page( __("Test 1", 'test'), __("Test 1", 'test'), 1,"test-settings","test_settings_page" ,'dashicons-admin-customizer' );add_submenu_page("test-settings", __("Test 2", 'test'), __("Test 2", 'test'), 1, "test-settings","test_settings_page");add_submenu_page('test-settings', __("Test 3", 'test'), __("Test 3", 'test'), 'edit_others_pages', 'test-site-msg', 'sitemsg_settings_page');}public function test_scripts_styles($hook){if ( 'test-settings' != $hook ) {return;}wp_enqueue_scripts( 'admin-test', plugin_dir_url( __FILE__ ) . 'assets/js/admin.js' );}public function test_msg_face() {wp_register_style( 'msg_face_test', plugin_dir_url( __FILE__ ) . 'assets/css/msgs.css' );wp_enqueue_style( 'msg_face_test' );}public function test_translations(){load_plugin_textdomain('test', false, dirname(plugin_basename(__FILE__)) . '/languages');}public function register_testsettings(){register_setting('site_msg_settings', 'site_msg_settings');} نقل قول لینک به ارسال
ghoo 8 ارسال شده در مهر 94 مالک گزارش بازنشر ارسال شده در مهر 94 (ویرایش شده) در ضمن میخوام از wp_enqueue_scripts در دو صفحه خاص از افزونه استفاده کنم نه در همه ی پیشخوان.اما میخوام از wp_enqueue_style هم در همه ی پیشخوان و هم در سایت استفاده کنم. ویرایش شده مهر 94 توسط ghoo نقل قول لینک به ارسال
دانیال 172 ارسال شده در مهر 94 گزارش بازنشر ارسال شده در مهر 94 (ویرایش شده) add_action() هارو توی فانکشن__constructبذاریدسوال دوم :کافیه توی فانکشن یه if بذارید و بر اساس نوع صفحه یا اسم صفحه فایل رو فراخوانی کنید !موفق باشید ویرایش شده مهر 94 توسط دانیال نقل قول لینک به ارسال
ghoo 8 ارسال شده در مهر 94 مالک گزارش بازنشر ارسال شده در مهر 94 add_action() هارو توی فانکشن__constructبذاریدیعنی به این صورت؟public function __construct(){add_action()} نقل قول لینک به ارسال
دانیال 172 ارسال شده در مهر 94 گزارش بازنشر ارسال شده در مهر 94 یعنی به این صورت؟public function __construct(){add_action()}بله امتحان کنید نقل قول لینک به ارسال
ghoo 8 ارسال شده در مهر 94 مالک گزارش بازنشر ارسال شده در مهر 94 اینطوری استفاده کردم نشد:public function __construct(){add_action('admin_menu', 'test_menu');add_action( 'admin_enqueue_scripts', 'test_scripts_styles' );add_action( 'admin_enqueue_scripts', 'test_msg_face' );add_action('admin_init', 'register_testsettings');add_action('wp_head', 'sitemsg_add_css'); add_action('admin_head', 'my_admin_head');add_action( 'init', 'test_translations' );} نقل قول لینک به ارسال
دانیال 172 ارسال شده در مهر 94 گزارش بازنشر ارسال شده در مهر 94 (ویرایش شده) اگه براتون مقدوره فایل مربوطه رو ارسال کنید ویرایش شده مهر 94 توسط دانیال نقل قول لینک به ارسال
ghoo 8 ارسال شده در مهر 94 مالک گزارش بازنشر ارسال شده در مهر 94 اگه براتون مقدوره فایل مربوطه رو ارسال کنید<?php/*Plugin Name: MY PluginPlugin URI: http://myplugin.ir/mypluginDescription: Plugin DescriptionRequires at least: 4.1.0Tested up to: 4.3.1Author: MeAuthor URI: http://myplugin.ir/mypluginVersion: 1.0Text Domain: testDomain Path: /languages*/if (!defined('ABSPATH')){ exit; // Exit if accessed directly}final class TESTPLUGIN{public function __construct(){ add_action('admin_menu', 'test_menu'); add_action( 'admin_enqueue_scripts', 'test_scripts_styles' ); add_action( 'admin_enqueue_scripts', 'test_msg_face' ); add_action('admin_init', 'register_testsettings'); add_action('wp_head', 'sitemsg_add_css'); add_action('admin_head', 'my_admin_head'); add_action( 'init', 'test_translations' );} public function test_menu() { add_menu_page( __("Page 1", 'test'), __("Page 1", 'test'), 1,"test-settings","test_settings_page" ,'dashicons-admin-customizer' ); add_submenu_page("test-settings", __("Page 2", 'test'), __("Page 3", 'test'), 1, "test-settings","test_settings_page"); add_submenu_page('test-settings', __("Page 3", 'test'), __("Page 3", 'test'), 'edit_others_pages', 'test-site-msg', 'sitemsg_settings_page'); } public function test_scripts_styles($hook) {if ( 'test-settings' != $hook ) { return; } wp_enqueue_scripts( 'admin-test', plugin_dir_url( __FILE__ ) . 'assets/js/admin.js' ); }public function test_msg_face() { wp_register_style( 'msg_face_test', plugin_dir_url( __FILE__ ) . 'assets/css/msgs.css' ); wp_enqueue_style( 'msg_face_test' );} public function test_translations() { load_plugin_textdomain('test', false, dirname(plugin_basename(__FILE__)) . '/languages'); } public function register_testsettings() { register_setting('site_msg_settings', 'site_msg_settings'); }} نقل قول لینک به ارسال
دانیال 172 ارسال شده در مهر 94 گزارش بازنشر ارسال شده در مهر 94 اصلا چرا توی کلاس این کارو میکنید ؟ خارج از کلاس منو رو اضافه کنید نقل قول لینک به ارسال
ghoo 8 ارسال شده در مهر 94 مالک گزارش بازنشر ارسال شده در مهر 94 اصلا چرا توی کلاس این کارو میکنید ؟خارج از کلاس منو رو اضافه کنیدکلاس رو که حذف می کنم این خطا میاد:Parse error: syntax error, unexpected 'public' (T_PUBLIC) in .............. نقل قول لینک به ارسال
ghoo 8 ارسال شده در مهر 94 مالک گزارش بازنشر ارسال شده در مهر 94 دلیل این که از کلاس استفاده می کنم:از یکی از نویسندگان که در Codecanyon افزونه داره پرسیدم گفت باید به این صورت باشه. نقل قول لینک به ارسال
دانیال 172 ارسال شده در مهر 94 گزارش بازنشر ارسال شده در مهر 94 همچین چیزی<?php/*Plugin Name: MY PluginPlugin URI: http://myplugin.ir/mypluginDescription: Plugin DescriptionRequires at least: 4.1.0Tested up to: 4.3.1Author: MeAuthor URI: http://myplugin.ir/mypluginVersion: 1.0Text Domain: testDomain Path: /languages*/if (!defined('ABSPATH')){ exit; // Exit if accessed directly} add_action('admin_menu', 'e_add_menu');function e_add_menu(){ add_menu_page("تماس با ایگل دیزاین", "پیام ها", "manage_options", "inbox", "Inbox_messages", 'dashicons-format-status', 4); add_submenu_page('inbox', 'پیام ها', "پیام ها", 'manage_options', 'inbox', 'Inbox_messages'); add_submenu_page('inbox', 'سفارش ها', "سفارش ها", 'manage_options', 'order', 'Inbox_orders');}final class TESTPLUGIN{function __construct(){ add_action('admin_menu', 'test_menu'); add_action( 'admin_enqueue_scripts', 'test_scripts_styles' ); add_action( 'admin_enqueue_scripts', 'test_msg_face' ); add_action('admin_init', 'register_testsettings'); add_action('wp_head', 'sitemsg_add_css'); add_action('admin_head', 'my_admin_head'); add_action( 'init', 'test_translations' );} function test_menu() { add_menu_page( __("Page 1", 'test'), __("Page 1", 'test'), 1,"manage_options","test_settings_page" ,'dashicons-admin-customizer' ); add_submenu_page("test-settings", __("Page 2", 'test'), __("Page 3", 'test'), 1, "manage_options","test_settings_page"); add_submenu_page('test-settings', __("Page 3", 'test'), __("Page 3", 'test'), 'edit_others_pages', 'test-site-msg', 'sitemsg_settings_page'); } public function test_scripts_styles($hook) {if ( 'test-settings' != $hook ) { return; } wp_enqueue_scripts( 'admin-test', plugin_dir_url( __FILE__ ) . 'assets/js/admin.js' ); }public function test_msg_face() { wp_register_style( 'msg_face_test', plugin_dir_url( __FILE__ ) . 'assets/css/msgs.css' ); wp_enqueue_style( 'msg_face_test' );} public function test_translations() { load_plugin_textdomain('test', false, dirname(plugin_basename(__FILE__)) . '/languages'); } public function register_testsettings() { register_setting('site_msg_settings', 'site_msg_settings'); }} نقل قول لینک به ارسال
ghoo 8 ارسال شده در مهر 94 مالک گزارش بازنشر ارسال شده در مهر 94 مشکلی با این که خارج از کلاس باشه و به صورت public function نباشه ندارم اما می خوام بدونم چرا با public function کار نمیکنه.دلیل این که از کلاس استفاده می کنم:از یکی از نویسندگان که در Codecanyon افزونه داره پرسیدم گفت باید به این صورت باشه. نقل قول لینک به ارسال
Ehsaan 1865 ارسال شده در مهر 94 گزارش بازنشر ارسال شده در مهر 94 سلام، شما وقتی میخواید یه فانکشن رو در کلاس یا بیرون کلاس، هُک کنید، باید پارامتر تابع رو به صورت آرایه بفرستید. عضو اول آرایه یه instance یا نام کلاسی هست که فانکشن در اون کلاس وجود داره و دوم هم اسم فانکشنه.مثال:class A {public function __construct() {add_action( 'init', array( $this, 'test' ) );}public function test() {echo 'test';}}مثال 2:add_action( 'init', array( 'A', 'test' );class A {// ...}موفق باشید. 2 نقل قول لینک به ارسال
ghoo 8 ارسال شده در مهر 94 مالک گزارش بازنشر ارسال شده در مهر 94 (ویرایش شده) سلام، شما وقتی میخواید یه فانکشن رو در کلاس یا بیرون کلاس، هُک کنید، باید پارامتر تابع رو به صورت آرایه بفرستید. عضو اول آرایه یه instance یا نام کلاسی هست که فانکشن در اون کلاس وجود داره و دوم هم اسم فانکشنه.مثال:class A {public function __construct() {add_action( 'init', array( $this, 'test' ) );}public function test() {echo 'test';}}مثال 2:add_action( 'init', array( 'A', 'test' );class A {// ...}موفق باشید.خیلی ممنون.درست شد.من برای تنظیمات افزونه کدهای html رو به همراه فانکشن مربوط به اون توی یه فایل جدا گذاشتم:<?phppublic function test_settings_page() {?><div class="wrap"><div class="pptitle"><span class="dashicons dashicons-admin-generic"></span><?php _e('My Plugin', 'test'); ?></div><?php//show saved options messageif($_REQUEST['settings-updated']) : ?><br/><br/><div id="message" class="updated below-h2 notice is-dismissible"><p><?php _e('Settings Saved.', 'test'); ?></p><button type="button" class="notice-dismiss"><span class="screen-reader-text"><?php _e('Close', 'test'); ?></span></button></div><?php endif; ?><form method="post" action="options.php"><?php settings_fields('plugin_settings'); ?><?php $options = get_option('plugin_settings'); ?><table class="form-table"><h3><?php _e('Custom Text', 'test'); ?></h3> <tr valign="top"><th scope="row"><?php _e('Custom Text', 'test'); ?></th><td><textarea name="plugin_settings[option1]" style="direction:ltr;" cols="60" rows="5" id="plugin_settings[option1]" class="regular-text"><?php esc_attr_e($options['option1']); ?></textarea></td></tr></table><p class="submit"><input type="submit" class="button-primary" value="<?php _e('Save Changes', 'test'); ?>" /></p></form></div><?php }و با دستور include اون فایل رو فراخوانی می کنم.اگه دستور include رو توی کلاس بزارم این خطا میاد:Parse error: syntax error, unexpected 'public' (T_PUBLIC) in C:\wamp\www\wp\wp-content\plugins\my-plugin\includes\plugin-settings.php on line 2اگر هم نزارم باز همین خطا میاد.فانکشن test_settings_page در add_menu_page استفاده میشه. ویرایش شده مهر 94 توسط ghoo نقل قول لینک به ارسال
Ehsaan 1865 ارسال شده در مهر 94 گزارش بازنشر ارسال شده در مهر 94 در خارج از یک کلاس، کلیدواژه public معنی نداره، برای حل خطا، واژه public رو حذف کنید.موفق باشید. 1 نقل قول لینک به ارسال
ghoo 8 ارسال شده در مهر 94 مالک گزارش بازنشر ارسال شده در مهر 94 در خارج از یک کلاس، کلیدواژه public معنی نداره، برای حل خطا، واژه public رو حذف کنید.موفق باشید.ممنون مشکل اول یعنی استفاده از public function حل شد. حالا مونده توابع wp_enqueue_style و wp_enqueue_scripts این توابع رو به این صورت استفاده می کنم: public function myplugin_scripts_styles() { wp_enqueue_scripts( 'admin-wfc', plugin_dir_url( __FILE__ ) . 'assets/js/admin.js' ); wp_register_style( 'mypluginstyle', plugin_dir_url( __FILE__ ) . 'assets/css/style.css' ); wp_enqueue_style( 'mypluginstyle' ); } public function __construct() { add_action( 'wp_enqueue_scripts', array( $this, 'myplugin_scripts_styles')); }نه فایل جاوا اسکریپت فراخوانی میشه نه سی اس اس. نقل قول لینک به ارسال
ghoo 8 ارسال شده در مهر 94 مالک گزارش بازنشر ارسال شده در مهر 94 در ضمن میخوام از wp_enqueue_scripts در دو صفحه خاص از افزونه استفاده کنم نه در همه ی پیشخوان.اما میخوام از wp_enqueue_style هم در همه ی پیشخوان و هم در سایت استفاده کنم. نقل قول لینک به ارسال
پست های پیشنهاد شده
به گفتگو بپیوندید
هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .