2016-11-20 173 views
0

我試圖讓jquery-ui與wordpress一起工作,沒有運氣。有人能指引我朝着正確的方向嗎?我已經挖出了大量的SO資源和博客解釋它,但到目前爲止不能得到這個工作。但是,當我將腳本直接包含在頁面中時,我可以使日期選擇器正常工作。我試圖讓表格行可拖動(並最終可放下)。在Wordpress中包含jQuery UI

這是我目前有─

在/themes/twentysixteen/functions.php

我跟着步驟這裏排隊的jQuery UI的功能Correctly enqueue jquery-ui。然後,我增加了幾個我自己的腳本的基礎上這裏的信息Add jquery scripts

/* Used to include jquery-ui scripts 
 
* Taken from http://xl-websites.com/how-to-enqueue-jquery-or-jquery-ui-correctly-in-wordpress/ 
 
* 
 
*/ 
 

 
function add_jquery_ui() { 
 
     wp_enqueue_script('jquery-ui-core'); 
 
     wp_enqueue_script('jquery-ui-widget'); 
 
     wp_enqueue_script('jquery-ui-mouse'); 
 
     wp_enqueue_script('jquery-ui-accordion'); 
 
     wp_enqueue_script('jquery-ui-autocomplete'); 
 
     wp_enqueue_script('jquery-ui-slider'); 
 
     wp_enqueue_script('jquery-ui-tabs'); 
 
     wp_enqueue_script('jquery-ui-sortable'); 
 
     wp_enqueue_script('jquery-ui-draggable'); 
 
     wp_enqueue_script('jquery-ui-droppable'); 
 
     wp_enqueue_script('jquery-ui-datepicker'); 
 
     wp_enqueue_script('jquery-ui-resize'); 
 
     wp_enqueue_script('jquery-ui-dialog'); 
 
     wp_enqueue_script('jquery-ui-button'); 
 
} 
 
add_action('wp_enqueue_scripts', 'add_jquery_ui'); 
 

 
function custom_js() { 
 
     wp_enqueue_script('date', get_template_directory_uri() . '/js/date.js', array('jquery'), false, true); 
 
     wp_enqueue_script('drag', get_template_directory_uri() . '/js/drag.js', array('jquery'), false, true); 
 
} 
 
add_action('wp_enqueue_scripts', 'custom_js');

有了這些addded,我創造了我的JS腳本資料夾,

/JS /阻力。 JS

(function() { 
 
     $(".drag").draggable({ 
 
       helper: function(event) { 
 
         return $('<div class="drag-row"><table></table></div>').find('table').append($(event.target).closest('tr').clone()).end(); 
 
       }, 
 
     }); 
 
});

而且/js/date.js

(function() { 
 
     $("#datepicker").datepicker(); 
 
});

在我的PHP頁面我添加了日期ID到日曆,和類ID錶行作爲目標了jQuery腳本。

<p>Date: <input type="text" id="datepicker"></p> 
 

 
     echo "<div id='table'>"; 
 
     echo "<table class='listing'>"; 
 
       echo "<thead>"; 
 
         echo "<tr>"; 
 
           echo "<th><b>Course Name</b></th>"; 
 
           echo "<th><b>Fiscal Year</b></th>"; 
 
           echo "<th><b>Course Number</b></th>"; 
 
           echo "<th><b>Start Date</b></th>"; 
 
           echo "<th><b>End Date</b></th>"; 
 
         echo "</tr>"; 
 
       echo "</thead>"; 
 
       echo "<tbody>"; 
 
         foreach($courses as $course){ 
 
           echo "<tr class='drag'>"; 
 
             echo "<td>".$course->course_name."</td>"; 
 
             echo "<td>".$course->fy."</td>"; 
 
             echo "<td>".$course->course_number."</td>"; 
 

 
             $date = $course->course_date_start; 
 
             $date = strtotime($date); 
 

 
             if ($date){ 
 
               echo "<td>".date("m/d/Y", $date)."</td>"; 
 
             } else { 
 
               echo "<td></td>"; 
 
             } 
 

 
             $date = $course->course_date_end; 
 
             $date = strtotime($date); 
 

 
             if ($date){ 
 
               echo "<td>".date("m/d/Y", $date)."</td>"; 
 
             } else { 
 
               echo "<td></td>";            } 
 
             echo "</tr>"; 
 
         } 
 
       echo "</tbody>"; 
 
     echo "</table>";

當我的頁面加載時,腳本都在那裏(包括jQuery的,我把空格,因爲jQuery的線處於線350,和jQuery的UI線是線500) ,但是UI不起作用。任何人有任何見解?

<script type='text/javascript' src='##/wp-includes/js/jquery/jquery.js?ver=1.12.4'></script> 
 
<script type='text/javascript' src='##/wp-includes/js/jquery/jquery-migrate.min.js?ver=1.4.1'></script> 
 

 

 

 

 
<script type='text/javascript' src='##/wp-content/themes/twentysixteen/js/functions.js?ver=20160816'></script> 
 
<script type='text/javascript' src='##/wp-includes/js/jquery/ui/core.min.js?ver=1.11.4'></script> 
 
<script type='text/javascript' src='##/wp-includes/js/jquery/ui/widget.min.js?ver=1.11.4'></script> 
 
<script type='text/javascript' src='##/wp-includes/js/jquery/ui/mouse.min.js?ver=1.11.4'></script> 
 
<script type='text/javascript' src='##/wp-includes/js/jquery/ui/accordion.min.js?ver=1.11.4'></script> 
 
<script type='text/javascript' src='##/wp-includes/js/jquery/ui/position.min.js?ver=1.11.4'></script> 
 
<script type='text/javascript' src='##/wp-includes/js/jquery/ui/menu.min.js?ver=1.11.4'></script> 
 
<script type='text/javascript' src='##/wp-includes/js/wp-a11y.min.js?ver=4.6.1'></script> 
 
<script type='text/javascript'> 
 
/* <![CDATA[ */ 
 
var uiAutocompleteL10n = {"noResults":"No search results.","oneResult":"1 result found. Use up and down arrow keys to navigate.","manyResults":"%d results found. Use up and down arrow keys to navigate."}; 
 
/* ]]> */ 
 
</script> 
 
<script type='text/javascript' src='##/wp-includes/js/jquery/ui/autocomplete.min.js?ver=1.11.4'></script> 
 
<script type='text/javascript' src='##/wp-includes/js/jquery/ui/slider.min.js?ver=1.11.4'></script> 
 
<script type='text/javascript' src='##/wp-includes/js/jquery/ui/tabs.min.js?ver=1.11.4'></script> 
 
<script type='text/javascript' src='##/wp-includes/js/jquery/ui/sortable.min.js?ver=1.11.4'></script> 
 
<script type='text/javascript' src='##/wp-includes/js/jquery/ui/draggable.min.js?ver=1.11.4'></script> 
 
<script type='text/javascript' src='##/wp-includes/js/jquery/ui/droppable.min.js?ver=1.11.4'></script> 
 
<script type='text/javascript' src='##/wp-includes/js/jquery/ui/datepicker.min.js?ver=1.11.4'></script> 
 
<script type='text/javascript'> 
 
jQuery(document).ready(function(jQuery){jQuery.datepicker.setDefaults({"closeText":"Close","currentText":"Today","monthNames":["January","February","March","April","May","June","July","August","September","October","November","December"],"monthNamesShort":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"nextText":"Next","prevText":"Previous","dayNames":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"dayNamesShort":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dayNamesMin":["S","M","T","W","T","F","S"],"dateFormat":"MM d, yy","firstDay":1,"isRTL":false});}); 
 
</script> 
 
<script type='text/javascript' src='##/wp-includes/js/jquery/ui/resizable.min.js?ver=1.11.4'></script> 
 
<script type='text/javascript' src='##/wp-includes/js/jquery/ui/button.min.js?ver=1.11.4'></script> 
 
<script type='text/javascript' src='##/wp-includes/js/jquery/ui/dialog.min.js?ver=1.11.4'></script> 
 
<script type='text/javascript' src='##/wp-content/themes/twentysixteen/js/date.js?ver=4.6.1'></script> 
 
<script type='text/javascript' src='##/wp-content/themes/twentysixteen/js/drag.js?ver=4.6.1'></script> 
 
<script type='text/javascript' src='##/wp-includes/js/wp-embed.min.js?ver=4.6.1'></script>

+0

網址前面的## /'是什麼,只是跳過域名或...? – bodi0

+0

jquery draggable包含在WordPress的管理不包含在前端。 – vel

+0

是的,我把域名清理出來並用# –

回答

0

你可以告訴wp_enqueue_script()功能腳本依賴於jQuery的,所以他們會以正確的方式和順序插入,發現第三個參數,例如:

wp_enqueue_script('jquery-ui-core', false, array('jquery')); 

閱讀全文here

另請注意,jQuery UI Effects不包含在jquery-ui-core句柄中。

+0

取代它我的理解是jQuery的依賴關係是由ui腳本處理的,因爲ui帶有單詞按下功能。是我從不正確的jquery-ui包含的例子嗎?我指定jquery是我的自定義腳本的依賴項 –

+0

指定相反:您的腳本依賴於jQuery。 – bodi0

+0

我指定在functions.js中的custom_js函數中:wp_enqueue_script('date',get_template_directory_uri()。'/ js /date.js',array('jquery'),false,true); –