Чтобы долго не искать или 6/27 микро-фиксов для WordPress

Последнее время я работаю преимущественно с WordPress. Естественно я сталкиваюсь с некоторыми проблемами, которым не сразу могу найти решение. И даже, когда нахожу его, оно все равно не кажется мне логичным. По-отдельности каждое из найденных решений не заслуживает статьи, но и поделиться найденным в тоже время хочется. Поэтому все такие мелкие проблемы и решения я собрал в одной статье.

Статья еще не закончена и будет обновляться по мере того, как я буду сталкиваться со всякими мелкими казалось бы проблемами, но тем не менее очень неприятными или занимающими неожиданно много времени.


Проблема: WooCommerce (WooCommerce Subscription plugin) при добавлении простых товаров и подписок в корзину одновременно, удаляет их с сообщением об ошибке: «A subscription has been removed from your cart. Due to payment gateway restrictions, products and subscriptions can not be purchased at the same time.»

Решение: На странице настройки Подписок /wp-admin/admin.php?page=wc-settings&tab=subscriptions включить опцию «Mixed Checkout».


Проблема: WordPress сайт не реагирует на изменения стилей, скриптов, постов. Из установленных плагинов был WP Super Cache, но он был отключен и при этом ситуация с кешированными страницами не изменилось — вы по-прежнему не видите изменений и ищите другой (возможно серверный) кеш.

Решение: На самом деле нельзя так просто взять и отключить WP Super Cache. Если вы просто деактивировали плагин, то кеш не отключился, он все еще работает. Вам нужно активировать плагин заново, зайти в настройки и снять галочки со всех методов кеширования. После этого плагин можно отключить, хотя кеш уже отключен. В поиске мне помогла вот эта короткая статья — WP Headache Remedied: WP Super Cache “Hidden Feature” at Work


Проблема: Невозможно обновить JetPack плагин — возникает ошибка «Download failed. Failed to write request to temporary file.»

Решение: Прописать в wp-config.php директиву для переопределения пути для папки, хранящей временные файлы: define(‘WP_TEMP_DIR’,ABSPATH.’wp-content/uploads/’);


Проблема: На сайте под управлением WordPress исчезли/пропали/сломались все картинки. Сами файлы изображений на месте. Никаких новых плагинов или тем (или обновлений) установлено не было. Изменений в коде не было.

Решение: Проверьте права на запись в папке /wp-content/uploads/ и ее вложенных папках, выставьте права на запись для пользователя, под которым запущен веб-сервер. В моем случае когда я добавил картинку в статью 1 января 2015 года, у меня пропали все изображения. Все дело было в том, что у веб-сервера не хватало прав на запись в папку /wp-content/uploads/, чтобы создать в ней папку 2015. При этом каким-то образом это влияло на работу всех вызовов функции wp_get_attachment_url().


Проблема: Изменить поле user_login штатной функцией wp_update_user() невозможно

Решение: Обновить user_login напрямую через $wpdb класс:

global $wpdb;
if ( isset( $data['username'] ) && $data['username'] ) {
$wpdb->update($wpdb->users, array('user_login' => $data['username']), array('ID' => $user_id));
}

Проблема: После изменения user_login, пользователь будет разлогинен (cookie wordpress хранит также и user_login пользователя)

Решение: Сгенерировать новые куки посредством

wp_set_auth_cookie

. Но снова таки просто сгенерировать куки не получится, потому что WordPress закешировал текущего пользователя. А значит перед обновлением куки, нужно сбросить кеш:

wp_cache_flush();
wp_set_current_user(get_current_user_id(), $data['username']);
wp_set_auth_cookie(get_current_user_id(), true, is_ssl());
do_action('wp_login', $data['username']);

Продолжение следует…

Полезно(0)Бесполезно(0)
Комментарии закрыты.