WordPress Lab

WordPressがドメイン直下の展開(静的HTML共存)で、404リダイレクトをつかうとき

2014年3月11日 火曜日

WordPressをドメイン直下で表示する設置をして、静的HTMLと共存させるようなサイトを作った場合、404エラーの表示はWordPressの404.phpになる。
静的HTMLもあるし、即座にトップページへリダイレクトさせるのもSEO的によくないようなので、
いったん404.htmlを踏ませて、「お探しのページはありません。トップページヘ戻ります。」と案内して、
javascriptなどで再リダイレクトなどをさせるために、.htaccessに

ErrorDocument 403 http://○○○○/404.html
ErrorDocument 404 http://○○○○/404.html

と書くのもよいが、WordPressのテーマテンプレート404.phpは

<?php
header("location: http://○○○○/404.html");
exit;
?>

のみの記述にして、.htaccessを触らず、404.htmlにリダイレクトするのもよさそう。
(どっちもやっとくと安心。)

(2014/03/11 13:20 部分修正しました)

NextGEN GalleryとWP jQuery Lightboxを併用してレスポンシブ対応のギャラリーをつくる

2014年1月31日 金曜日

NextGEN Gallery自体はデフォルトではレスポンシブに対応していませんから、
横並び1列の画像数は表示カラム数を指定せず、「Gallery Settings」の「NextGEN Basic Thumbnails」にある、
「Number of columns to display」の値は0にしておいて、CSSのwidthを適切な%で設定しましょう。

NextGEN GalleryのAjaxによる拡大表示はデフォルトではFancyBoxですが、Lightboxに切り替えが出来ます。
しかし、レスポンシブデザインでは、拡大画像はそれぞれのデバイスモニタのサイズ以内でないと困りますよね。

プラグイン「WP jQuery Lightbox」なら、デバイスモニタにあわせて拡大画像を表示する設定ができます。

このWP jQuery Lightboxの機能をNextGEN Galleryで有効にするには、
「Other Options」の「Lightbox Effects」で、「Lightox」に切り替えたうえで、
codeを「class=’ngg_lightbox’」から「rel=”lightbox”」に書き換えて、
「Stylesheet URL」と「Javascript URL」の記述を全部削除してセーブすれば、
拡大画像はデバイスモニタに応じたを表示になります。

この設定はそれぞれのプラグインをインストールしてとくに何も触っていない状態で、
かつ干渉を受けるような他のプラグインがない状態で可能になりましたので、
何か手を入れられている場合は同様の結果になるかの保証はありませんので、あしからず。

投稿時のプラグインのバージョン
NextGEN Gallery 2.0.40
WP jQuery Lightbox 1.4.5

親のカテゴリーテンプレートで孫カテゴリーの情報をループ表示させる。

2014年1月9日 木曜日

親のカテゴリーテンプレートで孫カテゴリーの情報をループ表示させるソース。
ググってもあんまりないし、あってもたいがい使いにくいので、自分用も兼ねて書いておきます。

<?php
$categories = get_categories('parent=子カテゴリーのID');
foreach($categories as $category):
?>
<h2><?php echo $category->cat_name; ?></h2>

不可変の共通コンテンツ

<?php query_posts('posts_per_page=-1&order=DESC&category__in='.$category->term_id);
if (have_posts()) : while (have_posts()) : the_post();
?>

孫カテゴリーの記事から抽出してループさせる内容

<?php endforeach; ?>

query_postsを使ったアーカイブページのカスタマイズで「WP-Pagevavi」によるページ送りが404になる件。

2014年1月8日 水曜日

お客様のサイトを制作していて、アーカイブページテンプレートをquery_postsを使って投稿件数を指定するカスタマイズをしていて、プラグイン「WP-Pagevavi」を使ったページ送りをテストしていましたが

<?php if (have_posts()) : query_posts( $query_string . ‘&posts_per_page=XX&paged=’.$paged); ?>
<?php while ( have_posts() ) : the_post() ?>

Loopさせる内容

<?php endwhile; ?>
<?php endif; wp_reset_query(); ?>

どうしても2ページ以降は404ページを表示してしまう。
どうしてかなあ?と調べてみると、

posts_per_pageの件数(XX)が、管理画面の「設定 > 表示設定」で1ページの表示を設定している投稿数より多くないとWP-Pagevaviが正常に機能しないようです。 メインクエリーでは2ページ目が存在しないので、アーカイブテンプレートが読み込まれず、query_postsも実行されないので404となってしまうのです。(大曲さんにおしえてもらいました!)

「設定 > 表示設定」をに触っていなければ、デフォルトは10件。
10に満たない少ないテスト投稿を使って、表示テストなんかやってるとハマってしまいます。

追記:  pre_get_posts を用いて、メインクエリーそのものを変えてしまう方がいいんだそうです。(大曲さんにおしえてもらいました!)

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

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' ); 
me
ページトップへ