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
jQueryを利用して、Wordpressの特定のカテゴリだけ日付を消去する | Sabakura Blog

jQueryを利用して、WordPressの特定のカテゴリだけ日付を消去する

WordPressを使っていて、特定のカテゴリの投稿記事だけ、日付などの情報を消去したい場合があります。このような場合、jQueryを使うと簡単に実現できます。
(カテゴリ別の指定ではなく、タグ別の指定も行えます)

どういった場合に便利?

たとえばこのサイトでは、レンタルサーバーのレビューを固定ページではなく投稿として追加しています。しかしこの場合、日付情報はあまり重要ではありません(随時更新しているため)。

WordPressのプラグインのなかには投稿から固定ページへの変換を行ってくれるものもありますが、投稿ではタグ付けが行えるのに、ページではタグ付けが行えないなど、そのまま変換するのはためらわれる場合も多いです。

そこで、かわりにjQueryを用いて不要な情報だけを消去にすると便利です。

例:jQueryを用いて日付情報を非表示にする

jQueryでは、CSSのクラス・IDを用いてコンテンツを操作するため、まずカテゴリや日付情報の部分にクラスを指定しておきます。

カテゴリにクラスを指定

まずsingle.phpを開き、記事のカテゴリが表示されている部分にCSSのクラスを割り当ててください。具体的な例を以下に示します。

<p class="category"><?php the_category() ?></p>

日付情報にクラスを指定

同様にsingle.php内で、日付情報が表示されている部分にCSSのクラスを割り当ててください。

<li class="date">更新日:<?php  the_time('Y年m月d日') ?></li>

ヘッダーにjQueryを追加

次にheader.phpを開き、以下のようにjQueryのスクリプトを追加します。

<script type="text/javascript">
jQuery(function() {
	//.category内のaタグのhref要素がcookingまたはrecipeであれば
	if (jQuery(".category a").is("[href*='cooking'],[href*='recipe']")) {
		//.dateタグ内の要素を削除
		jQuery(".date").remove();
	}
});
</script>

なおWordPress内でjQueryを使う場合、上記のように「$」記号は「jQuery」に置換して記述します。これがスマートでない場合は、以下のように書き換えてもらってもOKです。
(参考:WordPressでjQueryを動かす方法

<script type="text/javascript">
jQuery(function($) {
	if ($(".main_nav a").is("[href*='review'],[href*='select']")) {
		$(".date").remove();
	}	
});
</script>

検索エンジンスパムに該当しないか?

このような画面上の情報消去は、検索エンジンに対しての情報を操作する検索エンジンスパムだと誤解される場合があります。

実際、CSSの「display:none;」を利用して特定の文字列を人間には見えないようにするのは、この検索エンジンスパムに該当してしまいます。
これは「display:none;」は人間にはその文字列が見えないにもかかわらず、検索エンジンには見えているためです。

しかし、jQueryのremove()を使う場合、HTMLそのものから文字列を削除するため、その文字列は人間にも検索エンジンにもまったく認識されません。(逆に言うとインデックスさえされません)。

そのため検索エンジンの評価を操作しようとする要素はまったくないため、スパム行為に該当することはまったくないので安心してください。

コメントを投稿