1

JS での PHP の使用に関する記事をいくつか見つけましたが、これまでのところ何も役に立たなかったので、ここに私の質問があります。wordpress の投稿コンテンツ (タイトル、抜粋、サムネイル) を JS の「プレビュー」機能 (基本的にThumbnailGridExpandingPreviewで投稿を呼び出す) に呼び出す必要があります。投稿のサムネイルとタイトルから「拡大プレビュー」を開くことはできましたが、投稿コンテンツをプレビューに追加するのに問題があります。

「grid.js」ファイルのプレビュー機能にphp呼び出しを追加しようとしていますが、phpコードを「縮小」する方法が正確にはわかりません。私のコードについては以下を参照してください。

元のコードは次のとおりです。

this.$title = $( '<h3></h3>' );

そして、これが私が投稿タイトルを呼び出そうとする方法です:

this.$title = $( '<h3><?php echo get_the_title(); ?></h3>' );

どんな助けでも大歓迎です!前もって感謝します。

4

1 に答える 1

4

明確化: PHP はサーバー側の言語です。これは、サーバー側でのみ解析および実行できることを意味します。とは言っても、ここには 2 つのオプションがあります。1 つはよりエレガントで、もう 1 つは少しくだらないものです (私は本当にまれで限られた場合にのみ使用します)。

  1. 洗練されたソリューション: Wordpress Ajax。functions.php ファイルで ajax 呼び出し可能な関数をセットアップし、データが取り込まれた html を返します。

    a. functions.php ファイルに ajax 呼び出し可能なアクションを追加します。

    add_action("wp_ajax_[function_name]", "function_name");
    //If the action wants users to be logged in, you can specify a different function to be called in case a user is not:
    //add_action("wp_ajax_nopriv_[function_name]", "[function_name_for_non_logged_users]");
    

    b. 呼び出す関数を指定します (必要に応じて、ログインしていないユーザー用に 2 つ目の関数を指定します)。

    function function_name() {
      //It is good practice to use nonce verification
      if (!wp_verify_nonce( $_REQUEST['nonce'], "function_name_nonce")) {
        exit("[Your scary message against bad people]");
      }
    
      // Make your query here.
      $post_id = $_REQUEST["post_id"];
      $post = get_post($id, ARRAY_A);
    
      // Return your data. Here I go with a simple JSON.
      $result = json_encode($result);
      echo $result;
    }
    

    c. テンプレートのどこかでフロントエンド コードをクックします (もちろん、grid.js 呼び出しで使用できるようにします)。$post に投稿データを入力する必要があります。私はグローバルラッパーを使用する傾向があります:

    <script type="text/javascript">
        <?php 
        $nonce = wp_create_nonce('function_name_nonce');
        $endpoint = admin_url('admin-ajax.php');
        ?>
        var Globals = {
          nonce: "<?php echo $nonce; ?>", 
          postId: "<?php echo $post->ID; ?>", 
          endpoint: "<?php echo $endpoint; ?>"
        }
    </script>
    

    d. これからは、ajax 呼び出しを行うのはあなた次第ですが (あなたのコードへの参照はありません)、非常に簡単です。

    $.ajax({
      type: "post",
      dataType: "json",
      url: Globals.endpoint,
      data: {
        action: "function_name", 
        post_id: Globals.postId, 
        nonce: Globals.nonce
      },
      success: function(response) {
        //Aaaaand here's your post data
        console.log(response);
      }
    });
    

    これについては、 http://codex.wordpress.org/Plugin_API/Action_Reference/wp_ajax_(action)を参照してください。

    これは良いチュートリアルです (Google の最初のページにあります): http://wp.smashingmagazine.com/2011/10/18/how-to-use-ajax-in-wordpress/

  2. くだらない解決策:データが取り込まれたJSコードを生成しました(私はJSオブジェクトに固執します)。この場合、JS の有効なコードを出力するページ (テンプレートまたはその他 PHP にアクセスできるもの) 内に追加の script タグが必要になります。

    var title = "<?php the_title(); ?>";
    
于 2013-06-03T21:40:58.173 に答える