在wordpress插件文件中包含wp-config.php文件的问题

在wordpress插件文件中包含wp-config.php文件的问题,php,jquery,ajax,wordpress,Php,Jquery,Ajax,Wordpress,我在一个插件上工作,在插件中我创建了一个AJAX(在插件索引文件中),当用户在搜索栏中写东西时,相关的帖子标题会显示在下拉列表中,为了得到这个结果,我在插件根目录中创建了一个类似“foo_get_posts.php”的其他文件。这是我的密码: function foo_search_form(){ ?> <div class="foo_search_field"> <form role="search" method="get" id="searc

我在一个插件上工作,在插件中我创建了一个AJAX(在插件索引文件中),当用户在搜索栏中写东西时,相关的帖子标题会显示在下拉列表中,为了得到这个结果,我在插件根目录中创建了一个类似“foo_get_posts.php”的其他文件。这是我的密码:

function foo_search_form(){
?>
    <div class="foo_search_field">
        <form role="search" method="get" id="searchform" class="clearfix" action="<?php echo home_url( '/' ); ?>" autocomplete="off">
            <input type="text" onfocus="if (this.value == '<?php _e("Search Posts...", "foo") ?>') {this.value = '';}" onblur="if (this.value == '')  {this.value = '<?php _e("Search Posts...", "foo") ?>';}" value="<?php _e("Search Posts...", "foo") ?>" name="s" id="s" />
            <ul id="foo_search_dropdown"></ul>
            <input type="hidden" name="post_type" value="foo_base" />
        </form>
    </div>
<?php
}

add_action('wp_head', 'foo_search_drop');
function foo_search_drop(){
?>
<script type="text/javascript">
    jQuery(document).ready(function() {
        jQuery('#s').keyup(function() {
            jQuery('#foo_search_dropdown').slideDown("slow");
            // Get data
            var foo_search_term = jQuery(this).val();

            // Sending data through AJAX to process
            jQuery.post('<?php echo plugin_dir_url(__FILE__) ?>foo_get_posts.php', {foo_search_key: foo_search_term}, function(data) {
                jQuery('#foo_search_dropdown').html(data);
            });
        });
    });
</script>
<?php
}
我还尝试在主题中移动这个文件“foo_get_posts.php”,并调用页眉和页脚,但它给了我错误,所以我恢复了我的工作

如果我删除这一行
require_一次(str_replace('//','/',dirname('/'.'/'))。../../../wp config.php')从我的文件我没有得到我的数据库结果,所以这对我来说是必要的


因此,请告诉我如何解决这个问题,请帮助我。

根据wordpress文档,如果您的插件将被称为“Fableus Functional”,您可以将您的PHP文件命名为Fableus-Functional.PHP。那么首先创建该文件并包含其他文件

为什么包含wp-config.php?您已经连接了wpdb,但没有包含itI。我不知道为什么$wpdb首先会得到结果…但是当我调用此文件时,我的sql查询是work perfectlyremove require_once(从该文件中选择wp-config.php并选中我的兄弟,我已经选中以删除此行,但我的sql查询不起作用:(这个文件和你的插件名称相同吗?如果不同,请将文件包含到其中。你能给我一个wordpress文档以获取Fableus-Functional.php文件吗?你可以在这里获得关于插件的文档,你检查了吗?其中有任何查询吗?根据文档和测试插件进行更改此链接不能帮助我,不仅仅是提示。你必须按照p创建文件lugin名称并包含其他文件。
<?php
require_once( str_replace('//','/',dirname(__FILE__).'/') .'../../../wp-config.php');

global $wpdb;
$foo_search_key = $_POST['foo_search_key'];
$tbl_posts = $wpdb->prefix."posts";
$tbl_relation = $wpdb->prefix."term_relationships";
$tbl_taxonomy = $wpdb->prefix."term_taxonomy";
$tbl_terms = $wpdb->prefix."terms";

if(!empty($foo_search_key)){
    $foo_search_sql = $wpdb->get_results(" // My SQL Query goes here");

    if($foo_search_sql){
        foreach ($foo_search_sql as $search_result) {
        ?>
            <li>
                <a href="<?php echo site_url()."/".foo_PLUGIN_SLUG."/".$search_result->post_name ?>">
                    <?php echo $search_result->post_title; ?>
                </a>
            </li>
            <?php
        }
    } else {
        ?>
            <span>Search result not found......</span>
<?php
    }
}
?>
## Calling core loading files directly

You're calling this in foo_get_posts.php

require_once( str_replace('//','/',dirname(__FILE__).'/') .'../../../wp-config.php');

Including wp-config.php, wp-blog-header.php, wp-load.php, or pretty much any other WordPress core file that you have to call directly via an include is not a good idea and we cannot approve a plugin that does so unless it has a very good reason to load the file(s). It is prone to failure since not all WordPress installs have the exact same file structure.

Usually plugins will include wp-config.php or wp-load.php in order to gain access to core WordPress functions, but there are much better ways to do this. It's best if you tie your processing functions (the ones that need but don't have access to core functions) into an action hook, such as "init" or "admin_init".