2016-11-30 16 views
1

Wordpress-pluginを開発していますが、バックエンドやフロントエンドの場合、プラグインのメインファイルにPHPファイルが含まれています(少なくとも想定されています)。Wordpressプラグインのis_admin()とDOING_AJAX

if (is_admin() && (! defined('DOING_AJAX') || ! DOING_AJAX)) { 
    require_once('admin/functions_admin.php'); 
} 
else { 
    require_once('public/functions_public.php'); 
} 

正しいファイルがWP-adminにロードされます。is_adminとして

()はAJAX要求にtrueを返す、私はAJAXが行われたりされていないwheteverチェックするために一定のDOING_AJAXを使用していました。正しいファイルがフロントエンドに読み込まれます。 Ajax-requestsはフロントエンド - で動作しますが、バックエンドではありませんです。このコードでAjaxバックエンドを実行しているときに "if"は実行されません。

もちろん、次の、その後のコードは、それがバックエンドの作品「あればそうでない」ではなく、葉エンドを追加:

else if (is_admin()) { 
    require_once('admin/functions_admin.php'); 
} 

答えて

-1

は、フロントとバックの両方(すべてのAJAX関数を集めることによって、これを整理-end)を次のファイルに追加します。

// Is admin, but not doing ajaax 
if (is_admin() && (! defined('DOING_AJAX') || ! DOING_AJAX)) { 
    require_once('admin/functions_admin.php'); 
} 
// Is doing AJAX 
else if (is_admin() && (defined('DOING_AJAX') || DOING_AJAX)) { 
    require_once('functions_ajax.php'); 
} 
// Front-end functions 
else { 
require_once('public/functions_public.php'); 
} 
+0

を役に立てば幸い、あなたがプラグインや管理者にAJAXを使用するためのWordPressのガイドライン(および側近)を避けているように見えます。お読みください... https://codex.wordpress.org/AJAX_in_Plugins –

4

この点については、Ajaxのプラグインコーデックスページを参照してください。

フックはwp-admin/admin-ajax.phpを使用するため、必ずis_admin()を使用しないでください。これは常にtrueを返します。

たとえば、あなただけのフロントエンド上のファイルをインクルードしたい、あなたはwp_ajax_{$action}を持っているファイルで、!is_admin()に確認しますが、管理者-ajax.phpは常にtrueを返し、応答は0

になります

コーデックスとは何ですか?

フロントエンドとバックエンドの両方のAjaxリクエストはadmin-ajax.phpを使用するため、is_admin()はアクション処理コードで常にtrueを返します。

選択フロントエンドのためにあなたのAjaxのスクリプトハンドラをロードし、バックエンド、およびis_admin()関数を使用する場合は、あなたのwp_ajax_(アクション)とwp_ajax_nopriv_(アクション)フックがis_admin内でなければならない()===真の部分。

あなたの質問は:どのように私のスクリプトを動作させることができますか?

is_admin()を削除し、別の条件に置き換えてください。 Ajax in plugin

ソースはそれは恐ろしい技術です

関連する問題