در وردپرس چطور یک مقدار رو از هوک do_action بگیرم و در خروجی چاپ کنم

M-R 8 ماه پیش

من یک هوک به نام “my_setting” تعریف کردم که تابع “get_setting_var” رو فراخوانی می کنه و این تابع یک آرگومان به نام “user_id$” دریافت میکنه مثل کد زیر:

add_action( 'my_setting', 'get_setting_var');
function get_setting_var($user_id){
$current_user = wp_get_current_user();
if($user_id!=$current_user->ID)
return 'not allowed';
}
else{
return 'are allowed';
}
}

میخوام یک ورودی به action بدم و بعد جواب رو چاپ کنم مثل زیر:

$element=do_action( 'my_setting',$user_id);
echo $element;

اما هیچ خروجی نشون داده نمیشه. چکار باید بکنم؟

1 پاسخ
برای قرار دادن دیدگاه وارد شوید
ahmadaskari 8 ماه پیش

هوک filter کار action رو انجام می ده و یک مقدار رو برمیگردونه. در ضمن در قسمت تعریف action باید تعداد آرگومان های تابع رو مشخص کنی. برای این کار یک پارامتر سوم باید قرار بگیره. در هر صورت به نظر من کدت باید به صورت زیر اصلاح بشه:

 add_filter( 'my_setting', 'get_setting_var', 10, 2);
function get_setting_var($element,$user_id){
$current_user = wp_get_current_user();
if($user_id!=$current_user->ID)
{
$element= 'not allowed';
}
else{
$element= 'are allowed';
}
return $element;
}

و همچنین

$element='';
$element=apply_filters( 'my_setting',$element,$user_id);
echo $element;