tips

コメントを”完全に”受け付けなくするには。

2013年12月27日 金曜日

いまどき、ブログでコメントって受け付けないのがもうスタンダードですよね。
AmebaでAKB48やタレントさんでもなければ、コメント数で資金稼ぎしてブログ旅してるわけでもないですからね。
スパムや炎上の窓を開けておくことはないですよね。

でも、投稿記事のテンプレートの

<?php comments_template(); ?>  

を取りはずすだけでは閲覧ユーザーが投稿できなくなるだけで、
コメント投稿用のテンプレートphpを介してスパムは入ってきてしまう可能性があるので、機能そのものを停止しないといけません。

functions.phpに以下を追記して、機能停止しましょう。

/*  コメント停止  */
function add_comment_close ( $open ) {
    $open = false;
    return $open;
}
add_filter( 'comments_open' , 'add_comment_close' ,10 , 2 );

(参考:「現場でかならず使われているWordPressのデザインメソッド」(MdN刊)より)

追記: 投稿タイプによらず、全てコメント停止したい場合は、以下でもよいようです。(大曲さんにおしえてもらいました!)

add_filter( 'comments_open', '__return_false' ); 

WordPressでjQueryのAjaxを使うときの注意。

2013年5月20日 月曜日

恥ずかしながら、知りませんでした・・・

ウェブエントリーズが納品するWordPressはブログとして、
静的HTMLで制作した本体サイトとセットにするのが一番多くて、

レイアウトやら見出しやら、ボタンやら、本体サイトとシームレスなデザインにすべく
WordPressのheader.phpやfooter.phpの内容を、本体側からコピペして、
共通のCSSやJavascriptも読み込んだりしてるのですが、

最近装飾的や機能的に出番が多くなったjQueryに関しては
WordPressに外部ファイルのjquery.jsを読みこむソースを書くんじゃなくて
で呼び出されたjquery.jsを使わないと、
本体サイトと同じ動きをする分にはいいかも知れないけれど、
プラグインでjQueryな動きモノを追加しちゃうと、
どっちかがあるいは両方が反映しなかったり、動かなくなったりすることがあるのです。

この現象を「コンフリクト」といいます。

僕もプログラムはおろか、Javascriptも怪しいレベルなので、ムズカシイ話はハショリますが、
じつはバージョンが同じjQueryでも、WordPressに同梱されているものと
一般にjQueryのサイトから落としてくるものとは変数の定義の仕方が異なっているので
そういうことが起こるわけです。

正しい対処としては、WordPress側のjQueryに従って、

<?php wp_head();?>

の後に、jquery.js以外の動作に関連するjsファイルを読み込ませて、
header.phpに書くJavascriptソース(プラグインコードという)は

 

(function($){
  ここにもともとのJavascriptソースを書く
})(jQuery);

あるいは

jQuery(document).ready(function($){
  ここにもともとのJavascriptソースを書く
});

 

という感じに変更しましょう。

 

(追記) もうちょっと単純に

$(function(){
	$(・・・・)・・・・
	});

 

↓ $をjQueryに表記変更するとよいみたいです。

 

jQuery(function(){
	jQuery(・・・・)・・・・
	});
});

 

ちなみに「コンフリクト」というのはWordPressにだけ起こる事象ではなく、
prototypeとjQueryのAjaxを同一HTML上で使うと動かなかったりする、
あれも「コンフリクト」なのです。

 

(以上、2013/5/19 WordBench京都での瀬戸 貴弘さんのセッションのウケウリです。感謝。)

※追記※
WordPressに同梱のjQueryが機能していないときは、header.php

<?php wp_head();?>

の前に

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

を書くか、

functions.phpに以下を追記して下さい。

function load_script(){
    wp_enqueue_script('jquery');
}
add_action('init', 'load_script');

 

Facebookプラグイン Like Buttonのスマホ・ビュー

2012年12月22日 土曜日

Facebook公式プラグインでLike Buttonを設置するときは幅は300px程度にしておかないと、レスポンシブ・デザインやプラグインでスマートフォンのビュー対策していてもレイアウトが崩れます。

親カテゴリーindexで子カテゴリー、子カテゴリーで記事タイトルを表示する

2012年12月12日 水曜日

親カテゴリーindexページで子カテゴリータイトルを、
子カテゴリーindexで記事タイトルを表示する方法を
フォーラムに投稿のあった記事(http://ja.forums.wordpress.org/topic/2393)をもとにカスタマイズしました。

category.phpを作ります。
ソースは以下のとおり。

 

<?php if (have_posts()) : ?>
<?php $post = $posts[0]; // Hack. Set $post so that the_date() works. ?>
<h3><?php printf(__('%s', 'kubrick'), single_cat_title('', false)); ?></h3>
<ul>
<?php
if ( is_category() ) :
// クエリからカテゴリーとページ数を取得
$catid = get_query_var( 'cat' );
$paged = get_query_var( 'paged' );
// 子カテゴリーを配列で取得
$children = get_term_children( $catid, 'category' );
// 子カテゴリー一覧の表示件数 (sp = showposts)
$child_sp = -1;
// クエリを発行してしまうと、 single_cat_title() が機能しなくなる
$single_cat_title = single_cat_title( '', false );
// Default テーマの場合次の行のコメントを解除すると幸せ
// $single_cat_title = printf(__('Archive for the '%s' Category', 'kubrick'), $single_cat_title);
// 子カテゴリーが存在する場合、それらを除くクエリを発行
if ( !empty( $children ) ) {
query_posts( array(
'category__in' => array( $catid ),
'category__not_in' => $children,
'paged' => $paged,
) );
}
?>
<?php if ( have_posts() ) : ?>
<?php while ( have_posts() ) : the_post(); ?>
<li <?php post_class(); ?> id="post-<?php the_ID(); ?>"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
<?php endwhile; ?>
<?php endif; ?>
<?php
// 子カテゴリーが存在する場合
if ( !empty( $children ) ) :
foreach ( $children as $child ) :
// 子カテゴリーのオブジェクトを取得
$child_cat_object = get_category( $child );
// 孫カテゴリーはスキップ
if ( $child_cat_object->category_parent != $catid ) continue;
// 子カテゴリー用のクエリを作成
query_posts( array(
'cat' => $child,
/*
* 孫カテゴリーを子カテゴリーの記事として含めない場合は 'cat' => $child ではなく
* 'category__in' => array( $child ),
*/
'showposts' => $child_sp,
) );
?>
<?php if ( have_posts() ) :
// 子カテゴリーページのタイトルと URL を取得
$child_cat_title = apply_filters( 'single_cat_title', get_cat_name( $child ) );
$child_cat_link = get_category_link( $child );
?>
<li><a href="<?php echo $child_cat_link; ?>"><?php echo $child_cat_title; ?></a></li>
<?php endif; ?>
<?php
endforeach;
// query_posts を発行している場合にクエリをリセット
wp_reset_query();
endif;
endif;
?>
</ul>

ケータイでも投稿できるよ。

2012年10月5日 金曜日

弊社でCMSとして採用しているWordPressはガラケー(ケータイ)で投稿できるか、ってご質問があったのでやってみました!ほらっ!

ページトップへ