wordpress 内で jquery ajax リクエストを実行しています。これにより、内部の php スクリプトが呼び出されます。この php スクリプトは、簡単に含めることができる functions.php などの特定のワードプレス機能にアクセスできる必要があります。私ができないことは、現在の wordpress ユーザー、$wpdb オブジェクトなどの情報にアクセスすることです。私の質問は...すべてのデータ(およびfunctions.php)にアクセスできる、含めることができるwordpressファイルがありますか?おそらく世界で最もくだらない説明だったことを知っているので、私がアクセスしているものを理解していただければ幸いです:D
4 に答える
THE BAD WAY(他の人が指摘したように)
wordpress で使用するカスタム PHP を作成したときに、wp-load.php
ファイルを含めました。次に、を含む必要なすべてをロードします$wpdb
。
require_once('wp-load.php'); // relative path from your PHP file
global $wpdb;
$wpdb->show_errors = TRUE; // useful for when you first start
迅速な修正のための適切な出発点であることがわかりました。ただし、実際に必要な機能よりも多くの機能が読み込まれることを覚えておく必要があります。したがって、パフォーマンス時間が遅くなります。
良い方法
機能がより複雑になると、「悪い」実装はそれほど優れているとは言えなくなりました。そこで、代わりにプラグインの作成に移りました。WordPress コーデックスには、AJAX とプラグインの操作に関する優れた情報が含まれています: http://codex.wordpress.org/AJAX_in_Plugins
最も基本的な形式では、AJAX フックを登録する必要があります。
// 'wp_ajax_foo' is the hook, 'foo' is the function that handles the request
add_action( 'wp_ajax_foo', 'foo');
foo
対応する関数 (この場合は)も必要になります。
function foo() {
// handle the AJAX request
$bar = $_POST['bar'];
}
action
次に、JavaScript で、属性で使用するフックを特定しますが、そのwp_ajax
部分は省略します。
$.post(ajaxurl, { action: 'foo', bar: true }, function(response) {
// do something with response
});
functions.php
通常、「wp_ajax_*」などのプレフィックスに基づいて AJAX リクエストをリッスンするアクション フックを設定します。wp-load.php
を使用して追加できる JavaScript にもへの参照が必要ですwp_head
。これを設定したら、AJAX リクエストで "action" という変数を使用して、使用する関数を指定します。
// add javascript reference to wp-load.php as ajaxurl
function core_add_ajax_url(){
?>
<script type="text/javascript">var ajaxurl = "<?php echo site_url( 'wp-load.php' ); ?>";</script>
<?php
}
add_action('wp_head', 'core_add_ajax_url', 1 );
// process all wp_ajax_* calls
function core_add_ajax_hook() {
/* Theme only, we already have the wp_ajax_ hook firing in wp-admin */
if ( !defined( 'WP_ADMIN' ) && isset($_REQUEST['action']) ){
do_action( 'wp_ajax_' . $_REQUEST['action'] );
}
}
add_action( 'init', 'core_add_ajax_hook' );
// Hook your function to the 'wp_ajax_*' for processing
function my_function(){
// do some things and then return JSON
}
add_action( 'wp_ajax_my_function', 'my_function' );
Javascript リクエストは次のようになります。
jQuery.postJSON(
ajaxurl, // request url
{ action: 'my_function' }, // request parameters
function (response){ // callback
// handle the response
}
);
WordPress の AJAX リクエストは、通常、ディレクトリadmin-ajax.php
上のファイル内の特別なフックを介して送信されますwp-admin
。そこから、すべての WP 機能にアクセスできます。