2017-08-31 63 views
0

我想建立一個WordPress插件,將從鼠標懸停事件的表中獲取與帖子相關的數據,並將其附加到另一個div。我設法寫了一個零代碼,不理解js和PHP。難以排隊在wordpress插件腳本

我安裝並激活了插件,但js沒有加載到頁面上。我沒有正確排列腳本嗎?我也想實現以下目標:腳本只能在桌面上加載,因此不適用於移動設備。

任何幫助或指針在正確的方向將是偉大的!

我的PHP代碼

<?php 

/* PLUGIN INFO */ 

function sknv_ea_return(){ 

$ea_id = isset($_POST['post_id']) ? $_POST['post_id'] : 0; 

if ($ea_id > 0) 
{ 
    $ea_post = get_post($ea_id); 
    ?> 
    <div id="ea_post"><?php echo $ea_post->post_content; ?></div> 
<?php 
} 
die(); 
} 
add_action('wp_ajax_nopriv_sknv_ea','sknv_ea_return'); 

function sknv_ea_get_scripts() 
{ 
wp_enqueue_script(plugins_url('sknv_ea.js', __FILE__)); 
} 
add_action('wp_enqueue_scripts', 'sknv_ea_get_scripts'); 

?> 

和我的JS代碼

jQuery(document).ready(function ($) { 
$("tr.emcustom").onmouseover(function() { 
var div = $(this); 

$.post('wp-admin/amdin-ajax.php' , { 
    action: "sknv_ea", 
    event_id: $(this).find("a").attr("id") 
}, function (data) { 
    $("#agenda_title").append($(data)); 
} 
    ); 
return false; 
}); 

$("tr.emcustom").mouseout(function() { 
    $("ea_post").remove(); 
}); 
}); 

回答

0

入列腳本

的問題是,你沒有正確使用wp_enqueue_script,但也有一個還有幾件事要檢查:

  1. 第一個參數爲wp_enqueue_script是你的腳本處理,該源文件時實際上是第二個參數
  2. 你的js文件需要jQuery的,所以你應該指定一個作爲一個依賴,以確保它得到的jQuery
  3. 後裝
  4. 確保您的.js文件是在你的插件根文件夾,而不是在一個子文件夾

更新您的sknv_ea_get_scripts功能如下:

function sknv_ea_get_scripts(){ 
    wp_enqueue_script("sknv_ea", plugins_url('sknv_ea.js', __FILE__), array('jquery')); 
} 

注:

  1. 「sknv_ea」是你的腳本手柄 - 你可以調用這個任何你想要的,只要它的獨特,從而不與任何其他手柄
  2. 第三個參數array('jquery')是一個發生衝突數組,其中包含腳本所依賴的所有腳本的句柄,並且必須在您的腳本之前加載。在這種情況下,我只包含了jQuery,但如果您有任何其他依賴關係,則應將其包含在數組中。另請注意,jQuery的默認句柄是jquery,但是如果您正在加載自己的版本,請確保相應地更改句柄。

只能在電腦上加載

的Wordpress提供了一個功能wp_is_mobile()Codex Reference)表示,檢測是否訪問者是在移動設備上,所以你可以換您的來電wp_enqueue_script它,例如

function sknv_ea_get_scripts(){ 
    if (!wp_is_mobile()) 
     wp_enqueue_script("sknv_ea", plugins_url('sknv_ea.js', __FILE__), array('jquery')); 
} 

但是請注意,它可能不是很可靠的,因爲它的工作原理是檢測瀏覽器的用戶代理字符串。另一個潛在問題是它將平板電腦視爲移動設備。也有插件可用,如mobble,但我從來沒有用過,所以我不能推薦任何。

+0

這工作!我認爲代碼有問題。謝謝分配!我的dekstop-mobile問題上的任何指針可能? – Sam

+0

@Sam我更新了我的答案。 – FluffyKitten