Не буду вдаваться в подробности, с остальными мелочами разберусь сам, но на данный момент волнует меня следующий вопрос:
Могу ли я каким-либо образом с помощью 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);
}}
);
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости