0

wordpress サイトにカスタム jquery ファイルがあり、変数に割り当てられた bloginfo('template_directory') を使用して、毎回完全な URL を入力するのではなく、ajax URL パスで使用しようとしています (特にこれは現時点ではテスト サイトで開発中のため、実際のドメインのライブ サイトに移動するときにすべてが機能することを確認する必要があります)。

私が現時点で持っているもの:

$(document).ready(function(){
    var templateDir = "<?php bloginfo('template_directory') ?>";

    // Login
    $('.login-form').on('submit', function(e){
        e.preventDefault();
        dataString = $(this).serialize() + '&ajax=1';
        $.ajax ({
            type: "POST",
            url: templateDir + "/inc/do-login.php",
            data: dataString,
            cache: false,
            success: function(data)
            {.
.
.
            }
        });
    });

そして、コンソールエラーで得られるのは(サイトのURLが...に置き換えられた)です:

POST http://www......./...../%3C?php%20get_bloginfo('template_directory')%20?%3E/inc/do-login.php  404 (Not Found)

誰でもこれに光を当てることができますか?

4

2 に答える 2

1

テンプレートディレクトリを変数に保存するJavascriptスニペットを作成する必要があり、後でその変数を使用して使用できます

<script type="text/javascript">
    var templateDir = "<?php bloginfo('template_directory') ?>";
</script>
于 2013-06-22T06:30:51.160 に答える
1

templateDir変数を JavaScript ファイルから移動する必要があります。その理由は、php が解釈されないためです。これは、templateDir変数が文字通り等しいことを意味します"<?php bloginfo('template_directory') ?>";

幸いなことに、他のスクリプトから、または html で直接 javascript 変数を使用することができます。

これが1つの解決策です。

これはスクリプトに似ていますが、いくつかの変更があります。注意して読みなさい。

$(document).ready(function(){

    // Login
    $('.login-form').on('submit', function(e){
        e.preventDefault();
        dataString = $(this).serialize() + '&ajax=1';
        $.ajax ({
            type: "POST",
            url: custom.templateDir + "/inc/do-login.php",
            data: dataString,
            cache: false,
            success: function(data)
            {

            }
        });
    });

これで、functions.phpこのトリックを使用して、スクリプトからアクセスできる JavaScript 変数を追加できます。

function custom_init_js()
{
    wp_enqueue_script('jquery');
    wp_localize_script('jquery', 'custom', array(
        'templateDir' => get_bloginfo('template_url')));
}
add_action('get_header', 'custom_init_js');

これにより、次の JavaScript スニペットが HTML ページに追加されます。

<script type='text/javascript'>
/* <![CDATA[ */
var custom = {"templateDir":"https://www.website.org/wp-content/themes/yourTheme/"};
/* ]]> */

custom.templateDirこれで、スクリプトでを使用してテンプレート ディレクトリを評価できます。カスタム オブジェクトはwp_localize_script関数から取得されます。これには任意の名前を付けることができます。

さらに、あなたが望むものであるURLではなくファイルパスを取得するためget_bloginfo('template_url')、を使用したいと考えています。template_dir

このアプローチを使用する場合、wp_localize_scriptは、指定したスクリプトを でロードした場合にのみ呼び出されますwp_enqueue_script。この場合、 を使用しjqueryました。

wp_localize_script主に国際化に使用されますが、他のデータにも使用できます。

コーデックスのページは次のとおりです: http://codex.wordpress.org/Function_Reference/wp_localize_script

于 2013-06-22T07:24:13.840 に答える