web-dev-qa-db-ja.com

javaScriptでショートコードを呼び出す

私はDOMがロードされた後にjqueryを通してショートコードを表示したいです。

これが私がショートコードを呼び出す方法です:<?php echo do_shortcode('[plugin]'); ?>

私のウェブサイトはjquery/ajax呼び出しに基づいているので、今、私の質問はどうやってjquery関数の中でそのショートコードを呼び出すことができるのですか?ありがとうございます。

1
agis

Javascriptコードは、あなたのサーバー(あなたのワードプレスのコンテンツがある場所)ではなく、ユーザーのブラウザで実行されています。あなたはショートコードが指している関数を呼び出すためにajaxを使うことができます。

WordpressでAJAX呼び出しを処理する方法は次のとおりです。

1)私はjQueryのAjax関数を使用してwp-admin/ajax.phpを呼び出します。

jQuery.ajax({
    url: yourSiteUrl + "/wp-admin/admin-ajax.php",
    dataType: 'json',
    data: {
       'action':'your_ajax',
       'fn':'run_shortcode_function',
       'some_needed_value': jQuery('#input_for_needed_value').val()
       },
    success: function(results){
        //do something with the results of the shortcode to the DOM
    },
    error: function(errorThrown){console.log(errorThrown);}
});// end of ajax

2)このPHPコードはあなたのテーマのfunctions.phpファイルかカスタムプラグインにあります:

//this is wordpress ajax that can work in front-end and admin areas
add_action('wp_ajax_nopriv_your_ajax', 'your_ajax_function');
add_action('wp_ajax_your_ajax', 'your_ajax_function');
function your_ajax_function(){
     // the first part is a SWTICHBOARD that fires specific functions according to the value of Query Variable 'fn'

     switch($_REQUEST['fn']){
        case 'run_shortcode_function':
           $output = your_ajax_shortcode_function($_REQUEST['some_needed_value']);
           break;
        case 'some_other_function_you_want_to_perform':   
           $output = some_other_function($_REQUEST['first_name'],$_REQUEST['last_name']);
            break;
        default:
          $output = 'No function specified.';
        break;

     }

   // at this point, $output contains some sort of data that you want back
   // Now, convert $output to JSON and echo it to the browser
   // That way, we can recapture it with jQuery and run our success function

          $output=json_encode($output);
         if(is_array($output)){
        print_r($output);
         }
         else{
        echo $output;
         }
         die;

}
your_ajax_shortcode_function($some_needed_value){
     return the_specific_function_that_the_shortcode_was_pointing_to($some_needed_value);
}   

これが正しい方向に向いていることを願っています。

3
Douglas.Sesar