2

ajaxを使用してWordPressプラグインでファイルを呼び出すのに少し問題があります。次のスクリプトがあります。

<script type="text/javascript">
function setVal()
{
    var val = jQuery('#custom_text_message').val()
    alert('Setting the value to "' + val + '"')
    jQuery.post('session.php', {value: val})
    alert('Finished setting the value')
}
jQuery(document).ready(function() {
    jQuery('#custom_text_message').blur(function() {setVal()});
//setTimeout('setVal()', 3000);
});
</script>

ただし、この関数を呼び出すと、コンソールファイルにエラーが表示されます。これがWordPressでajaxを使用する正しい方法であるかどうかを知りたいです。そうでない場合、サイト名session.phpのルートフォルダーにあるファイルを呼び出すにはどうすればよいですか?私はWordPressにかなり慣れていません。

4

4 に答える 4

1

WordPressでは、Ajaxリクエストはhttp://your-wordpress-site/wp-admin/admin-ajax.php-を使用して取得できます-に対して行う必要があり、パラメーターをadmin_url( 'admin-ajax.php' )使用actionして呼び出す関数を指定する必要があります。ローカリゼーションadmin-ajaxを介してjavascriptファイルへのパスを渡すことができます。

スクリプトをエンキューした後、プラグインのPHPファイルに追加します。

 wp_localize_script( 'your-script', 'js_obj', array('ajax_url' => admin_url( 'admin-ajax.php' ) );

あなたのJavaScriptで:

jQuery.post(js_obj.ajax_url, {value: val, action: 'run-my-ajax'})

プラグインPHPファイルでajaxを処理する関数:

function call_my_ajax(){
  // do stuff
  exit;
}

add_action('wp_ajax_run-my-ajax', 'call_my_ajax');
add_action('wp_ajax_nopriv_run-my-ajax', 'call_my_ajax');

続きを読む:https ://codex.wordpress.org/AJAX_in_Plugins

于 2013-02-18T09:36:04.040 に答える
1

function.php私は自分で問題を解決しました。最初に、以下のようにテーマにajaxurlを定義しました。

<?php
add_action('wp_head','pluginname_ajaxurl');
function pluginname_ajaxurl() {
?>
<script type="text/javascript">
var ajaxurl = '<?php echo admin_url('admin-ajax.php'); ?>';
</script>
<? }
?>

そして、プラグインファイルの先頭に以下のスクリプトを配置します。

<script type="text/javascript">
function setVal()
{
    var val = jQuery('#custom_text_message').val()
    var data = {
        action: 'my_action',
        value: val,
    };

    jQuery.post(ajaxurl, data, function(response) {
       alert('Got this from the server: ' + response);
    });
}

jQuery(document).ready(function() {
    jQuery('#custom_text_message').blur(function() {setVal()});
    //setTimeout('setVal()', 3000);
});
</script>

これが私のプラグインでやろうとしているフィールドです。

<textarea name="custom_text_message"  id="custom_text_message"></textarea>

次に、スクリプトを呼び出すアクションをに入れますfunction.php

add_action('wp_ajax_my_action', 'my_action_session');

function my_action_session() {
    global $wpdb; // this is how you get access to the database

    session_start();

    $_SESSION['cus_msg'] = $_POST['value'];

    die(); // this is required to return a proper result
} 

次に、セッション値を関数に呼び出します。これが私が行うすべてのことであり、私のために働いています。これが他の誰かに役立つことを願っています。

注:wp_ajax_your_actionアクションは、フロントエンドで使用する必要がある場合の管理者向けであり、アクションはになり ますwp_ajax_nopriv_your_action

于 2013-02-20T06:49:20.783 に答える
0
<script type="text/javascript">
function setVal()
{
    jQuery.ajax({url:"<?php bloginfo('url');?>/wp-content/plugins/plugin_folder_name/session.php",success:function(result){alert(result);}}
}
</script>  
于 2013-02-18T08:38:42.053 に答える
0

WordPressは絶対パスで動作し、相対URLの代わりに完全なURLを使用します。

jQuery.post('session.php', {value: val})

次のようなものを使用します:

jQuery.post('<?php bloginfo('url');?>/wp-content/plugins/plugin_folder_name/session.php', {value: val})
于 2013-02-20T07:05:53.150 に答える