Wordpress插件需要管理员中的Jquery Datepicker和Timepicker

时间:2014-02-08 07:26:02

标签: jquery wordpress wordpress-plugin wordpress-theming

使用一个简单的插件,为自定义的帖子数据类型添加几个自定义字段。该字段是JQuery timepicker和datepicker。我不知道问题出在哪里。这是我的功能和自定义字段。请指出正确的方向,让我知道缺少什么或如何让它工作。

//FUNCTION TO ADD SCRIPTS TIMEPICKER JQUERY PLUGIN
function tek_tour_script(){
    ?>
<script>
JQuery('#slider_example_1').timepicker({
    hourGrid : 4,
    minuteGrid : 10,
    timeFormat : 'hh:mm tt'
});

JQuery(document).ready(function() {
    JQuery('#MyDate').datepicker({
        dateFormat : 'dd-mm-yy'
    });
});

</script>
<?php
wp_register_script('tek_tour_timepicker', plugins_url('/js/jquery-ui-timepicker-addon.js', __FILE__));
wp_enqueue_script('tek_tour_timepicker', plugins_url('/js/jquery-ui-timepicker-addon.js', dirname(__FILE__)));

wp_register_script('tek_tour_sliderAccess', plugins_url('/js/jquery-ui-sliderAccess.js', __FILE__));
wp_enqueue_script('tek_tour_sliderAccess', plugins_url('/js/jquery-ui-sliderAccess.js', dirname(__FILE__)));

wp_enqueue_script('jquery-ui-datepicker');
wp_enqueue_style('jquery-style', 'http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.2/themes/smoothness/jquery-ui.css');
}
add_action( 'admin_enqueue_scripts', 'tek_tour_script' );

以下是我的div:

 <h3>Times</h3>
<br>
<div>
<input type="text" name="slider_example_1" id="slider_example_1" value="" />
<input type="text" id="MyDate" name="MyDate" value=""/>
</div>

这是我的CSS:

function tek_tour_time_css(){
?>
<style>
.ui-timepicker-div .ui-widget-header {
    margin-bottom: 8px;
}
.ui-timepicker-div dl {
    text-align: left;
}
.ui-timepicker-div dl dt {
    float: left;
    clear: left;
    padding: 0 0 0 5px;
}
.ui-timepicker-div dl dd {
    margin: 0 10px 10px 45%;
}
.ui-timepicker-div td {
    font-size: 90%;
}
.ui-tpicker-grid-label {
    background: none;
    border: none;
    margin: 0;
    padding: 0;
}
.ui-timepicker-rtl {
    direction: rtl;
}
.ui-timepicker-rtl dl {
    text-align: right;
    padding: 0 5px 0 0;
}
.ui-timepicker-rtl dl dt {
    float: right;
    clear: right;
}
.ui-timepicker-rtl dl dd {
    margin: 0 45% 10px 10px;
}
 </style>
 <?php
 }
 add_action( 'admin_enqueue_scripts','tek_tour_time_css');

谢谢!

1 个答案:

答案 0 :(得分:1)

你的jQuery代码不正确,timepicker需要在jQuery(document).ready(),

里面
jQuery(document).ready(function() {
    jQuery('#MyDate').datepicker({
        dateFormat : 'dd-mm-yy'
    });
    jQuery('#slider_example_1').timepicker({
        hourGrid : 4,
        minuteGrid : 10,
        timeFormat : 'hh:mm tt'
    });
});

你还需要为它创建一个JS文件并将其排队,因为它直接在&#34; admin_enqueue_scripts&#34;中回显它。或&#34; enqueue_scripts&#34;作为a的动作会产生错误,因为到那时jQuery没有加载到WordPress中。

您还应该使用jQuery库添加JS代码的依赖关系。还要指定其他库的依赖关系,以确保它们在jQuery库之后加载。

将所有CSS和JS作为单独的文件添加并分别使用wp_enqueue_style()和wp_enqueue_script()将它们排队,而不是直接回显或打印它们也是一种很好的做法。

示例:

wp_register_script('tek_tour_sliderAccess', plugins_url('/js/jquery-ui-sliderAccess.js', __FILE__), array( 'jquery' ));
wp_enqueue_script('tek_tour_sliderAccess');

参考: Wordpress Codex wp_enqueue_script() - Script Dependency