PHP in Javascript using Wordpress


PHP in Javascript using Wordpress

我找到了一些关于在JS中使用PHP的文章,但到目前为止没有任何帮助,所以这里是我的问题。我需要调用wordpress帖子内容(标题,摘录和缩略图)到一个JS"预览"功能(本质上调用ThumbnailGridExpandingPreview的帖子)。我已经能够从帖子缩略图和标题中打开"扩展预览",但是我在将帖子内容添加到预览中遇到了麻烦。

我试图将php调用添加到"grid.js"文件中的预览函数,但我不确定如何"最小化"php代码。下面是我的代码。

原始代码:

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

这里是我如何尝试调用帖子标题:

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

任何帮助将非常感激!

说明:PHP是一种服务器端语言;这意味着它只能在服务器端进行解析和执行。也就是说,你在这里有两个选择,一个更优雅,另一个有点蹩脚(我只会在非常罕见和有限的情况下使用它):

  1. 优雅的解决方案:Wordpress Ajax。在functions.php文件中设置一个ajax可调用的函数,该函数返回填充数据的html:

    。在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。指定要调用的函数(如果需要,请为未登录的用户指定第二个函数)

    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)。

    这是一个很好的教程(发现它在谷歌的第一页):http://wp.smashingmagazine.com/2011/10/18/how-to-use-ajax-in-wordpress/

  2. 蹩脚的解决方案:生成数据填充的JS代码(我会坚持JS对象)。在这种情况下,您将需要在页面(模板或其他任何可以访问PHP的内容)中添加一个额外的脚本标记,以便在其中输出JS有效代码:

    var title = "<?php the_title(); ?>";