Здравствуйте!
Возник вопрос по использованию программы, доходчивой документации по теме найти не смог.
Задача следующая:
Скрипт заходит на страницу добавления записи в админке, далее подгружается хук, который подменивает на лету массив POST с данными о самой статье, и далее скрипт нажимает на кнопку Publish и собственно передает обработчику наши подмененные данные.
При создания статьи после нажатия на клавишу отправки Publish вижу следующие RAW логи (урезанная версия):
11:53:54 need load request: POST : http://localhost/worker/wp-json/wp/v2/p ... ocale=user
11:53:54 Post Datas: {"id":85,"featured_media":82,"status":"publish","title":"Hello World!", "content":"Just a test..\n"}
Будьте столь любезны, подскажите как это сделать?
P.S.
Вариант с $browser->send_post_query() не подойдет, т.к. в процессе отправки статьи через админку помимо POST данных передаются данные подтверждающие факт авторизации и публикации от имени адмиина, подделать которые будет весьма проблематично.
Быстрое добавление статьи в админку Wordpress используя подмену POST данных на лету $raw->set_hook_on_begin_transaction
Быстрое добавление статьи в админку Wordpress используя подмену POST данных на лету $raw->set_hook_on_begin_transaction
Последний раз редактировалось alpha666 18 дек 2020, 19:59, всего редактировалось 5 раз.
Программист извращенец из Киева - alphagoblin4@gmail.com
Re: Добавление статьи в админке Wordpress используя объект $raw
Попробовал разобраться в исходниках TestSamples. Получилось такое вот, однако при выполнении скрипта хуман намертво подвисает где то на этапе между созданием файла begin_transaction_hook2.out2_1 и begin_transaction_hook2.in2_1
Код скрипта (привожу весь код целиком):
Лог begin_transaction_hook2.out2_1:
Содержимое begin_transaction_hook2.out2_1
Содержимое begin_transaction_hook2.in2_1
Содержимое begin_transaction_hook2.in_1
Код скрипта (привожу весь код целиком):
<?php $xhe_host = "127.0.0.1:7017"; // The following code is required to properly run XWeb Human Emulator require("C:/XWeb/Human Emulator Studio 7.0.56/Templates/xweb_human_emulator.php"); $bUTF8Ver=true; $browser->navigate('about:blank'); $app->clear(); $browser->navigate('http://localhost/worker/wp-admin/'); $input->get_by_number(0)->send_input('test'); $input->get_by_number(1)->send_input('123456'); $button->get_by_number(0)->click(); $raw->enable_all_streams(); $browser->navigate('http://localhost/worker/wp-admin/post-new.php'); $browser->wait(); $browser->wait_js(); $textarea->get_by_id("post-title-0", false)->send_input("abc"); $browser->wait(); $browser->wait_js(); $keyboard->send_key(VK_TAB); $browser->wait(); $browser->wait_js(); $p->get_by_number(0)->send_input('Hello World!'); $browser->wait(); $browser->wait_js(); $raw->set_hook_on_begin_transaction("Hooks/begin_transaction_hook2.php"); $browser->wait(); $browser->wait_js(); $btn->get_by_inner_text("Publish", false)->click(); $browser->wait(); $btn->get_by_number(13)->event("onclick"); $browser->wait(); $header = $raw->get_last_request_header(); $browser->wait(); $browser->wait_js(); $postData = $raw->get_last_request_post_datas(); $browser->wait(); $browser->wait_js(); $requestUrl = $raw->get_last_request_url(); $browser->wait(); $browser->wait_js(); echo "Header \/..\n"; var_dump($header); echo "\n\nPOST Data \/ ..\n"; var_dump($postData); echo "\n\nRequest url \/ ..\n"; var_dump($requestUrl); $raw->enable_all_streams(false); $browser->wait(); $browser->wait_js(); $app->quit(); ?>Код хука:
<?php $num=$argv[1]; $data_input = [ 'id' => 85, 'featured_media' => 82, 'type' => 'post', 'format' => 'standard', 'title' => 'Hello World!', 'content' => 'Just a test...', 'status' => 'published' ]; $request_data = file("begin_transaction_hook2.in2_" . $num); $Handle = fopen("begin_transaction_hook2.out2_" . $num, 'w'); fwrite($Handle, json_encode($data_input)); fclose($Handle);
Лог begin_transaction_hook2.out2_1:
{"id":85,"featured_media":82,"type":"post","format":"standard","title":"Hello World!","content":"Just a test...","status":"published"}
Содержимое begin_transaction_hook2.out2_1
-POST DATAS-
Содержимое begin_transaction_hook2.in2_1
http://localhost/worker/wp-admin/admin-ajax.php
Содержимое begin_transaction_hook2.in_1
Host:localhost User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:60.0) Gecko/20100101 /60.0 Accept:*/* Accept-Language:en-US,en;q=0.5 Accept-Encoding:gzip, deflate Content-Type:application/x-www-form-urlencoded; charset=UTF-8 X-Requested-With:XMLHttpRequest Referer:http://localhost/worker/wp-admin/post-new.php Content-Length:171 Cookie:wordpress_ee7a201270830abd9d7cec67770115eb=test%7C1608482702%7CGIDZPHu2pD8chiXVlrdBo3YMM7EpigrHkasmsJHnRAY%7C49e0022f4c013dd1d09eb1a0d1326b58be04deefadaef5a799109dca7628f44f; wordpress_test_cookie=WP+Cookie+check; wordpress_logged_in_ee7a201270830abd9d7cec67770115eb=test%7C1608482702%7CGIDZPHu2pD8chiXVlrdBo3YMM7EpigrHkasmsJHnRAY%7C531ed69f5ad3d7216bc0a790797f0a59412935ba6f4699f0b57fbcb8d27bddd6; wp-settings-2=libraryContent%3Dbrowse; wp-settings-time-2=1608309903 DNT:1
Программист извращенец из Киева - alphagoblin4@gmail.com
Re: Быстрое добавление статьи в админку Wordpress используя подмену POST данных на лету $raw->set_hook_on_begin_transact
Попробуем разобраться с этим в ближайшее время.