質問: null) { extract(shortcode_atts(array( 'title' => '', ), $atts)); $out .= '<h3 class="toggle"><strong><a href="#">' .$title. '</a></strong></h3>'; $out .= '<div class="toggle-box" style="display: none;"><p>'; $out .= do_shortcode($content); $out .= '</p></div>'; return $out; } add_shortcode('toggle', 'togglebox'); //*************************** get plugin url ***************************// function get_pluginurl() { // wp < 2.6 if ( !function_exists('plugins_url') ) return get_option('siteurl') . '/wp-content/plugins/' . plugin_basename(dirname(__file__)); return plugins_url(plugin_basename(dirname(__file__))); } //*************************** calls toggle box css and js***************************// function add_togglebox () { ?> <link type="text/css" href="<?php echo plugins_url('toggle-box'); ?>/toggle-box.css" rel="stylesheet" /> <script type="text/javascript" src="<?php echo plugins_url('toggle-box'); ?>/toggle-box.js"></script> <?php } add_action('wp_head', 'add_togglebox'); ?> /toggle-box.css/*************************** shortcodes: toggle box ***************************/ h3.toggle { background-repeat: no-repeat; background-position: -27px -23px; font-size: 16px; padding: 0 0 20px 23px; cursor: pointer; } h3.toggle a { text-decoration: none; display: block; } h3.toggle-active { background-position: -6px -50px; } .toggle-box { clear:both; margin: 0 0 10px 0; overflow: hidden; } h3.toggle { background-image: url(images/sprite.png); } /toggle-box.js/*************************** toggle content ***************************/ jquery(document).ready(function(){ jquery(".toggle-box").hide(); jquery(".toggle").toggle(function(){ jquery(this).addclass("toggle-active"); }, function () { jquery(this).removeclass("toggle-active"); }); jquery(".toggle").click(function(){ jquery(this).next(".toggle-box").slidetoggle(); }); }); /images/ sprite.png firebugを使用している間、問題は私のjqueryにあることがわかりました jqueryが定義されていません [このエラーを打破] jquery(document).ready(function(){ そして、私はそれを定義しました。私はそれを正しくするために私がすべきことを私に言う人もいるでしょう。
回答: javascriptとcss、あるいは少なくともjavascriptを含める方法をやり直す必要があります。wordpressには、スクリプトとスタイルを登録し、それらの依存関係を宣言する方法があります。あなたの場合は、jqueryがロードされていないのでおそらくうまくいかないでしょう。javascriptを含めるには、これをinitフック内で行います。add_action( 'init', 'toggle_box_init' ); function toggle_box_init() { if ( ! is_admin() ) { wp_enqueue_script( 'toggle-box', plugins_url( 'toggle-box' ) . '/toggle-box.js', array( 'jquery' ) ); } } wp_enqueue_script()関数はいくつかの引数を取ります、最初の3つは最も重要です。 最初の引数はハンドルです。これは基本的にはwordpress内のスクリプトのidです。 2番目の引数はsrcです。スクリプトのurl. 3番目の引数は、依存関係の配列です。 dependencies配列はあなた自身のスクリプトが依存するすべてのスクリプトのハンドルを含まなければなりません。この場合はwordpressに同梱されている 'jquery'を使います。 wp_enqueue_script()を使って同じようにcssをインクルードすることができます。私は コーデックスページ を読んで、理解を深め、それを使ってできることの例をもっと得ることをお勧めします。あなたのスクリプトとスタイルをこのように含める理由は、jqueryに依存する複数のプラグインがすべてそれ自身のコピーをロードするわけではないためです。