【问题标题】:Calling a PHP script from jQuery in Wordpress在 Wordpress 中从 jQuery 调用 PHP 脚本
【发布时间】:2016-05-13 13:39:44
【问题描述】:

我无法理解如何在 Wordpress 中使用 jQuery 调用 php 文件。

我正在尝试在 Wordpress 中创建文件上传器。

我想在下面的函数中调用名为uploadifive.php 和check-exists.php 的php 文件。

控制台错误是 404 并且未访问文件,我还注意到 jquery 将 wordpress 永久链接附加到导致 404 的 url 中。

如何在不自动附加永久链接到.php文件路径的情况下调用php文件?

 jQuery.noConflict();

  $('#file_upload').uploadifive
      ({
          'auto'             : false,
          'buttonText'       : 'Browse',
          'fileSizeLimit'    : '1024 MB' ,
          'multi'            : false,
          'queueSizeLimit'   : 1,
          'checkScript'      : 'check-exists.php',                
          'queueID'          : 'queue',
          'fileType'     [ 'video/3gpp'],
          'uploadScript'     : 'uploadifive.php',
          'onUploadComplete' : function(file, data) {window.location =    'upload_to_youtube/processing.php?' + data;}

         });
       });   

【问题讨论】:

  • 您需要了解 1) AJAX、2) Wordpress AJAX API 和 3) jQuery AJAX API。然后只需将其连接在一起即可。
  • wp中有几个地方可以直接调用.php。可以把.php文件放在wordpress根目录下,也可以把*.php文件放在可以访问的主题目录下。

标签: php jquery wordpress


【解决方案1】:

1) 第一种方法是使用 Ajax 调用您的 processing.php 文件

$('#file_upload').uploadifive
  ({
          'auto'             : false,
          'buttonText'       : 'Browse',
          'fileSizeLimit'    : '1024 MB' ,
          'multi'            : false,
          'queueSizeLimit'   : 1,
          'checkScript'      : 'check-exists.php',                
          'queueID'          : 'queue',
          'fileType'     [ 'video/3gpp'],
          'uploadScript'     : 'uploadifive.php',
          'onUploadComplete' : function(file, data) {//window.location =    'upload_to_youtube/processing.php?' + data;
              jQuery.ajax({
                url:PUTFILEURL,
                data:data,
                type:'POST',
                success:function(data){

                }
            });


          }

  });

2) 用于 WordPress Ajax API https://codex.wordpress.org/Plugin_API/Action_Reference/wp_ajax_(action)

jquery 代码

 var ajaxurl="/wp-admin/admin-ajax.php";
   $('#file_upload').uploadifive
  ({
          'auto'             : false,
          'buttonText'       : 'Browse',
          'fileSizeLimit'    : '1024 MB' ,
          'multi'            : false,
          'queueSizeLimit'   : 1,
          'checkScript'      : 'check-exists.php',                
          'queueID'          : 'queue',
          'fileType'     [ 'video/3gpp'],
          'uploadScript'     : 'uploadifive.php',
          'onUploadComplete' : function(file, data) {//window.location =    'upload_to_youtube/processing.php?' + data;
              jQuery.ajax({
                url:ajaxurl,
                data:data+'&action=upload_to_youtube',
                type:'POST',
                success:function(data){

                }
            });


          }

  });

php上传代码将此代码放在function.php文件中

add_action('wp_ajax_upload_to_youtubee', 'upload_to_youtube_callback');//login user
  add_action('wp_ajax_nopriv_upload_to_youtube', 'upload_to_youtube_callback');//for not login user

    function upload_to_youtube_callback()
    {
        //put your upload code
    die;
    }

【讨论】:

    【解决方案2】:

    简单的方法..但不推荐...

    找到您的主题目录。

    /wp-content/themes/your-theme/

    在主题目录中放置你的 php 文件。示例:test.php .. 在您的 ajax 中将 url 设置为类似这样的内容..

    $.ajax({
       url: '/wp-content/themes/your-theme/test.php'
    });
    

    然后在 test.php 中将这些行放在上面。

    define('WP_USE_THEMES', false);
    require_once('../../../wp-load.php');
    

    所以即使不调用主题,您仍然可以使用 wordpress 功能..

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-12
      • 1970-01-01
      • 2011-01-21
      • 2019-05-22
      • 1970-01-01
      相关资源
      最近更新 更多