Изменение user-agent WordPress

Изменение user-agent wordpress
Программирование

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

В статье описывается, как заменить user-agent по-умолчанию, при использовании api wordpress.

Зачем менять user-agent WordPress?

В моем случае ситуация такая: есть интернет-магазин на WordPress (Woocommerce), который загружает товары из xml файла другого магазина (абсолютно легально, так уж устроена сфера). Делается это скриптом, через wordpress api.  Но тут по какой-то причине, возможно, по недоговоренности владельцев подразделений бизнеса сайта-донора, возможно просто по раздолбайству, у сайта-донора блокируется скачивание всех изображений. Как выяснилось, заблокировано по user-agent (довольно распространенный случай). Таким образом, ломается работа скрипта загрузки и прекращается добавление новых товаров (при их появлении),  т.к. нет возможности загрузить картинки.

Думаю в целом, такие случае не единичны, но именно с WordPress, не так часты.
Например, если вы загружаете картинки на сервер linux утилитой wget, вы можете прописать user-agent в параметрах, например:

Даже некоторые функции в WordPress позволяют менять User-Agent. Например, функция wp_remote_get(), которая получает удаленную страницу. В нее можно передать желаемый user-agent в качестве опции (подробнее тут).  Или, если удобно, применить фильтр http_headers_useragent (подробнее тут).

Но я, для загрузки картинок использовал wordpress функцию download_url (подробнее о использовании функции тут). В параметрах у нее указывается только URL файла и timeaot. А как же user-agent? При использовании функции она подставляет в User-agent примерно следующее: «WordPress/4.6.1; http://ваш_сайт.ru/», что явно никак не является броузером по мнению сайта-донора.

Как проверить, какой user-agent подставляется при загрузке файла через api wordpress?

Не знаю, на сколько я выбрал самый простой способ, но он состоит в том, что бы загрузить через функцию страницу «http://www.whoishostingthis.com/tools/user-agent/» которая выводит параметры броузера, а потом глазами просмотреть html. Получалось примерно так:

Фильтр http_headers_useragent на функцию download_url не действует. Поэтому, пришлось лезть в код WordPress (благо, я давно уже забил на обновления движка).

Код функции download_url доступен в файле /wp-includes/class-http.php.
В самой функции уже использован фильтр ‘user-agent’ => apply_filters, который подставляет user-agent по-умолчанию. Остается только заменить его на нужный, заменив строчку:

например, на:

Удачи!

Magento2 API: Добавление категорий товаров, товаров и их атрибутов по API
Программирование
2
Magento 2.1: Добавление категорий и товаров по API

Недавно хотел сделать один из проектов интернет-магазина, используя CMS Magento 2. Одна из задач проекта была возможность загрузки товаров и категорий из XML поставщика на сайт по API. Эта задача была реализована. И т.к. в интернете возникает множество вопросов, каким образом загружать товары в Magento 2 по API, делюсь своими …

Wordpress Woocommerce API: добавление категорий и товаров в каталог
Программирование
WordPress WooCommerce: добавление категорий и товаров по API в каталог

Если вы делаете или уже работаете с интернет-магазином на WooCommerce, рано или поздно возникнет желание автоматизировать добавление и обновление товаров и цен. А если каталог товаров большой, то есть смысл с этого и начать. Ниже — мои наработки по добавлению товаров и категорий в WooCommerce по API с помощью скрипта. Думаю, …

WordPress Taxonomy
Программирование
WordPress не записывает значения таксономий при запуске скрипта через cron

Если нужно из стороннего источника  формировать посты в базе WordPress, чаще всего это делается с помощью функции wp_insert_post.  Отладив программу, запуская ее через web-интерфейс админки, я столкнулся с проблемой, что посты записываются не верно, используя запуск через cron. А именно: не записываются таксономии. Т.е., например, нет возможности задать категорию поста. В …

Top