如果您希望加载 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;
});
确保为您的 Ajax 处理程序填写正确的 URL。 action 数据应该是在 PHP 端处理 Ajax 请求的函数的名称。
下一步是将该 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 调用没有指定您的包含文件夹——该文件夹仅在 PHP 文件中指定。在 PHP 方面,我们还会检查是否要求提供有效的 URL,并且它是否在您要包含的有效文件列表中。我鼓励你在你的 ajax 处理程序中添加一个有效的 ajax 函数名数组(这样任何对你没有创建的函数的调用都会被拒绝)。
最后,您可以像这样添加要包含在 HTML 中的 URL:
<a href="hello.php" class="doAjax">URL</a>