Если вы хотите загрузить файлы PHP без перенаправления на них (и без использования плагина), я предлагаю вам использовать вызов Ajax. Добавить это в JavaScript, который загружает на странице:
$('.doAjax').click(function(){
$.ajax({
url: 'http://my_wordpress_website.com/my_ajax_handler.php'
type: "POST",
data: { action:'include_files_from_url', url:$(this).attr('href') },
success : function (data) {
//Actions upon success if needed.
}
});
return false;
});
Убедитесь, чтобы заполнить правильный URL для обработчика Ajax. Данные action
должны быть именем функции, которая обрабатывает ваш запрос Ajax на стороне PHP. Следующим шагом будет добавление этой функции PHP для functions.php:
function include_files_from_url()
{
//Optional data validation to prevent abuse.
if (!isset($_POST['url']))
{
echo 'invalid file name.';
die;
}
$allowedFiles = array(''); //Fill this with the file names you allow to be accessed.
if (!in_array($_POST['url'], $allowedFiles)) return FALSE;
//End of Optional data validation to prevent abuse.
$result = @include_once('includes/' . $_POST['url']); //This function assumes your files are in an includes folder. Change as needed.
if ($result) echo 'Successfully included ' . $_POST['url'];
else echo 'Failed to include ' . $_POST['url'] . '. File was not found.';
}
add_action('wp_ajax_nopriv_include_files_from_url', 'include_files_from_url'); //To allow non-logged in user to use this call
add_action('wp_ajax_include_files_from_url', 'include_files_from_url'); //To allow logged in user to use this call
Обратите внимание, как этот метод дает гораздо больше возможностей безопасности. Во-первых, вызов Javascript Ajax не указывает вашу папку include - эта папка указана только в файле PHP. На стороне PHP мы также проверяем, что запрашивается действительный URL-адрес, и что он включен в список допустимых файлов. Я также рекомендую вам добавить массив допустимых имен функций ajax внутри вашего обработчика ajax (так что любой вызов функции, которую вы не создали, будет отклонен).
Наконец, вы можете добавить URL-адресов, которые будут включены в ваш HTML, как, например:
<a href="hello.php" class="doAjax">URL</a>
Что о перемещении сценарии в созданную папку в другое место? или, возможно, с помощью плагина? – bmcculley
@bmcculley. Все плагины PHP, которые я проверил, позволяют писать PHP-код на обычных страницах WordPress. Если я нажму ссылку, он перенаправится на эту обычную страницу WordPress, чего я не хочу. Я хочу, чтобы скрипт PHP выполнялся, пока я все еще на одной странице ссылки. Это происходит с использованием файлов PHP. – Brad