3

まず、このカテゴリの投稿のスタック全体を約 100 回読んだような気がします。タイトルは重複しているように聞こえますが、WP 3.5+ との連結全体まで、尋ねられた質問に対して読んだすべてのソリューションを試したことを意味します。

実際のjqueryスクリプトとURLを参照すると、私のスクリプトはWPでうまく機能します。私はどこでもこれを実装するのはひどい方法だと読んでいるので、組み込みのWPライブラリと非競合ラッパーを使用しようとしています。私は、ベアボーン ローカル InstandWP インストールで WP 3.6 を実行し、デフォルトの Twentythirteen テーマを使用し、他のプラグインは使用しません。

\\ Works great if I use these in WP 3.6
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>

前に言ったように、私は正しいことをしようとしているので、多くのエンキューおよび/または登録 (解除) オプションで実験を行いました。これまでのところ成功したものはありません:

  • Concatenate_scripts = false
  • jQueryの登録(解除)
  • エンキュー (Codex で参照されている適切な jQuery フックを使用)

もちろん、$ を jQuery などに書き直します。しかし、firebugコンソールが教えてくれるように、私の問題は上り坂のようです: Uncaught ReferenceError: jQuery is not defined

だからここにいます。私のコードは WP 以外では問題ありませんが、適切なコーディング方法で WP のフロントエンド プラグインに使用できるようには思えません。

\\ Loading the JS library & CSS
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.1/themes/redmond/jquery-ui.min.css" />

\\ Definition of the datepicker rule
<script>
$(".full_date").datepicker({
showOn: 'button',
buttonText: 'Here',
dateFormat: 'DD, dd MM yy',
altFormat: "yy-mm",
altField: ".year-month",
onClose: function (dateText, picker) {
    // getDate returns a js Date object
     var dateObject = $(this).datepicker("getDate");
    console.dir(dateObject);
    // Call Date object methods
    $("#date input").val(dateObject.getDate());
    $("#month input").val(dateObject.getMonth());
    $("#day input").val(dateObject.getDay());
    $("#year input").val(dateObject.getFullYear());
}
});
</script>

\\ Some HTML
<h1>Date Picker</h1>

<form class="date-picker">
<label>full date</label>
<input type="text" class="full_date" value="" />
    <label>year month</label>
<input type="text" class="year-month"/>
</form>
<p id="day">Day of the week: <input name="day" type="text"></input> </p>
<p id="month">Month: <input name="month" type="text"></input></p>
<p id="date">Date: <input name="date" type="text"></input></p>
<p id="year">Year: <input name="year" type="text"></input></p>

それが助けになるなら、私はjsFiddleにすべてを持っています

WP 3.6+ で正しい方法でコードを設定するための構文を教えていただけないでしょうか。

ここまでお読みいただき、誠にありがとうございました。グレッグ

アップデート

これが更新されたコードです。まだエラーがあります:「Uncaught ReferenceError: jQuery is not defined」。

<?php
add_action('wp_enqueue_scripts', 'load_my_scripts');

function load_my_scripts(){
wp_enqueue_script('jquery-ui-datepicker', '/wp-includes/js/jquery/ui/jquery.ui.datepicker.min.js', array('jquery'));    
wp_register_style('date-picker', plugins_url('includes/jquery-ui-1.10.3.custom.min.css',__FILE__), true);
}
?>
<script type="text/javascript">
(function($) {
    $(document).ready(function($){
        $("#datepicker").datepicker();
    });
});
</script>
<p>Date: <input type="text" id="datepicker" /></p>

ここでライブを見ることができます:

http://s146485761.onlinehome.fr/wp_dev/debugging-test/

完全なプラグインはこちら

http://s146485761.onlinehome.fr/wp_dev/plugin_archive.zip

更新 2

しばらくして、コードに問題がないことに気付きました。プラグイン フォルダーの 1 レベル上に配置するだけで済みました。この「防弾」の例をダミーのプラグインとして作成しました。そこから、関数と add_action のスニペットが eplugin フォルダーのルートにある必要があることがわかりました。

それが誰かを助ける場合に備えて、私が使用したテストコードは次のとおりです:

<?php
   /*
   * Plugin Name: Hello World
   */
   add_filter( 'the_content', 'tfr_the_content' );
   function thisisonlyatest() {
      wp_enqueue_script('jquery-ui-datepicker');
      wp_enqueue_style('jquery-ui-datepicker','http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.1/themes/redmond/jquery-ui.min.css' );
   }
   add_action("wp_enqueue_scripts","thisisonlyatest");
   function tfr_the_content( $content ) {
      return $content . '<p><input type="text" id="datepicker" value=""/></p>';
   }
   ?>
   <script type="text/javascript">
   jQuery(document).ready(function() {
   jQuery('#datepicker').datepicker({
   dateFormat : 'yy-mm-dd'
   });
   });
   </script>

プラグイン フォルダーにフォルダーを作成します。そこに空のphpファイルを作成し、そのコードを貼り付けます。テスト用のワードプレス インスタンスを起動し、そこから必要に応じてカスタマイズします。

ご協力いただきありがとうございます。これが他の人にも役立つことを願っています

グレッグ

4

2 に答える 2

3

上記のコードが実際に使用しているものである場合、問題は $ が jQuery オブジェクトではないことです。次のようなものが必要です:

jQuery(document).ready(function($){

   /** your code

 });

上記の人が理解していたように、jQuery をハードコーディングせず、エンキューしてください。また、参考までに、jQuery datepicker はコアの一部ですが、そのスタイルはそうではないため、スタイルシートをロールして含める必要があります。

例 (jQuery Themeroller Redmond スタイルを使用):

add_action('wp_enqueue_scripts', 'load_my_scripts');

function load_my_scripts(){
wp_enqueue_script( 'jquery-ui-datepicker' );    
wp_register_style('date-picker', plugins_url('css/jquery-ui-redmond.css',__FILE__), true);
}
于 2013-08-02T17:39:21.997 に答える
1

ベローズ スクリプトとスタイルをロードするには、テーマの functions.php ファイルにベローズ コードを追加します。

function add_e2_date_picker(){
//jQuery UI date picker file
wp_enqueue_script('jquery-ui-datepicker');
//jQuery UI theme css file
wp_enqueue_style('e2b-admin-ui-css','http://ajax.googleapis.com/ajax/libs/jqueryui/1.9.0/themes/base/jquery-ui.css',false,"1.9.0",false);
}
add_action('wp_enqueue_scripts', 'add_e2_date_picker'); 

バックエンドで使用するスクリプト:

function add_e2_date_picker(){
//jQuery UI date picker file
wp_enqueue_script('jquery-ui-datepicker');
//jQuery UI theme css file
wp_enqueue_style('e2b-admin-ui-css','http://ajax.googleapis.com/ajax/libs/jqueryui/1.9.0/themes/base/jquery-ui.css',false,"1.9.0",false);
}
add_action('admin_enqueue_scripts', 'add_e2_date_picker'); 

Settigns->Date Picker に表示するために、「options-general.php」を追加またはフックしました。このコードを funtions.php ファイルまたは以下のコードに追加するだけです。

function register_datepiker_submenu() {
    add_submenu_page( 'options-general.php', 'Date Picker', 'Date Picker', 'manage_options', 'date-picker', 'datepiker_submenu_callback' );
}

function datepiker_submenu_callback() { ?>

    <div class="wrap">

    <input type="text" class="datepicker" name="datepicker" value=""/>

    </div>

    <script>
    jQuery(function() {
        jQuery( ".datepicker" ).datepicker({
            dateFormat : "dd-mm-yy"
        });
    });
    </script> 

<?php }
add_action('admin_menu', 'register_datepiker_submenu');

?>

WordPress テーマまたはプラグインに jQuery 日付ピッカーを追加するの詳細を参照してください。

于 2015-02-25T05:02:58.270 に答える