2016-12-01 16 views
0

私はアヤックスの世界に新たなんだ上で実行するために、私は成功した命令にhereに従ってきました:AJAX呼び出しは、特定のページ

私がいる問題は、私がしようとしているということです条件付きで特定のページでajaxを実行します。これは、適用されないページでコードが不必要に実行されないようにするためです。私は、wordpress is_page()関数を使用するなど、複数のメソッドを試してきました。私はフィルタをthe_content()に追加してから、ajaxを実行するアクションを追加しようとしました(これは良いコーディングのようには感じられませんでしたが)。これのどれも働かなかった。

私はおそらく、ajax呼び出しのために実行しているコードはmysqlデータベースにクエリを行い、データを返し、ドロップダウンメニューのオプションに追加します(これは毎回実行しないでください)。 。。ここ

add_action('wp_enqueue_scripts', 'ajax_test_enqueue_scripts'); 

function ajax_test_enqueue_scripts() { 

    wp_enqueue_script('orgs', plugins_url('/love.js', __FILE__), array('jquery'), '1.0', true); 
    wp_enqueue_script('love', plugins_url('/chosen.jquery.min.js', __FILE__), array('jquery')); 

    wp_localize_script('love', 'postlove', 
     array(
     'ajax_url' => admin_url('admin-ajax.php'), 
     ) 
    ); 

} 


function post_love_add_love() { 
    global $wpdb; 

    $query = "SELECT id,name FROM wp_qp_orgs"; 
    $results = $wpdb->get_results($query,ARRAY_A); 

    $optionsString = '<option></option>'; 
    foreach($results as $k => $v){ 
     $optionsString .= '<option value="' . $v['id'] . '">' . $v['name'] . '</option>'; 
    } 

    //https://stackoverflow.com/questions/14348470/is-ajax-in-wordpress 
    if (defined('DOING_AJAX') && DOING_AJAX) { 
     echo $optionsString; 
     die(); 
    } 
} 

function qp_tester(){ 
    if(is_page()){ 
     echo do_shortcode('[formidable id=36]'); 
    } 
} 

add_filter('the_content','qp_tester'); 

add_action('wp_ajax_nopriv_post_love_add_love', 'post_love_add_love'); 
add_action('wp_ajax_post_love_add_love', 'post_love_add_love'); 

とjQueryされています:

jQuery(document).ready(function() { 

     jQuery.ajax({ 
      url : postlove.ajax_url, 
      type : 'post', 
      data : { 
       action : 'post_love_add_love', 
      }, 
      beforeSend: function() { 
       jQuery('#qpForm').delay(700).show(100); 
      }, 
      success : function(response) { 
       //to see the immediate response from ajax - uncomment below 
       alert(response); 
       jQuery('#field_iv2eu').html(response); 
       jQuery('#field_iv2eu').chosen({ 
        disable_search_threshold: 5, 
        no_results_text: "No results using", 
        placeholder_text_multiple: "Choose your organization", 
        search_contains: true, 
        max_shown_results: 8 

       }); 
      } 
     }); 

}); 

どれ提案は本当にいただければ幸い無条件に実行すると、条件付きページを追加しようとすると、それが動作しない素晴らしい作品以下のコードです!

+0

あなたのコードはどこですか? –

+0

http://stackoverflow.com/questions/22070223/how-can-i-use-is-page-inside-a-plugin – vel

答えて

0

試してみてください:

add_action('template_redirect', 'qp_tester'); 

function qp_tester() { 
    if(is_page()){ 
     echo do_shortcode('[formidable id=36]'); 
    } 
} 
+0

フォームに入れるフィルターは、私が達成しようとしているものではありませんフォームでは、オプションをajax呼び出しから取り込む必要があります。問題は、post_love_add_love関数です。条件付き(例:is_pageなど)でNOTを使用すると効果的ですが、条件に関数やアクションを追加しようとすると、Ajaxは機能しません。 – user791187

+0

プラグインでIs_pageが機能しません。 – vel

+0

は可能ですajax呼び出しからページIDを渡しますか? – vel