От доста време използвам WordPres плъгин, който ми осигуряваше различни стилови елементи в статиите като бутони, разделители, цветни боксове и т.н. Реших обаче да се отърва от него в полза на още по-високата скорост на зареждане на сайта. А и вече доста от стиловото оформление можех да си правя ръчно с помощта на CSS.
Какъв обаче беше проблема?
В lifehack,bg към момента на написването на този материал има над 800 статии. В над 80% от тях са използвани въпросните стилови елементи чрез “shortcodes”!
Но плъгина, който ги подсигуряваше не работи – изключих го, а тези малки парченца код вече не са активни – на тяхно място се виждаше нещо подобно на “sws_divider_line“, което можеше да смути много от нашите потребители /някои от тях вече ни сигнализираха/.
В първия момент си помислих:
Сега Христо трябва да минеш през всички над 1300 статии (една по една) и да премахнеш всеки неактивен код, който е оставил плъгина, който си деактивирал.
Направо ми се дорева при мисълта, че трябва да мина през всичко това.
Но нямаше да включа плъгина отново, исках сайта да зарежда по-бързо, а WordPress плъгините да са възможно най-малко.
Затова искам не искам започнах ръчното премахване.
На десетата страница от статии направо ми писна.
Зарових се в интернет, за да намеря друго решение, това просто не беше опция – да прекарам почивните си дни в премахване на хиляди малки гадни редчета код…
Както Уил Смит беше казал: Няма проблем, който да не е описан в някоя книга.“, така и в този случай се оказа, че няма проблем, който да не е описан в интернет.
В крайна сметка намерих страхотен вариант, който решаваше целия този проблем само за 30 секунди и то напълно автоматично – без да има нужда от ръчна намеса!
Не може да си представите какво щастие изпитах, когато го тествах и видях, че работи отлично. Да, почувствах се и малко прецакан, че си играх да оправя ръчно толкова много статии, но това вече не беше от голямо значение…
Останалите 500 и кусур се оправиха напълно автоматично и тези кратки кодове вече не се показваха пред очите на читателите на lifehack.bg
Ето и решението:
За да се отървем от всички излишни и неработещи “shortcodes” от деактивирани плъгини, на един път, без ръчна намеса за всяка статия, просто трябва да направим следното.
- Отворете администрацията на WordPress сайта си
- Отидете в Apperance → Editor
- Там намерете файла function.php
- Отворете го и в края поставете този код преди таг-а ?>
add_filter('the_content', 'mte_remove_unused_shortcode'); function mte_remove_unused_shortcode($content) { $pattern = mte_get_unused_shortcode_regex(); $content = preg_replace_callback( '/'. $pattern .'/s', 'strip_shortcode_tag', $content ); return $content; } function mte_get_unused_shortcode_regex() { global $shortcode_tags; $tagnames = array_keys($shortcode_tags); $tagregexp = join( '|', array_map('preg_quote', $tagnames) ); $regex = '\\[(\\[?)'; $regex .= "(?!$tagregexp)"; $regex .= '\\b([^\\]\\/]*(?:\\/(?!\\])[^\\]\\/]*)*?)(?:(\\/)\\]|\\](?:([^\\[]*+(?:\\[(?!\\/\\2\\])[^\\[]*+)*+)\\[\\/\\2\\])?)(\\]?)'; return $regex; }
Накрая проверете статиите си /не в редактора, а на живо/, в които знаете, че трябва да се изобрази някой от използваните [shortcodes] и ще видите, че вече ги няма!
Това, което прави тази функция е да изключи неактивните вече кодове от неработещите плъгини, а не да ги премахне перманентно. Това е добре, тъй като следващия път, когато активирате плъгина, “shortcodes” отново ще се изобразят елементите, стоящи зад тях.
Надявам се този трик да ви бъде полезен!