Warning: Declaration of FEE_Field_Terms::wrap($content, $taxonomy, $before, $sep, $after) should be compatible with FEE_Field_Post::wrap($content, $post_id = 0) in /home/twfs/serverkurabe.com/public_html/blog/wp-content/plugins/front-end-editor/php/fields/post.php on line 0

Warning: Declaration of FEE_Field_Tags::wrap($content, $before, $sep, $after) should be compatible with FEE_Field_Terms::wrap($content, $taxonomy, $before, $sep, $after) in /home/twfs/serverkurabe.com/public_html/blog/wp-content/plugins/front-end-editor/php/fields/post.php on line 0

Warning: Declaration of FEE_Field_Category::wrap($content, $sep, $parents) should be compatible with FEE_Field_Terms::wrap($content, $taxonomy, $before, $sep, $after) in /home/twfs/serverkurabe.com/public_html/blog/wp-content/plugins/front-end-editor/php/fields/post.php on line 0

Warning: Declaration of FEE_Field_Post_Thumbnail::wrap($html, $post_id, $post_thumbnail_id, $size) should be compatible with FEE_Field_Post::wrap($content, $post_id = 0) in /home/twfs/serverkurabe.com/public_html/blog/wp-content/plugins/front-end-editor/php/fields/post.php on line 0

Warning: Declaration of FEE_Field_Post_Meta::wrap($data, $post_id, $key, $ui, $single) should be compatible with FEE_Field_Post::wrap($content, $post_id = 0) in /home/twfs/serverkurabe.com/public_html/blog/wp-content/plugins/front-end-editor/php/fields/post.php on line 0

Warning: Declaration of FEE_Field_Widget::wrap($params) should be compatible with FEE_Field_Base::wrap($content, $data) in /home/twfs/serverkurabe.com/public_html/blog/wp-content/plugins/front-end-editor/php/fields/widget.php on line 0

Warning: Declaration of FEE_Field_Comment::wrap($content) should be compatible with FEE_Field_Base::wrap($content, $data) in /home/twfs/serverkurabe.com/public_html/blog/wp-content/plugins/front-end-editor/php/fields/other.php on line 0

Warning: Declaration of FEE_Field_Term_Field::wrap($content, $term_id, $taxonomy) should be compatible with FEE_Field_Base::wrap($content, $data) in /home/twfs/serverkurabe.com/public_html/blog/wp-content/plugins/front-end-editor/php/fields/other.php on line 0

Warning: Declaration of FEE_Field_Single_Title::wrap($title) should be compatible with FEE_Field_Term_Field::wrap($content, $term_id, $taxonomy) in /home/twfs/serverkurabe.com/public_html/blog/wp-content/plugins/front-end-editor/php/fields/other.php on line 0

Warning: Declaration of FEE_Field_Option::wrap($content, $key, $ui) should be compatible with FEE_Field_Base::wrap($content, $data) in /home/twfs/serverkurabe.com/public_html/blog/wp-content/plugins/front-end-editor/php/fields/other.php on line 0
CMS | Sabakura Blog - Part 8

WordPressでjQueryを動かす方法

先日、別サイトですが、WordPress内でjQueryを動かす必要がありました。
その際に、jQueryがなかなか動かずに困りましたので、備忘録がてらにここで動かし方を書いておきたいと思います。

WordPressでjQueryを動かすには

wp_enqueue_scriptの記述を追加

WordPressでは、わざわざjQueryのライブラリを新しくサーバー上に設置しなくても、標準でWP内にjQueryのライブラリが用意されています。

ただし、初期設定ではjQueryは読み込みされませんので、<head>~</head>内に、ライブラリ読み込みのための関数を追加する必要があります。

このライブラリ読み込みのための関数が「wp_enqueue_script」です。
これを<?php wp_head(); ?>以前に追加します。

具体的には、WordPressの利用しているテーマフォルダ内のheader.phpに、以下のように記述してください。

<?php wp_enqueue_script('jquery'); ?>;
<?php wp_head(); ?>;

これでjQueryが読み込まれるようになります。
なお本当に読み込まれているかを確認するには、実際のページのソースで、以下の一行があるかどうかを確認してください。

<script type='text/javascript' src='http://[ドメイン]/[wordpressを設置したディレクトリ]/
wp-includes/js/jquery/jquery.js?ver=1.4.2'></script>

$をjQueryに置き換え

さらにもう一つの作業として、jQueryのコードを書き換える必要があります。
具体的には、コード内の「$」を「jQuery」という文字列に置き換えます。

これは、WordPressにはjQuery同様に「$」をコード内で利用するprototype.jsのライブラリがあるためです。そこでWordPressでは、ライブラリのコンフリクトを避けるため、jQueryの場合は「$」を「jQuery」に置き換えます。

たとえば以下のようなjQueryのコードがあったとします。
(id=”appeal”内の文字列を赤に設定する、というコードです。)

$("#appeal").css("color","red");

これをWordPress内で利用する場合は、以下のように書き換えます。

jQuery("#appeal").css("color","red");

これで正常に動くようになります。
ただ、コードが長くなる場合は、$をすべて置換するのはあまり綺麗ではないので、以下のようにするといいと思います。

jQuery(function($){
	$("#appeal").css("color","red");
	//以下、コードを追加
});

最初にjQuery(function($)を記述することで、{}内のコードはすべて$のまま記述できます。

なお、今回の記事は以下のサイトを参考にさせていただきました。

WordPress3.1でサイト上部の管理バーを非表示にする方法

先日、WordPress3.1の正式版がリリースされました。

そこでさっそくWordPress3.1にアップデート(今回は自動更新を利用)し、無事終了……と思いきや、サイトを確認してみると上部に見慣れぬバーが。

管理バーが表示される

これ、管理バー(Admin Bar)と呼ばれるもので、WP3.1から新しく導入されています。

自分のサイト(ブログ)から一発でダッシュボードに飛べるので便利といえば便利なのですが、サイトのデザイン変更を確認したいときとか、ちょっと邪魔だったりします。

もちろん非表示にする設定もありますが、ちょっとわかりにくいところにありましたので、簡単な説明を書いておきます。

WordPressの管理バーを非表示にする設定

WordPressのダッシュボードで、「ユーザー」の「あなたのプロフィール」をクリックします。

管理バーを表示しない設定

「Show Admin Bar」の「when viewing site」のチェックを外します。

チェックを外します

最後に画面下部の「プロフィール更新」をクリックすれば、管理バーが非表示になります。

WordPressに公式「Tweet」ボタンを設置する場合の注意点

Twitterの公式ツイートボタンをWordPressに設置する際にちょっとつまずいたのでメモしておきます。
なお、プラグインを使わずに直接コードを書く場合の話です。

記事タイトルと記事URLを設定する

当たり前といえば当たり前なのですが、本来Tweetボタンを設置する際には各記事のタイトルとURLを設定する必要があります。
しかし、公式ページからなにも考えずにコードを作ると以下のようになります。

<?php
<a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" data-via="serverkurabe" >Tweet</a>
<script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>
?>

このコードを見ていただくと分かるのですが、どこにもタイトルや記事URLを設定する部分がありません。実はこのままのコードを利用する場合、Tweetボタンが表示されているページ(ブラウザで現在開いているページ)のタイトルとURLが自動で設定されます。

ぱっと聞くとそれで問題ないように思えるのですが、たとえばトップページを開いた場合、トップに並ぶ各記事内のTweetボタンは、すべてトップページのタイトルとURLを取得してしまいます。

これを避けるためには、記事タイトルとURLを取得するWordPress定番の関数(タグ)「the_title()」と「the_permalink()」を使って以下の部分を足します。

data-text="<?php the_title(); ?>" data-url="<?php the_permalink() ?>"

よって最終的なコードは以下になります。
(そのままWordPressのindex.phpやcategory.phpにコピーしてもらって動作します。)

<?php
<a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" data-via="serverkurabe" data-text="<?php the_title(); ?>" data-url="<?php the_permalink() ?>">Tweet</a>
<script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>
?>

なお上記のコードは、横一行タイプのボタン形式(horizontal)を指定しています。またTwitterアカウント名(@serverkurabe)は自分のアカウント名に書きかえてください。