Не буду вдаваться в подробности, с остальными мелочами разберусь сам, но на данный момент волнует меня следующий вопрос:
Могу ли я каким-либо образом с помощью wordpress загрузить свой php-файл, либо поступить еще как-то, чтобы потом на этот файл можно было дать ссылку, и на любой json-запрос легко был бы дан ответ? Ниже конкретика.
Например, мне нужно создать следующий php-файл:
<?php
if (!isset($_REQUEST)) {
return;
}
$myanswer = 'answerText';
$data = json_decode(file_get_contents('php://input'));
switch ($data->type) {
case 'smthing':
echo $myanswer;
break;
echo('ok');
break;
}
?>
То есть, при отправке запроса с полем data=smthing
, сервер, пославший запрос, должен получить ответ answerText
.
Возможно ли такое? И если возможно, на какую нагрузку по количеству запросов в минуту/секунду возможна поддержка? Спасибо заранее.
На WordPress сервере надо вставить такой обработчик в function.php
:
function reply() {
if ( isset($_POST['smthing']) ) { // проверяем, задан ли параметр POST smthing
$smthing = $_POST['smthing']; // берем его значение
$smthing = json_decode($smthing); // декодируем json
if ($smthing->type == 'good') { // если тип в json = 'good' (ну, типа, хороший запрос)
wp_send_json_success('Answer to good request'); // посылаем назад json с правильным сообщением
}
else {
wp_send_json_error(); // иначе - просто посылаем ))
}
}
}
add_action( 'init', 'reply' ); // так в WP добавляется хук на этапе инициализации
Поскольку срабатывать он будет на довольно раннем этапе, а wp_send_json... завершает выполнение (как и die() ), то работать код будет достаточно эффективно.
Насчет быстродействия. Вот тут пишут, что добились на WordPress 1700 просмотров страниц в секунду. Код в примере выше (при равном железе) будет работать существенно быстрее, потому что нет даже вызова плагина для отдачи кешированной страницы.
Общие рекомендации по разработке высоконагруженных систем на WordPress можно найти тут.
Вы можете сделать, как вы написали. Я точно так же пишу все обработчики почты, так ими легко управлять (как файлом обычным на серваке). Обычно я кладу обработчики в корень темы.
jQuery.ajax({
type: 'POST',
url: '/wp-content/themes/theme/mailer.php',
data: msg,
success: function(){
console.log("thx");
jQuery('#form-result').modal('show');
},
error: function(xhr, str){
alert('Возникла ошибка: ' + xhr.responseCode);
}}
);
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Почему выдаёт ошибку Parse error: syntax error, unexpected 'if' (T_IF)?
Как проверить инициализирован ли OpenGL, функцией glutInit(&argc, argv)?