Хакове за WordPress

Последна актуализация на:

Става въпрос за някои дописвания на кода  на WordPress 2.8 с цел отстраняване на проблеми или за улесняване на работата с блога.

Проблем с паметта след инсталиране на WordPress 2.8

Инсталираш  нов WordPress 2.8 и при влизане в админ панела в Настройки виждаш следното:

Всички полета след "Часова зона" липсват и най-гадното е, че липсва бутона "Запис на промените" и така не можеш да промениш нищо в тази страница. Ако направиш view source ще видиш в кода грешка подобна на следната:

Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 7680 bytes) in /home/imesait/public_html/blog/wp-includes/functions.php(3233) : runtime-created function(2) : runtime-created function on line 1

Новата версия на WordPress изисква доста повече памет.
Подобен проблем може да видиш и на други места в блога. Например в „Табло“ в админ панела, в блоковете за новини за WordPress или в блоковете на някои разширения. Но където и да видиш грешка започваща с

Fatal error: Allowed memory size of…

значи става въпрос за недостиг на оперативна памет.

За да се справиш с този проблем и за да нямаш проблем при бъдещи обновявания на системата, направи следното.

Решение 1:

Отвори файла wp-config.php (в главната директория на блога) и в край на файла, НО ПРЕДИ РЕДА

</span>
require_once(ABSPATH.'wp-settings.php');
<span style="color: #008000;">


добави следното:

# ganbox.com : memory fix : https://ganbox.com/blog/хакове-за-wordpress define('WP_MEMORY_LIMIT', '64M');

След това качи по FTP файла на сървъра и тествай. На повечето хостинги това трябва да реши проблема.

Например на superhosting.bg става, докато на host.bg не става.

Ако все пак системният администратор на хостинга е забранил това действие, предлагам ти следния хак.

Решение 2:

Отвори файла wp-includes/functions.php и някъде около ред 3203 намери:

$all = timezone_identifiers_list();


Този ред изяжда прекалено много памет  и това води до грешка. Ако блога ще се ползва само от България, падащия списък с часови зони е излишен. Замести горния ред със следното:

</span>
# $all = timezone_identifiers_list();
# ganbox.com : memory optimization : https://ganbox.com/blog/хакове-за-wordpress
$all = array('Europe/Sofia');


Това вече със сигурност ще реши проблема в административната страница Настройки, след като качиш файла.

Няма проблем и дори ти препоръчвам да направиш и двете промени, за да върви страница Настройки по-бързо. 

Оправяне на проблем с редирект след логаут.

Ако се намираш в статия, която има URL адрес на кирилица при login или logout би трябвало да бъдеш прехвърлен към същата статия, но вместо това попадаш в страница за грешка 404 на блога.

Решение:

Отвори файла wp-includes/pluggable.php и потърси функция function wp_sanitize_redirect($location)

(около ред 870)

Промени следващия ред от функцията:

$location = preg_replace('|[^a-z0-9-~+_.?#=&amp;;,/:%!]|i', '', $location);

на

# ganbox.com fix $location = preg_replace('|[^a-z0-9-~+_.?#=&amp;;,/:%!]|i', '', $location);
$location = preg_replace('|[^абвгдежзийклмнопрстуфхцчшщъьюяa-z0-9-~+_.?#=&amp;;,/:%!]|i',
'', $location);

Качи файла wp-includes/pluggable.php и тествай. Забележка не става с "а-я" в регулярния израз.

Бутончета за логване и бърз достъп до админ панела.

В този блог бутончето най-горе вдясно с ключа служи за логване или за изход, като след вход или изход оставаш в същата статия.

След като се логнеш това бутонче се сменя с друго на което има картинка с отворена врата и от което може да направиш логаут. По този начин бързо се ориентираш дали в момента си логнат. Освен това като си логнат се показва още един бутон с картинка гаечен ключ от който влизаш в админ панела.

blog_buttonsАко искаш да си направиш такива бутончета за твоя блог отвори файла

wp-content/themes/default/header.php

(където default е името на темата която ползваш)

и използвай код подобен на следния:

&lt;div id="header"&gt; &lt;div align="right" id="header_links"&gt;   &lt;a href="&lt;?php bloginfo('url'); ?&gt;"&gt;&lt;img </span><span style="color: #008000;"> src="&lt;?php bloginfo('stylesheet_directory'); ?&gt;/images/ihome.png" </span><span style="color: #008000;"> width="20" height="21" alt="В началото на блога" title="В началото на блога" /&gt;&lt;/a&gt;     &lt;a href="/about"&gt;&lt;img src="&lt;?php bloginfo('stylesheet_directory'); ?&gt;/images/iletter.png" </span><span style="color: #008000;"> width="20" height="21" alt="Контакт със SEO специалист" title="Контакт със SEO специалист" /&gt;&lt;/a&gt; &lt;?php if ( !is_user_logged_in() ):?&gt;     &lt;a href="&lt;?php print wp_login_url($_SERVER['REQUEST_URI']) ?&gt;"&gt;&lt;img </span><span style="color: #008000;"> src="&lt;?php bloginfo('stylesheet_directory')?&gt;/images/ilogin.png" </span><span style="color: #008000;"> width="20" height="21" alt="Вход в блога с име и парола" title="Вход в блога с име и парола" /&gt;&lt;/a&gt; &lt;?php else: ?&gt;     &lt;a href="&lt;?php bloginfo('url'); ?&gt;/wp-admin"&gt;&lt;img src="&lt;?php bloginfo('stylesheet_directory')?&gt;/images/tool.gif" </span><span style="color: #008000;"> width="26" height="20" alt="Управление на блога" title="Управление на блога" /&gt;&lt;/a&gt;     &lt;a href="&lt;?php print wp_logout_url($_SERVER['REQUEST_URI']) ?&gt;"&gt;&lt;img </span><span style="color: #008000;"> src="&lt;?php bloginfo('stylesheet_directory')?&gt;/images/admin_logout.gif"</span><span style="color: #008000;"> width="21" height="22" alt="Изход от блога" title="Изход от блога" /&gt;&lt;/a&gt; &lt;?php endif ?&gt;</span>
<pre><span style="color: #008000;">  &lt;/div&gt;</span></pre>
<pre><span style="color: #008000;">  &lt;div id="header_title"&gt;</span><span style="color: #008000;">
     &lt;h1&gt;&lt;?php bloginfo('name'); ?&gt;&lt;/h1&gt;</span><span style="color: #008000;">
     &lt;h2&gt;&lt;?php bloginfo('description'); ?&gt;&lt;/h2&gt;
  &lt;/div&gt;</span></pre>
<pre><span style="color: #008000;">&lt;/div&gt;


Картинките се поставят в папка images на темата. Може да ги изтеглиш от моя блог.

Тук съм дал целия div header от файла header.php на темата за по-лесно ориентиране.

Прочетена:11001
1 - лоша2 - слаба3 - средна4 - добра5 - отлична (1 гласа, оценка: 5,00 от 5. Моля изберете оценка!)
Loading...
Георги Стефанов
Георги Стефанов
Магистър по информатика, който се занимава с компютри от 1988 г., професионално с програмиране от 1998 г., а с уеб технологии от 2002 г. Има богат опит при оптимизиране на бизнес сайтове. Повече от 12 години развива успешно свои уеб проекти и работи с български и международни компании за постоянно подобряване на техните сайтове и увеличаване на онлайн продажбите. 

5 comments on “Хакове за WordPress”

  1. при опит за автоматично обновяване на WP от 2.8.3 към 2.8.4 се появява това:
    Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 2621468 bytes) in /home/top3all/sites/blog/wp-includes/http.php on line 1327
    опитах с твоя вариант:
    define('WP_MEMORY_LIMIT', '64M');
    но пак даде същото. дори опитах със 128M. успях да го накарам да работи като добавих ini_set('memory_limit', '120M'); на същото място - в края на wp-config.php
    мерси за съветите!

  2. В 1gb.bg и двата начина не действат 🙁

  3. Нормално - това е безплатен хостинг и сигурно има силно ограничение на паметта. Препоръчвам ти да пишеш за проблема във форума на сайта или да си купиш хостинг. Мога да ти предложа професионален хостинг на сървърите на superhosting.bg срещу 40 лв на година (под тяхната цена).

  4. Важното е, че трябва да се добави преди реда require_once(ABSPATH.’wp-settings.php’); Тогава трябва да сработи.

  5. Изключително полезно и интересно четиво е този блог. Често ми е спасявал живота 🙂 За мое съжаление обаче, посоченото решение за решаване на проблема с недостига на памет не ми помогна. Заделени са цели 128МБ и пак тази фатална грешка е на лице. Лошото е, че навсякъде в Интернет пространството се посочва именно такъв подход. Хубавата страна на WordPress обаче е, че един plug-in може да се замени с друг 😛 И така проблемът ми беше решен 🙂

    Поздрави и весели празници!

споделиха
phone linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram