包括在MAMP上不起作用的wp-blog-Header

时间:2012-04-24 作者:Joe_Schmoe

为了澄清我的问题。。。我的插件使用AJAX调用文件pluginname/submit/pick.php 我的pluginname/pluginname.php 包含常用的插件标题,wordpress会自动找到它。

原始问题。。。我想用全球$wpdb 在插件中,将数据插入到我的一个表中。从文件上看,我只需要包括wp-blog-header.php然而,当我尝试这样做时,我得到了一个错误。

PHP Fatal error: [require()](function.require):需要打开失败\'http://localhost:8888/blog/wp-博客标题。php“(include\\u path=\'。:/Applications/MAMP/bin/php/php5.3.6/lib/php”)位于/Applications/MAMP/htdocs/blog/wp-content/plugins/pluginname/submit/pick中。php在线4

我的pluginname/submit/pick.php (由AJAX调用)具有以下代码

<?php
    $p = \'http://localhost:8888/blog/wp-blog-header.php\';
    echo $p;
    require($p);
    echo \'hi\';
?> 
如果我加载pick.php, 我明白了http://localhost:8888/blog/wp-blog-header.php 就是这样。因此,正如错误日志所证实的那样,它一定在要求上失败了。

路径是正确的,因为我在wp-blog-header.php, 并复制粘贴的输出pick.php 进入地址栏,它工作了。

任何帮助都将不胜感激。

2 个回复
最合适的回答,由SO网友:Joe_Schmoe 整理而成

The short answer

错误是因为我在中放置了URL而不是文件路径。一行修复是设置$p = \'../../../../wp-blog-header.php\';

The long answer

跟随凯撒的链接,我走了一条漫长的路,最终找到了我认为正确的方法。

在里面pluginname/plugin.php

// load your javascript, and setup the ajaxurl variable
// this is loading my js everywhere, we could load it only where needed
// 0.01 is the version of your js, increment this each time you change your js
//   so that you don\'t keep using the same cached version
wp_enqueue_script( \'pluginname\', plugins_url( \'js/pluginname.js\', __FILE__ ), array( \'jquery\' ), 0.01 );
wp_localize_script( \'pluginname\', \'pluginname\', array( \'ajaxurl\' => admin_url( \'admin-ajax.php\' ) ) );

// wp_ajax_insert_pick is a combination of wp_ajax_ and the \'action\' : \'insert_pick\' you provide in your js
// ajax_insert_pick is the function below that is called to handle your ajax request 
add_action( "wp_ajax_action_name", "ajax_insert_pick" );

// this basically replaces pluginname/submit/pick.php
function ajax_insert_pick() {
    global $wpdb;
    $var = $_POST[\'var\'];
    // handle the ajax request here
    echo $response;
    die(); // needed otherwise wordpress may append a zero to your response.
}
在中pluginname/js/pluginname.js

function submit_pick( var ) {
    jQuery.post( pluginname.ajaxurl, 
                 { \'action\' : \'insert_pick\',
                   \'var\' : var },
                 function(response) {
                     alert(response); },
                 \'text\' );
}
因为我昨天晚上才学会了这一点,而且学习php/mysql/wp/js/ajax才一个月,所以上面很可能有一些错误。但昨晚它对我起了作用,所以在这个阶段我很高兴。

SO网友:kaiser

你把事情弄错了。

标题注释

在主文件中,您需要在顶部添加以下注释(例如,取自联系人表单7):

<?php
/*
Plugin Name: Contact Form 7
Plugin URI: http://contactform7.com/
Description: Just another contact form plugin. Simple but flexible.
Author: Takayuki Miyoshi
Author URI: http://ideasilo.wordpress.com/
Text Domain: wpcf7
Domain Path: /languages/
Version: 3.1.2
*/
WP将自动检测插件。然后简单地define/require/include 你需要什么。插件将在plugins_loaded 钩子,这是第一个提供给你的。然后可以使用完整的WP环境。

结束

相关推荐

Include captions

我正在使用Meta Box plugin, 一切正常。我正在使用它在一些自定义帖子类型上创建图库功能,并且我能够使用以下代码显示上载的图像:global $wpdb; $meta = get_post_meta( get_the_ID(), \'meta_key\', false ); if ( ! is_array( $meta ) ) $meta = ( array ) $meta; if ( ! empty( $meta ) ) {