PHP:
add_filter('the_content','pp_fix_ltr',10,1);
آرگومان اول (the_content) یک فیلتر موجود در وردپرس است که محتوای پست ها را درون خودش دارد.
آرگومان دوم هم همان تابعی است که باید اجرا شود.
آرگومان سوم در این تابع اولویت را تعیین میکند. در یک پلاگین، معمولا از فیلترهای زیادی استفاده میکنیم و ممکن است چند تغییر قرار باشد روی یک محتوا انجام شود. اینجا با دادن یک شماره، مشخص میکنیم که اولویت چندم است. من اینجا 10 گذاشته ام و اگر فیلتر دیگری داشتیم که مثلا 11 بود اول فیلتر با شماره 10 اجرا میشد و بعد 11.
آرگومان آخر هم تعداد پارامترهایی است که تابع ما قرار است بگیرد.
وقت آن است که تابع را تعریف کنیم. این تابع قرار است کلاس fix-ltr را به بلاک کد اضافه کند.
PHP:
function pp_fix_ltr($code){
$pattern = '/wp-block-code fix-ltr/';
$replace = 'wp-block-code fix-ltr fix-ltr'
$code = preg_replace($pattern,$replace,$code);
return $code;
}
تابع یک پارامتر دارد که اینجا اسمش را $code گذاشته ام. اینجا چون از فیلتر the_content استفاده کردیم کل محتوای پست ها در این $codeقرار دارد. اما من با کل محتوا که کاری ندارم من فقط قرار است بلاک کد را پیدا کنم و یک کلاس به آن اضافه کنم. برای همین از الگوهای regex و تابع preg_replace در php استفاده میکنم.
بلاک کد در صفحات وردپرس یک کلاس دارد به نام wp-block-code fix-ltr . من با regex باید کاری کنم که یک کلاس fix-ltr به آن اضافه شود.
تابع preg_replace در مثال بالا هرجا wp-block-code fix-ltr وجود داشته باشد آن را پیدا میکند و با متغیر $replace جایگذاری میکند و درون $code که همان محتوای پست ما است قرار میدهد.
درنهایت هم مقدار $code که تغییر کرده را بر میگردانیم.
برای اینکه فیلتری که ساختیم در وردپرس اجرا شود باید یک تابع دیگر به نام apply_filters را صدا بزنیم:
PHP:
apply_filters('the_content',$code);
آرگومان اول این تابع اسم همان فیلتر the_content است که در add_filter هم استفاده کردیم.
آرگومان دوم اسم پارامتر تابعی است که برای add_filter تعریف کردیم.
حالا اگر پست تستی که نوشته بودیم را نگاه کنیم جهت کد درست شده است.