如何在自定义Wordpress插件中创建javascript函数

时间:2016-01-24 19:43:23

标签: jquery wordpress

我已经使用wp_list_table为候选列表创建了一个自定义插件。现在,我必须在弹出窗口中显示所有字段信息,点击href。以下是步骤,我包括JavaScript,但它不起作用。

  1. 在我的插件文件中,我将js文件包含为:

    include WP_CONTENT_DIR."/plugins/candidate_cv_listing/includes.php";
    

    像这样调用我的js函数:

    <a href="#"  onclick ="show_details('.$item['id'].');" >Click here </a>'
    
  2. 在我编写的代码之后的includes.php中
  3.      if( $hook != 'candidate_cv_listing.php' ) 
        return;
       // core
         wp_enqueue_script('jquery');
       //echo '<script type="text/javascript"     src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js">   </script>';
    // registering my js file
    wp_register_script('can_list',plugin_dir_url( __FILE__ ).'cand.js');
    wp_enqueue_script('can_list',plugin_dir_url( __FILE__ ).'cand.js');
    }
    add_action('admin_enqueue_scripts', 'candidates_gen_js');
    ?>
    
  4. 现在在cand.js文件中我正在将我的js代码写为::

    function show_details(id){
      //alert(id);
      datastring = 'id='+id;
      $.ajax({
        url: "<?php echo plugins_url();?>/candidate_cv_listing/list_detail.php", 
        type: "POST",
        data: datastring,
        success: function(result){
          $.fancybox(result);
        }
      });
    }
    
  5. 请让我知道将js包含在插件中的正确方法,因为我的插件将在admin-end中使用,我该如何调用我的函数。现在它给了我:

    ReferenceError: show_details is not defined
    

1 个答案:

答案 0 :(得分:0)

在wordpress中,wp_enqueue_script用于将脚本输出到页面。如果您需要注册脚本,则可以使用wp_register_script,以便可以在任何需要使用它的地方使用它(在任何页面上)。

如果您需要在其他地方使用该脚本,而不是首先注册,而不是在您需要的任何地方将其排队。

如果您首先注册脚本,那么当您使用wp_register_script注册脚本时,您需要做的就是调用您给出的第一个参数,并在wp_enqueue_script部分中使用它。

示例:

// Register script, dependant on jQuery
wp_register_script('can_list',plugin_dir_url( __FILE__ ).'cand.js', array('jquery'));
// Enqueue the Script for output onto page:
wp_enqueue_script('can_list');

您可以在其他任何需要加载的位置使用wp_enqueue_script('can_list');

如果您只需要在该位置输出该脚本,请执行以下操作:

// Script output on page, loading jQuery first.
wp_enqueue_script('can_list',plugin_dir_url( __FILE__ ).'cand.js', array('jquery'));

如果您需要任何进一步的信息,请与我们联系。

你会将这些放在一个可以在任一钩子上调用的函数中: admin_enqueue_scripts(如果管理部分需要)和/或wp_enqueue_scripts(如果需要在前端部分)。

老实说,我认为您的问题与onclick的{​​{1}}处理程序的html和PHP的回声更相关。

要输出PHP,请使用$item['id']print。我更喜欢亲自使用echo,因为我觉得它对网站的性能更好。当然,还有数以百万计的其他方法可以输出html等等,但这些方法最常用于你的情况。

例如:

echo

应该是这样的:

<a href="#" onclick ="show_details('.$item['id'].');" >Click here </a>'

或者

<?php echo '<a href="#" onclick="show_details('.$item['id'].');">Click here</a>'; ?>