WordPress安装的根目录中有一个名为wp-load.php
. 如果您将该文件包含在的顶部。php文件,它将引导足够的WordPress,您将能够访问其API并执行您的短代码。
However, there\'s a better way to do it.
请看,使用您使用的方法,您正在硬编码代码中文件的路径。即使您使用的是WP\\u PLUGIN\\u URL,如果有人(可能将来也包括您)想要重命名插件或移动插件,会发生什么情况。php文件到其他位置?
WordPress为handling AJAX requests in plugins. 开始使用它真的很容易,而且它将为您节省很多麻烦,尤其是如果您公开发布此插件代码。
首先,插件需要注册AJAX处理程序。
// You can replace \'myactionname\' with your own custom name
// like "user36316_renderiframe"
add_action( \'wp_ajax_nopriv_myactionname\', \'myaction_handler\' );
function myaction_handler() {
// Render your iframe content here
// Be sure to die() when you\'re done
// or WordPress will append a \'0\' to the output
// as a status code
die();
}
请注意操作名称中的“nopriv”。WordPress的AJAX支持最初是为他们的管理界面构建的,因此它默认检查管理访问。如果您只想让登录的管理员运行您的AJAX代码,那么您应该去掉“nopriv”并注册操作
wp_ajax_myactionname
. 但是您希望每个人都能够渲染这个iframe,所以请在其中保留“nopriv”。
现在您正在使用WordPress的AJAX API,您可以让WordPress来确定AJAX端点的位置。由于AJAX最初只用于管理员,因此wp-admin/admin-ajax.php
已使用,并且admin_url()
函数将告诉您在哪里可以找到它:
<iframe src=<?php echo add_query_arg( \'action\', \'myactionname\', admin_url( \'admin-ajax.php\' ) ); ?>
The
add_query_arg()
调用会将您的操作名称附加到AJAX请求中。使用此函数更安全,而不只是附加值以防万一
admin_url()
在某个点开始返回自己的查询字符串。
您还想传递postid,并且add_query_arg
如果传入查询参数数组,也可以在这方面提供帮助:
<iframe src=<?php echo add_query_arg( array( \'action\' => \'myactionname\', \'postid\' => get_the_ID() ), admin_url( \'admin-ajax.php\' ) ); ?>