我正在创建一个插件,接收表单中输入的关键字,然后处理这个单词并在网页上进行搜索,当收到结果(通过AJAX)时,视频将被筛选。
在我的script.php中,而不是回显所有的html行,我使用“include”来包含一个带有html行的php文件(托管在外部域中),然后将这些文件打印在域中使用该插件的人。一切正常但是在想要显示调用Wordpress内部函数的类别列表时,插件失败了,显然这是因为脚本试图从托管文件的域中查找这些函数,而不是从本地wordpress。我怎么能这样做?
我的scrypt.js托管在本地域中,即包含在用户将下载的插件的文件中。如您所见,它会调用托管在外部域中的api.php。
<script>
jQuery(function($){
var pluginUrl = '<?php echo plugin_dir_url( __FILE__ ); ?>' ;
$('[id^="form-busqueda"]').on('submit', function(e) {
e.preventDefault();
$.ajax({
type : 'POST',
url : 'http://example.com/server/api.php',
data : $(this).serialize(),
cache: false,
beforeSend: function(){
$('#results').html('<img src="'+pluginUrl+'../../assets/img/loading.gif" />');
}
}).done(function(data) {
$('#results').html(data);
});
});
});
</script>
好的,这个查询将通过AJAX传递给我在另一个域中托管的api.php文件,这个文件将以“include(”results.php“)”响应,results.php文件也包含在同一个文件中外部域我的api.php文件在哪里
api.php
<?php
//A series of validations are made, variables are generated (example $variable1, and finally the file "results.php" is called that calls all the variables so that finally the content is printed in the site of the client that is using the plugin.
include("results.php");
?>
results.php
<div class="container">
<p><?php echo $variable1 ?></p>
<p><?php echo $variable2 ?></p>
<p><?php echo $variable3 ?></p>
<?php
$category=addslashes($_GET['cat']);
$args = array(
'orderby' => 'name',
'order' => 'ASC',
'hide_empty' => 0,
'selected' => $category,
'name' => 'cat_',
);
wp_dropdown_categories( $args );
?>
</div>
问题是当我从这个文件调用Wordpress函数时。但我不知道还能用什么。我希望我对自己的问题已经足够清楚了。提前谢谢。
答案 0 :(得分:0)
在大多数Web服务器(php.ini)中,设置为允许包含文件,因此出于安全原因,您不能使用include来包含远程地址中的文件。
或者你可以使用这个,其中指令 allow_url_include 必须在php.ini中设置为On
如果你想阅读远程文件的HTML内容,那么对你来说,使用 file_get_contents 函数可能会有所帮助,但这将作为纯HTML标记代码返回,赢得了& #39;是任何服务器端代码。