カテゴリー: WordPress

  • WordPressのパーマリンク設定を途中で変更する方法

    WordPressのパーマリンクを変更してみました。
    元々

    /%category%/%postname%.html

    だったのを、

    /%postname%/

    にしました。
    パーマリンクを途中で変更することは、リンク切れが発生することになってしまうので、被リンクが多いサイトだと弊害が多いと思いますが、幸い(?)まだほとんど被リンクは無いので、思い切って変更することにしました。
    それでも「いいね!」とかツイート、はてなブックマークされているURLは全部無効になってしまいますがね・・・。
    もちろん、その対処法もちゃんとあるのでご紹介します。

    なぜ、パーマリンクを変更したのか? -1

    パーマリンクを変更した理由は 1 つあります。

    1.SEO上長いURLは好まれない
    2.カテゴリーの変更などすると面倒なことになる

    今までのパーマリンクは、ドメインの後にカテゴリーを挟んで記事タイトル名(英語表記に自分で変更)、最後に.html を付け加えていました。

    http://ドメイン/ カテゴリー / ポストタイトル(記事タイトル).html

    で、問題はこのカテゴリーの部分です。カテゴリーの多くを 2 階層構造にしていたので、パーマリンク内のカテゴリーを示す部分が、親カテゴリー / 子カテゴリー という二段構えになっていました。
    そのためURLが非常に長くなってしまったわけです。

    http://ドメイン/ 親カテゴリー / 子カテゴリー / ポストタイトル(記事タイトル).html

    長いURLは好まれない

    URL はあまり長すぎると SEO 的によくないようです。
    そのせいで順位が大きく変動したり、ペナルティをくらったりといったようなことは無いようですが、URL が長いと HTML のバイト数が肥大したり、リンクを貼ってもらいにくくなったり、クローラーに最後まで読んでもらえなかったりと、あまり好ましくないことが起こるようです。
    そして何より、ぼくにとって衝撃だったのが、GoogleChromeのSorezki SEO Plus というアプリです。この Sorezki SEO Plus というアプリを SEO をチェックしたいページで使用すると、各種サーチエンジンやソーシャルメディアからのアクセス状況や、HTMLやCSSなどの記述に関する注意点などを教えてくれます。
    その中に【URL Length】という項目があります。
    そしてここをチェックすると、URL が長過ぎる!と思いっきし赤で × マークが表示されるのです。
    URL Lengthの警告
    いくら検索結果の順位に大きく影響しないと言われても、ここまではっきりと警告を突きつけられると、なんだか恐ろしくなって「なんとかせねば!」という衝動にかられるものです。

    人は快楽より恐怖で行動する生き物

    まったく話は変わりますが、人間の行動理由は大きく 2 つのタイプに分けられます。1つは得たい欲求から行動するタイプ。もうひとつは失う恐怖から行動するタイプです。
    そしてこの2つを比べると、得たい欲求よりも失う恐怖の方が強烈に行動を喚起します。色々な商品やサービスが数量を限定したり、期間を限定したりして販促をしていうのは、この失う恐怖に訴求しているわけですね。
    で、この SEO のメッセージも、思いっきり真っ赤に「×」と表示して、「やばいよ、キミ」みたいな感じで恐怖に訴えてくるものだから、思わず行動してしまったというわけです。
    WordPress のパーマリンクに関しては、カテゴリーを挟んだ方がいいという人もいますし、日本語でも OK という人もいます。なので、まぁどれが正解というものでもないのかもしれませんが、とりあえずは検索エンジンロボットが読みやすい URL にしようと思ったわけです。

    なぜ、パーマリンクを変更したのか? -2

    パーマリンクを変更した理由は2つあって、ひとつは長い URL に警告が出ていたことに気付いてしまったから。そしてもうひとつは、カテゴリーを途中で変更すると面倒なことになってしまう、という点です。
    パーマリンクを決める上で重要視しなければならない点は、その URL に永続性があるかないか、という点です。リンク切れを起こしたりしないかどうか、ということですね。
    そして、カテゴリーを URL の中に含んでいると、途中でカテゴリーの名前を変更したときに URL が変わってしまうことになります。そうすると、過去の URL がリンク切れとなってしまうわけですね。
    もちろん、リダイレクトの設定をしておけば、旧 URL にアクセスしても新URLに転送されるので、問題が発生しないように設定することはできます。でも、いちいち面倒ですし、万が一リンク切れを起こしてしまえば、ユーザビリティ的にも SEO 的にもよくありません。
    なので、途中でカテゴリーを変更しても影響がでないように、パーマリンクにカテゴリーを含めることはやめることにしたのです。

    後々影響が出そうな設定は避ける

    カテゴリーに限らずタグなんかも、パーマリンクの中に含んでいると後々影響が出てしまう可能性があります。例えば、途中でタグを変更したり削除したりすると URL が変わってしまい、古い URL からはアクセスできなくなってしまいます。
    パーマリンクを設定する際は永続性のある URL にするなどいくつか注意するべき点があるようですが、その他の観点も含めて「もうポストタイトルだけでいいや!」という結論に至りました。
    でもドメインのすぐ後にポストタイトル(記事タイトル)を持ってくる設定は、WordPress 的には非推奨・・・のようですね。

    【2015/6/25 追記】
    現在は初期状態の設定に投稿名をパーマリンクに使用できるチェックボックスがあります。WordPress 的に非推奨というのは過去の話になったようですね。

    途中でパーマリンクを変更する際のリダイレクト設定が簡単にできるプラグイン

    パーマリンクを途中で変更すると、前の URL にアクセスした場合に、404 の Not Found が表示されてしまいます。
    そのため、もし途中でパーマリンクを変更する場合は、古いパーマリンクにアクセスした場合に新しいパーマリンクへ自動的に転送してくれるように設定しておく必要があります。
    そこでプラグインの出番です。
    プラグインを使わない方法もあるようですが、素人は素直にプラグインを使って楽させてもらいましょう。

    簡単にリダイレクトの設定ができるプラグイン Permalink Redirect

    このプラグインは、必ず以下のURLのページへ行って、直接ダウンロードするようにしてください。
    > Permalink Redirectのダウンロードはこちら
    ダウンロードしたファイルは、FTPなどを使ってプラグインのフォルダの中へアップロードする必要があります。
    要するに、WordPressの管理画面のプラグインページからプラグイン検索をしてインストールしてはいけない、ということです。同じ名前の違うプラグインがあるようなので、関係ないプラグインをインストールしてしまう可能性があります。

    Permalink Redirectをアップロードする前に…

    上記のサイトへ行くと、PHP 版と ZIP 版がありますが、どちらにしてもサーバー上にアップロードするのは、【 ylsy_permalink_redirect.php 】という PHP ファイルのみなので、注意してください(フォルダではなく、ファイルをアップロード)。
    ディレクトリ名で言うと、

    • wp-content
      • ∟ plugins
        • ∟ ylsy_permalink_redirect.php

    ということになります。
    が、アップロードする前に、ちょっとだけファイルの中身を変更しておきましょう。具体的には以下のようにします。

    if (!function_exists('wp_redirect')) {
    function wp_redirect($location, $status=301) {
    global $is_IIS;

    405 行目に書かれている数字が 302 となっていますので、ここを 301 に変更します。302 は一時的なリダイレクト。301 は恒久的なリダイレクトです。パーマリンクの変更は一時的ではなく、ずっと変更したまま使い続けるはずなので、301 にしましょう。

    Permalink Redirectを有効化する

    プラグインを FTP などで直接サーバーにアップロードしたら、WordPress の管理画面からプラグインを確認することができます。プラグインを有効化しましょう。

    旧パーマリンクから新パーマリンクへのリダイレクト設定

    まずは、普通にパーマリンクの変更をしましょう。WordPressの【設定】から、【パーマリンク設定】へ行けば好きなように変更することができます。
    次にプラグインの編集画面へ行きます。【設定】の一覧に【permalink Redirect】が表示されているはずです。
    プラグインの編集画面では、以下のように新しいパーマリンクが表示されているはずです。間違いが無ければ、変更前のパーマリンク設定を【Old Permalink Structures】の部分に記載します。
    Permalink Redirectの設定
    後は【Update Options】を押して終わりです。簡単ですね。
    もし、パーマリンクを変更しなければならなくなった場合は、活用してみてください。

    参考にさせて頂いたサイト

  • 複数ユーザーでワードプレスを更新する時のプロフィールとソーシャルメディアの連携方法

    WordPress を複数のユーザーで使用したい場合、ブログ記事を投稿した人ごとにプロフィールが自動的に表示されたらいいと思いませんか?
    というわけで、以前「複数ユーザーでワードプレスを更新するなら知っておくべき権限や個別プロフィール表示など」という記事でブログ記事ごとにプロフィールを表示させる方法をご紹介しました(テンプレートが Twenty Eleven の場合)。
    Twenty Elevenの投稿に執筆者情報が表示される
    しかし、実際表示されたプロフィールはなんだか味気ないものだったので、もっとちゃんと色々情報を表示して欲しい!ということで、ちょっとカスタマイズしましょう。
    そしてついでに著者・ライターごとのソーシャルメディアなんかと関連づけを行ってみましょう。

    不要なプロフィールを削除する

    まずは、プロフィールの項目の中で不要な項目を削除しまう。
    不要なプロフィール項目を削除
    テンプレートフォルダを開いて、【 functions.php 】に下記を追記すればOKです。これで、上記の3項目、AIM・Yahoo!IM・Jabber/Google Talk というなんだか馴染みのないサービスの項目が消えます。

    /* 不要なプロフィール削除 */
    function hide_profile_fields( $contactmethods ) {
      unset($contactmethods['aim']);
      unset($contactmethods['jabber']);
      unset($contactmethods['yim']);
      return $contactmethods;
    }
    add_filter('user_contactmethods','hide_profile_fields');

    プロフィールにソーシャルメディアを表示させる

    そしたら逆に馴染みのある項目をプロフィールに表示させたいと思いませんか? 例えば Facebook や Twitter、Google+ など。そんなソーシャルメディアの情報をプロフィールに表示させるために項目を追加します。
    同じく【 functions.php 】を開いて下記のタグを追記。

    /* ソーシャルメディアをプロフに追加 */
    function my_new_contactmethods( $contactmethods ) {
    $contactmethods['twitter'] = 'Twitter'; /* ツイッター */
    $contactmethods['facebook'] = 'Facebook'; /* facebook */
    $contactmethods['google_plus'] = 'Google+'; /* Google+ */
    return $contactmethods;
    }
    add_filter('user_contactmethods','my_new_contactmethods',10,1);

    これで、Twitter と Facebook と Google+ が追加されました。そして Twitter には Twitter の ID、Facebook には Facebook のユニークユーザーID、Google+ には Google+ の長ったらしい数字の ID を入力しておきます。
    プロフにソーシャルメディアなどの情報を追加
    他にも追加したい項目があれば、【 function 】と【 return 】の間に以下のコードを追加すれば OK です。

    $contactmethods['(任意のパラメータ(英数字))'] = '任意の表示名';

    例えば電話番号を追加したい場合は、【 任意のパラメータ 】の部分に英数字で「number」などの名前をつけて、【 任意の表示名 】のところには、プロフィール編集画面上に表示させたい項目名を「電話番号」などのように入力します。

    $contactmethods['number'] = '電話番号';

    パラメータの部分に英数字で付けた名前は、プロフィールの情報をブログ上に呼び出すのに必要になります。これで連絡先情報にいくらでも好きな項目を追加させることができますね。
    自由に著者連絡先情報を追加

    投稿記事にプロフィールの詳細情報を表示させる

    これで準備は OK です。あとは、入力したプロフィールの項目が、ちゃんと投稿者別に表示されればいいんですが、どうも Twenty Eleven の場合デフォルトじゃ表示してくれないみたいです。なので色々カスタマイズする必要があります。

    プロフィールの連絡先情報など表示させるタグ

    基本的に、著者の情報を表示させるテンプレートタグはこちらです。

    <?php the_author_meta( 'パラメータ', 'ユーザーID' ); ?>

    ユーザーID は、ループの中で使う場合は指定する必要がないとなっています。つまりループ内でこのタグを使用した場合は、投稿者の ID が自動的に適用されるということになります。
    ここでは投稿した人のユーザーID をそのまま反映してくれればいいので、指定する必要はないということになります。
    例えば Twitter の ID を表示させる場合は、

    <?php the_author_meta( 'twitter' ); ?>

    Facebook の ID を表示させる場合は、

    <?php the_author_meta( 'facebook' ); ?>

    ということになります。パラメータの部分は、先ほどfunctions.phpの中で指定したパラメータを入力します。Twitter の ID は【 twitter 】、Facebook は【 facebook 】、Google+ は【 google_plus 】、電話番号は【 number 】にしてましたね。
    これらは先ほど任意で指定したものなので、好きなように指定できますが、デフォルトで決まっているパラメータもいくつかあります。
    例えば、、、

    • メールアドレス ⇒ user_email
    • ウェブサイトURL ⇒ user_url

    などがそれぞれのパラメータになります。

    連絡先情報タグの使い方

    では実際どうやって表示させるのか?
    表示させる方法はいたって簡単で、上記のタグを差し込めば、その場所にプロフィールの連絡先情報に入力した内容が表示されるというわけです。
    ただ、ソーシャルメディア系の連絡先情報はあくまでも ID なので、それを表示させてもいまいち機能してくれません。ですので、それぞれの ID は各ソーシャルメディアのソーシャルプラグインと組み合わせて使う必要があります。
    例えばTwitterのフォローボタンを表示させたい場合、フォローボタンのタグのIDの部分に先ほどの連絡先情報のテンプレートタグを埋め込みます。

    <a class="twitter-follow-button" href="https://twitter.com/(ココがTwitterのIDなので、テンプレートタグに置き換える)" data-show-count="false" data-lang="ja" data-show-screen-name="false">@フォローする</a>
    <script type="text/javascript">// <![CDATA[
    !function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");
    // ]]></script>

    上記は Twitter のフォローボタンのタグですが、このタグの中にあるID部分をTwitterのIDを吐き出してくれるテンプレートタグ

    <?php the_author_meta( 'twitter' ); ?>

    に置き換えると、記事の投稿者に合わせて Twitter の ID が適用されて、投稿者用のフォローボタンとして表示されるようになります。
    Facebook や Google+ なんかも同じで、ソーシャルボタンを取得すると必ずIDに該当する部分がありますので、そこを該当するテンプレートタグに置き換えればユーザーが自分のプロフィール連絡先情報に入力したIDが適用され、投稿者ごとにソーシャルボタンのリンク先も変えることができるというわけです。

    執筆者のプロフィールを表示させるテーマファイルは?

    あとは、プロフィールに表示させたいこれらのタグをどこに書き込めばいいのか、ということですが、これはカスタマイズのしようによってはいくつか方法がありそうですが、今回は最も簡単そうなパターンをご紹介しておきます。

    (1) content-single.php内の著者情報に関する記述

    テーマファイルの【 content-single.php 】を開きます。すると、55 行目辺りから【 author-info 】というidが指定されているのが分かると思います。ここら辺が著者情報に関する記述のようですね。そこだけ抜き出してみると以下のようになっています。

    <div id="author-info">
    <div id="author-avatar"> /* ▼ この下のPHPタグでアバター画像を表示させています。 */
    <?php echo get_avatar( get_the_author_meta( 'user_email' ), apply_filters( 'twentyeleven_author_bio_avatar_size', 68 ) ); ?>
    </div><!-- #author-avatar -->
    <div id="author-description">
    <h2><?php printf( __( 'About %s', 'twentyeleven' ), get_the_author() ); ?></h2> /*「(ユーザー名)の紹介」と表示されます。*/
    <?php the_author_meta( 'description' ); ?> /* プロフィール情報の内容が表示されます。*/
    <div id="author-link">
    <a href="<?php echo esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ); ?>" rel="author">
    <?php printf( __( 'View all posts by %s <span class="meta-nav">&rarr;</span>', 'twentyeleven' ), get_the_author() ); ?></a> /* ここのリンクは当該ユーザーが書いた記事のアーカイブページ(author.phpにて出力)へリンクしています。:?
    </div><!-- #author-link -->
    </div><!-- #author-description -->
    </div><!-- #author-info -->

    (2) 著者情報を編集してみる

    早い話が上記の部分にテンプレートタグを書き込めば表示されます。書き込む場合は好みにもよりますが、【 <div id=”author-description”> 】の間がいいでしょう。かつ、独自に追加した部分に関してはレイアウトを考慮して、別途idを指定しておいた方がいいと思いますし、ソーシャルプラグインを表示させる場合は、リスト表示にした方がいいと思います。
    例えば、、、

    <div id="author-info">
    <div id="author-avatar">
    <?php echo get_avatar( get_the_author_meta( 'user_email' ), apply_filters( 'twentyeleven_author_bio_avatar_size', 68 ) ); ?>
    </div><!-- #author-avatar -->
    <div id="author-description">
    <h2><?php printf( __( 'About %s', 'twentyeleven' ), get_the_author() ); ?></h2>
    <?php the_author_meta( 'description' ); ?>
    /* ▲ ここまでは変更なし ▲ */
    /* ▼ 以下を追記 ▼ */
    <div id="contact-info"> /* CSSでデザインしやすいように任意でつけたid */
    <ul> /* リスト形式にした方が、表示がきれいになるという実感があります。*/
    <li><a href="mailto:<?php the_author_meta( 'user_email' ); ?>">メールを送る</a></li> /* ユーザー情報のメールアドレスを呼び出して、メーラーが立ち上がるようにしています。*/
    <li>
    <a class="twitter-follow-button" href="https://twitter.com/<?php the_author_meta( 'twitter' ); ?>" data-show-count="false" data-lang="ja" data-show-screen-name="false">@フォローする</a>
    <script type="text/javascript">// <![CDATA[
    !function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");
    // ]]></script>
    </li>
    /* ▲ 上記はTwitterのフォローボタンのタグですが、TwitterのIDを指定する箇所がテンプレートタグになっていて、ユーザーのプロフィールに入力したTwitterIDの内容が適用されるようになっています。*/
    <li><?php the_author_meta( 'number' ); ?></li> /* ここは先ほど追加した電話番号を呼び出しています。*/
    <ul>
    </div>
    /* ▲ 追記はここまで▲ */
    /* ▼ 以下変更なし ▼ */
    <div id="author-link">
    <a href="<?php echo esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ); ?>" rel="author">
    <?php printf( __( 'View all posts by %s <span class="meta-nav">&rarr;</span>', 'twentyeleven' ), get_the_author() ); ?>
    </a>
    </div><!-- #author-link	-->
    </div><!-- #author-description -->
    </div><!-- #author-info -->

    あとは、必要に応じてテンプレートタグを埋め込んで行けば、ユーザープロフィールに入力した情報が、執筆者に合わせて表示されるというわけです。
    連絡先情報を追加した著者プロフィール
    これで複数ユーザーで記事を投稿していっても、個々人のアピールもでき、それぞれが読者とのつながりも生み出せて、運用の幅がひろがるのではないでしょうか?
    ちなみに、リスト形式で追加した項目を CSS 側で編集したい場合(文字色や大きさを変えたりなど・・・)は、

    • #contact-info
    • #contact-info ul
    • #contact-info li
    • #contact-info li a

    などで指定できます。
    ぜひ活用してみてください。

    参考にさせて頂いたブログ記事

    ー WordPress のよくあるカスタマイズコード functions.php 多め
    ありがとうございました!

  • Twenty Elevenのヘッダー右上に連絡先やお問い合わせリンクを画像で表示させる方法

    WordPress に限らず、ホームページをビジネス活用したいなら、右上に連絡先情報を表示させるのは、もはや必須のカスタマイズといっても過言ではないでしょう。法人に限らず、小さな商店や病院・塾・仕業関係など、ビジネス活用を目的としたほとんどのウィブサイトは、右上にお問い合わせ方法や連絡先の情報が記載されています。
    そこで、こちらの「ヘッダー右上に連絡先やお問い合わせリンクを表示させる方法」という記事にて、右上に連絡先情報を表示する方法をまとめました。
    WordPress の Twenty Eleven というテーマをカスタマイズする方法ですが、他のテンプレートでも考え方は同じなので、応用できると思います。

    連絡先公開にはリスクもある

    しかし、連絡先情報を公開したいけど、色々不安な点もあると思います。例えばメールアドレスをそのまま記載すると、メールアドレス回収ロボットに拾われてしまう可能性があります。するとスパムメールや営業メールが届きやすくなってしまいます(なのでロボットに拾われないようにアドレスの@を、★などの記号で表示させている人も多いですよね)。
    また、電話番号や住所だって回収されないとも限りません。ビジネスをするからには連絡先の公開は当然ですが、それをそのまま公開すると検索対象にもなりますし、小さな個人商店やフリーで活動している方、または副業でビジネスをしている方など、公開をためらう人もいると思います。

    連絡先情報を検索されないようにする方法

    そこで、電話番号や住所などを文字(テキスト情報)としてではなく、画像として公開することで、検索対象やロボットの回収対象から逃れようという方法があります。画像なので、ファイル名から連絡先だと分かってしまったり、alt などでテキスト情報と関連づけていない限り、今のところ Google 先生にも発見されませんし、人の目でしか確認できないということになります。

    最近聞いた情報によると、もはや Google は画像として表示されている文字も読み取ることができるとのこと。画像であっても、ちゃんとしたフォントで書かれているものは読み取ってしまうので、検索対象になるかもしれません。
    手書きで書きなぐられた文字ならまだしも、パソコンで作った画像の文字ならほぼ確実に分かってしまうでしょうね。
    なので、この方法は気休め程度に考えておいた方がいいと思います。

    Twenty Elevenのヘッダーに画像を用いる時の注意点

    ただ、Twenty Eleven のヘッダー部分に、ヘッダー画像以外の画像を挿入すると、ちょっと困ったことになるかと思います。
    ポイントは “ヘッダー画像以外の画像” という部分。普通はヘッダーに 2 つ以上の画像を挿入することなんてないかもしれません。しかし今回のようにお問い合わせ情報を画像で表示させる場合、その画像にはお問い合わせページへのリンクなど、本来ヘッダー画像がリンクしているトップページとは違うリンクを貼らなければなりません。

    ヘッダーにお問い合わせ情報を画像で挿入

    その際に困った事にならないように CSS を整える必要があります。この記事は主にその話題です。

    とりあえずヘッダー部分に画像を埋め込んでみる

    ヘッダー部分に画像を表示させようとするとどうなるのか?
    ここでは、いわゆるデフォルトで設定できる画像とは別に、ヘッダー部分に直接イメージタグを書き込んだ場合、という意味です。例えば以下のように【 header.php 】を開いて、タイトル部分の下にでもイメージタグを書き込んでみましょう。

    <header id="branding" role="banner">
    	<hgroup>
    		<h1 id="site-title"><span><a href="<?php echo esc_url( home_url( '/' ) ); ?>" title="<?php echo esc_attr( get_bloginfo( 'name', 'display' ) ); ?>" rel="home"><?php bloginfo( 'name' ); ?></a></span></h1>
    		<h2 id="site-description"><?php bloginfo( 'description' ); ?></h2>
    	</hgroup>
    /* ▼ hgroupの下にイメージタグを挿入 */
    <img alt="" src="(イメージのURL)" />

    イメージは 240×180 の大きさで、こちらの画像を用意しました。

    お問い合わせ画像デモ用

    すると・・・

    大きすぎるお問い合わせ画像

    使用している画像は、240×180 の大きさです。にも関わらず、サイトの横幅(1000px)に合わせてかなり拡大されています。
    なぜ、こんなことになってしまうのでしょうか?

    ヘッダー画像は CSS でどのように指定されているのか?

    ヘッダー部分に挿入した画像は、みな一様に横幅 1000px に矯正されてしまうみたいですが、これはどこで指定されているのでしょうか? 親テーマの CSS を見てみると、545 行目辺りに【 #branding img 】という項目があります。

    #branding img {
    	height: auto;
    	margin-bottom: -7px;
    	width: 100%;
    }

    これは、【 #branding 】という id で指定されている範囲にある img タグに該当するもの全てに適用されます。img ってことはイメージファイル全てってことですね。そのため、100% とか、マージンの値とか、デフォルトのヘッダー画像だけでなく、自分でタグ打ちして挿入した画像にも適用されてしまい、サイトの横幅 1000px(100%)に合わせて画像が拡大表示されてしまっているわけです。
    まぁヘッダーは画像を 1 枚しか使わない場合がほとんどだと思いますので、あまり問題に感じた事のある方も少ないかもしれません。しかし、これはロゴだろうがなんだろうが、ヘッダー内で画像(img タグ)を使う際は影響を受けてしまう記述なので、気をつけておかないといけません。

    ヘッダーに挿入した2枚目の画像のレイアウトを整える

    さて、原因は分かりましたが、問題はどう解決するかです。いくつか方法はあると思いますが、今回は【 #branding img 】の記述はいじらずに、新たに追加した画像(連絡先情報用の画像)だけに別途スタイルを指定する方法で行きたいと思います。

    (1) イメージタグを<div>で囲む

    まずはイメージタグに id を指定しましょう。【 header.php 】に追記したイメージタグを、以下のように<div>で囲ってしまえば OK ですね。あと、別にお問い合わせフォームのページを用意している場合は、リンクタグを埋め込んでおきましょう。

    <header id="branding" role="banner">
    		<hgroup>
    			<h1 id="site-title"><span><a href="<?php echo esc_url( home_url( '/' ) ); ?>" title="<?php echo esc_attr( get_bloginfo( 'name', 'display' ) ); ?>" rel="home"><?php bloginfo( 'name' ); ?></a></span></h1>
    			<h2 id="site-description"><?php bloginfo( 'description' ); ?></h2>
    		</hgroup>
    /* ▼ divで囲ってidを指定する */
    	<div id="contact"><a href="(お問い合わせフォームページのURLなど)"><img alt="" src="(イメージのURL)" /></a></div>

    (2) 追記したidのレイアウトを CSS で調整する

    指定した id をスタイルシート側で調整していきましょう。右上に表示させたいので、回り込み(float)を使ったり、大きさの指定をしたり、余白の調節をしたりします。

    #contact {
    	float: right; /* 回り込み指定 */
    	width: 24%; /* イメージのサイズに合わせて */
    	margin-right: 7.6%; /* お好みで余白を指定 */
    	padding-top: 3.65625em; /* お好みで余白を指定 */
    }

    横幅はピクセル値に合わせてパーセンテージで指定した方がいいと思います。パーセンテージで指定しておくと、ブラウザの大きさやサイトを拡大・縮小に合わせてバランスを保ってくれます。
    Twenty Eleven の場合は 100% = 1000px なので、横幅 240px の画像を用意した場合は 24% にしておけば OK です。

    (3) タイトル部分の余白を調整する

    画像を右へ回り込ませても、タイトル部分がそのままなので、回り込みを指定する必要があります。タイトル部分にも横幅やマージンが指定されているため、画像がうまく回り込んでくれない可能性があります。Firefox のプラグイン、Firebug などで確認しながら適切な余白を指定してください。

    #branding hgroup {
    	float: left; /* 回り込み指定 */
    	width: 60%;
    	margin-right: 0px;
    }
    /* ▼ サイトタイトルや説明書きの余白も無くしました */
    #site-title {
    	margin-right: 0px;
    }
    #site-description {
    	margin-right: 0px;
    }

    連絡先情報のレイアウト調節

    まとめ

    これで右上に連絡先情報を画像で表示させることができました。もし、あなたがTwenty Elevenを使っているならコピペですぐにできるように、以下に使用タグをまとめておきます。ぜひ役立ててください。

    header.php の変更内容

    <header id="branding" role="banner">
    	<hgroup>
    		<h1 id="site-title"><span><a href="<?php echo esc_url( home_url( '/' ) ); ?>" title="<?php echo esc_attr( get_bloginfo( 'name', 'display' ) ); ?>" rel="home"><?php bloginfo( 'name' ); ?></a></span></h1>
    		<h2 id="site-description"><?php bloginfo( 'description' ); ?></h2>
    	</hgroup>
    /* ▼ hgroupの下にイメージタグやリンクタグを挿入 */
    <div id="contact">/* idの指定も忘れずに(名称は任意で) */<a href="(お問い合わせフォームページのURLなど)"><img alt="" src="(イメージのURL)" /></a></div>

    style.css の変更内容

    #contact {
    	float: right; /* 回り込み指定 */
    	width: 24%; /* イメージのサイズに合わせて */
    	margin-right: 7.6%; /* お好みで余白を指定 */
    	padding-top: 3.65625em; /* お好みで余白を指定 */
    }
    #branding hgroup {
    	float: left; /* 回り込み指定 */
    	width: 60%; /* サイトタイトルなどの長さに合わせて調節 */
    	margin-right: 0px; /* お好みで余白を指定 */
    }
    /* ▼ 画像を回り込ませる余裕を確保できるように調節 */
    #site-title {
    	margin-right: 0px; /* お好みで余白を指定 */
    }
    #site-description {
    	margin-right: 0px; /* お好みで余白を指定 */
    }
  • 【重要】WordPressテーマをカスタマイズするなら子テーマを作れ!

    ちょっと前の話題になりますが、WordPress が 3.4 にバージョンアップしてまして、デフォルトで入っているテーマ、Twenty Eleven もバージョンアップしたようです。
    で、Twenty Eleven を 1.4 へとバージョンアップしようと思ったのですが、なんか怪しい・・・。そう、今まで Twenty Eleven を直接いじっていたものだから、バージョンアップすると上書きされてカスタマイズした内容が全て消えてしまうのです。
    じゃあバックアップ取ってから、アップグレードした後にスタイルシートだけもう一度上書きすればいいか〜とも思えるのですが、実はもっとスマートな方法があるようです。WordPress のテーマをカスタマイズする際は本来こうしておくのが定石、基本だという方法があるのです。
    それが、

    子テーマを作る

    という方法。
    これ、基本。常識だそうですね。。。今まで Twenty Eleven を直接いじってましたよ。バージョンアップなんてそんなにないだろうと高をくくっていましたからね。
    ですが、今回みたいなアップグレードがある時にいちいち上書きされていたら修正が大変なので、効率的にも『子テーマ』を作った方がいいようです。なので、 Twenty Eleven のバージョンアップの前に、今らさらですが、子テーマへの引っ越し作業をしてみました。

    子テーマの基本

    まずは子テーマについて簡単にまとめておきます。
    子があるのだから親があるわけですが、まず親テーマとはあなたがカスタマイズしたいテーマのことです。ここでは Twenty Eleven としておきましょう。
    でもカスタマイズしたいといっても、テーマの 1 から 10 まで全て書き換えたいなんて思うことは少ないはずです。基本的には style.css と、functions.php と、あとページ用のテンプレートファイルが少々、、、といったところではないでしょうか?
    そこで、自分が書き換えたいファイルだけを寄せ集めたテーマフォルダを新たにつくって、そこで親テーマの変更したいファイルだけを上書きしてしまおう、というのが子テーマです。
    例えば、Twenty Eleven(フォルダ名 twentyeleven )の子テーマ、Child(フォルダ名 child )というのを作ります。そしてその子テーマフォルダの中に style.css というスタイルシートを作成すると、子テーマのスタイルで指定した内容が親テーマに反映されるというわけです。
    カスタマイズした内容は、全て子テーマである Child の中にあるので、親テーマである Twenty Eleven をアップグレードして上書きしたとしても、カスタマイズした内容はびくともしないのです。子テーマを構成するファイルもカスタマイズに必要な分だけなので、すっきりして扱いやすくなります。
    WordPressの親テーマと子テーマの関係
    これらの変更は、スタイルシートだけではなく子テーマ内にあるファイルが優先的に反映され、functions.php や、header.php など、親テーマを一切いじらずに好きなようにカスタマイズすることができます。

    子テーマの設定方法(とりあえずは CSS だけ)

    では実際に子テーマを作る方法ですが、これがあっけないくらいに簡単でした(といっても、ちょっとだけつまづいてしまいましたけど……)。
    まずは、子テーマ用のフォルダ(ディレクトリ)を用意しましょう。フォルダ名はなんでも構いませんが、ここでは【 child 】にしておきましょう。そしてこのフォルダは【 themes 】の直下に置きます。つまり親テーマである【 twentyeleven 】というフォルダと同じ階層ということです。
    子テーマのフォルダを作成

    子テーマ内にスタイルシートを作成する

    そしてこの【 child 】の中に【 style.css 】を 1 つ作成しましょう。そして以下のようにスタイルシートに記述します。

    /*
    Theme Name: Child
    Template: twentyeleven
    */

    とりあえず必須項目は上記の 2 点のみです。Theme Name は任意で付けてください。そして Template という部分は、必ず親テーマのフォルダ名(ディレクトリ名)にするようにしてください。Twenty Eleven を親テーマとする場合は【 twentyeleven 】です。
    子テーマを認識させるための必須項目は  2 点ですが、他にも Author とか Description とか、色々書いても OK です。
    子テーマのスタイルシートを作成

    子テーマが表示されない場合、もしかすると・・・

    これらの設定が済んだら、1 度 WordPress の管理画面(ダッシュボード)を見てみてください。外観のテーマ管理画面の中に、今作成した Child というテーマが表示されているはずです。
    子テーマの確認
    実は、素人すぎてここでちょっとつまづいてしまったポイントがありました。子テーマをアップしてもなかなか認識してくれなかったのですが、その原因はスペースの使い方でした。
    子テーマの CSS にテーマの名前( Theme Name )とフォルダの指定( Template )をしたと思いますが、ここの Theme Name: と Child の間、Template: と twentyeleven の間が全角スペースになっていると、子テーマとして認識してくれませんでした(「親テーマが見つかりません」みたいなメッセージが……)。
    全角のスペースを取っていた事が原因のようです。
    他にも、Template: で指定すべきフォルダ名に大文字が混ざっていたりするのも、認識できない原因になります(正確には、大文字どうこうより、フォルダ名通りであること。つまり Twenty Eleven ではなく、twentyeleven というサーバー上のフォルダ名を指定すること!)。

    子テーマを反映させる

    さて、無事テーマ管理画面で子テーマとして作成したテーマが表示されていたら、子テーマを【 有効化 】してみましょう。無事子テーマが利用中になったはずです。
    そしてブログを見てみると・・・
    子テーマ反映後のブログ
    なんと、レイアウトがめちゃくちゃです。
    それもそのはず、PHP などのテンプレートファイルは親テーマのものをそのまま使っていますが、スタイルシート( style.css )に関しては、先ほど子テーマの中にファイルを用意しましたのでこちらが適用されています。
    子テーマのスタイルシートには、まだ何も書き込んでいませんので、デザイン的な部分は簡素になってしまったわけです。

    親テーマの CSS をとりあえず読み込む

    スタイルシートは子テーマフォルダ内のものが適用されているわけですが、最初からスタイルを指定していくのは面倒です。ある程度は親テーマと同じスタイルを適用しておきたいはずです。
    いちいち全部をコピペしてもいいのですが、以下のように書いておくと、親テーマのスタイルシートをインポートしてくれます。

    /*
    Theme Name: Child
    Template: twentyeleven
    */
    @import url('../twentyeleven/style.css');

    ただ、ぼくの場合はもう既に親テーマのスタイルシートを結構いじっていましたので、全部コピペしました。
    基本的には、上記のような @ から始まる記述を 1 行入れて親テーマをインポートし、カスタマイズしたい箇所の id や class を確認して指定しなおすと、子テーマのスタイルが適用されるようになります。
    例えば、Twenty Eleven の場合、タイトルの文字に関して指定している id は【 #site-title a 】になりますので、子テーマのスタイルシートで【 #site-title a 】の文字色を赤に指定すると、タイトルの文字色が赤になるというわけです。

    /*
    Theme Name: Child
    Template: twentyeleven
    */
    @import url('../twentyeleven/style.css');
    #site-title a {
    	color: #f00;
    }

    これで子テーマのスタイルシートが適用されるようにしておけば、親テーマの Twenty Eleven をバージョンアップしても大丈夫です。
    他にも functions.php とか、各種テンプレートファイルの header.php や footer.php などを子テーマを用いる事で上書きできます。

    ただし、子テーマフォルダ内に functions.php を作成する場合は注意が必要です。以下の記事を確認してください。

    【注意】functoins.phpをWordPressの子テーマに追加する場合

    あと、子テーマフォルダの中にイメージフォルダ( images など)も追加し、その中に画像をアップロードするようにしておくと、CSS で画像を指定する際にイメージフォルダ内の画像を相対パスで指定できるので、便利がいいと思います。

  • WordPressが真っ白になった場合の対処方法

    WordPress が 3.4 にアップグレードして、テーマカスタマイザーなるものが使えるようになったようですが、アドミンバーから【カスタマイズ】をクリックすると、またしても HTTP 500 のエラーの表示が・・・。
    テーマカスタマイザーのエラー
    ワードプレスのアップグレードの時と同じパターンかな?・・・ということで、きっとプラグインのせいなんだろうな〜と思ってとりあえずプラグインを全停止してみたら、ちゃんとテーマカスタマイザーが使えるようになりました。

    テーマカスタマイザーがエラーになる原因は?

    では、一体どのプラグインが原因なのか? ということになってきます。
    怪しいのは【Twenty Eleven Theme Extensions】ですね。これは Twenty Eleven の機能を拡張してくれるプラグインです。個別記事ページ(single.php)は通常サイドバーが表示されないんですが、これがあると CSS やテンプレートファイルをいじらずに簡単に個別記事ページにサイドバーを表示してくれたので重宝しておりました。
    でもこのプラグインだけを停止してみると・・・案の定テーマカスタマイザーは正常に動きました。そしてまた Twenty Eleven Theme Extensions を有効化してみると、、、またもやエラー。やっぱりこのプラグインが原因だったようです。
    今のところ(2012.6.16現在)、Twenty Eleven Theme Extensions は最新バージョンの WordPress には対応していないようで、テーマカスタマイザーはとりあえず使えないようです。
    もし、あなたが Twenty Eleven を使っていて、WordPress3.4 のテーマカスタマイザーの機能が利用できないとお困りの場合は、もしかしたら Twenty Eleven Theme Extensions が有効化されているのかもしれないですね。
    ぼくの場合は今のところテーマカスタマイザーは使いそうにないので、とりあえずプラグインは有効化したままにしました。

    不具合発生時は問題のプラグインをチェックしよう

    今回の件に限らず、何か不具合があって WordPress が表示されないなどの不具合がおきた場合。プラグインが原因の可能性が考えられますので、まずは以下の手順を試してみましょう。

    (1) プラグイン一度全部停止させる

    プラグインの影響で不具合が出ているかどうかを確認するため、一旦全てのプラグインを停止します。プラグイン一覧のページで全てのプラグインにチェックを入れ、一括停止すれば簡単ですね。

    管理画面(ダッシュボード)へログインできない場合

    もし不具合の影響で管理画面(ダッシュボード)にログインできない場合は、FTP から直接サーバー上の plugins フォルダへアクセスし以下の手順でプラグインを停止状態にします。

    【plugins】のフォルダ名を変更 > 管理画面へアクセス > 変更したフォルダ名を【plugins】に戻す

    これで WordPress の管理画面へログインできるようになるはずです。この状態でプラグインのページに行くと、停止状態のプラグインが確認できると思います。

    (2) 一旦サイトをチェック

    ここでサイトをチェックしましょう。不具合が出ていた部分はどうなっていますか? 解消されていればやはりプラグインが原因だったということになります。変化がない場合は、、、他の原因ということになるので、ググって情報を集めてみましょう・・・。

    (3)1個1個有効化してチェック

    改めてプラグインのページに戻り、1 つ 1 つ有効化してはサイトをチェックしていきます。いずれ不具合が発生するプラグインを特定できるはずです。
    1 個 1 個チェックするのは面倒かもしれませんが、たぶん今のところこれしか方法がないと思われますので、根気づよく頑張ってください。
    怪しいプラグインから試してみるのもアリです。ぼくはそれですぐに判明できましたし。
    また複数のプラグインが影響しあっている可能性もあります。1 つ発見したからといって安心しないように。

    2012/7/28 追記
    この WordPress サイト(テーマはTwenty Eleven)に関しては、明らかに Twenty Eleven Theme Extensions が原因と思われたテーマカスタマイザーの不具合ですが、どうも別で管理しているWordPress サイトでは Twenty Eleven Theme Extensions を有効化していても問題なく機能していました。
    となると何か他に根本的な原因があるのかもしれません・・・。
    とにかく、今回学んだ事は、アップデートで不具合が合った時は、プラグインを停止させてチェックしてみるということです。
    ただ、よくよく WordPress の Codex に、WordPress を手動でアップグレードする際は必ずプラグインを停止させてください、と書かれていました。でもまぁ自動アップグレードの場合も基本は同じでしょう。
    他にも色々と大事なことがたくさん。ちゃんと基本から押さえておかないとダメですね。
    > WordPress のアップグレード/詳細
  • WordPress3.4にアップグレードしたら管理画面に行けなくなった件

    6 月 15 日。WordPress3.4 に更新できるっていうもんだから、アップグレードしてみたら、管理画面(ダッシュボード)に行けなくなっちゃいましたよ。
    その関係で FTP 側から色々いじっていたのですが、ファイルを全消去したりアップロードしなおしたりしていたので、一時的にアクセスできない時がありました。すいません。
    で、他のワードプレスサイトはバージョンアップしても問題なかったのですが、このブログだけ、表は見えるけど裏は見れない状態・・・。管理画面にアクセスしようとすると、HTTP 500 というエラーが出て来てました。
    バックアップとってなかったから「あ〜やっちまったな〜・・・どうしよっかな〜」てな感じでしたが、ググってみると、早速同じような状況になっている方々を発見。記事を参考にさせて頂き無事解決しました。
    いや〜ありがとうございます! 助かりました。

    プラグインがくせ者でした

    原因はプラグインだったようで、『DB Cache Reloaded Fix』というプラグインが原因だ!という情報をいくつか見つけたのですが、残念ながらこのブログには該当しませんでした。
    そしたらちゃぼすけさんという方のブログで、原因となるプラグインを 1 個 1 個チェックする方法がご紹介されていましたので、試してみたらサクッと解決できました。
    ぼくの場合、エラーになったプラグインは【WordTwit】と【Wp Custom Fields Search】でした(なんと2つも!)。どちらも使わないので削除しましたよ。
    もし、同じようにつまづいている方がいましたら、ぜひ参考にしてみてください。あと、焦らないようにアップグレード前はバックアップは取っておくものですね。

    参考にさせて頂いたブログ

    ― ワードプレスのバージョンアップでエラー時の対処方法

  • Twenty Elevenのヘッダー右上に連絡先やお問い合わせリンクを表示させる方法

    ビジネス用のサイトや企業のサイトなど、その多くが同じような構成をしていますが、その構成の中でも大事なポイントがいくつかあります。その内の一つが、サイトの右上に電話番号や住所などの連絡先情報を掲載したり、お問い合わせフォームへのリンクを設置している点です。
    真偽のほどは分かりませんが、SEO 的にも右上に連絡先情報を表示することは推奨されているのだそうな。また、右利きの人が多いので右側にクリックされやすいものを持ってくるというのは有効なようです(広告も然り)。
    それに“右上にはお問い合わせ情報がある!”というのも、結構浸透している気がしますし、訪問者が「お問い合わせしたいな・・・」と思い立った時に、無意識に右上を確認する可能性も高いと言えるでしょう。そういった点からも、右上に連絡先やお問い合わせリンクを表示させるのは有効だと思います。

    ヘッダースペースにタイトルとは別の内容を表示させなければならない

    たぶん、カスタマイズする上で一番ひっかるんじゃないだろうかという点が、これです。
    タイトルが左側、連絡先などの情報やリンクは右側に表示させ、かつタイトルをクリックしたらトップページへ、連絡先情報からはお問い合わせフォームへリンクさせたいわけです。
    一枚のヘッダー画像にタイトルとお問い合わせ情報を盛り込んでもいいのですが、これだとリンク先を分けることができません(ヘッダー画像をクリックすると基本的にはトップページへ移動します)。リンクは貼らずに、電話番号を表示させるだけなら構わないのですが、今回はタイトルリンクと連絡先情報のリンクを分ける事を目的に話を進めて行きたいと思います。
    そういうわけで、今回目指す理想の形はこんな感じです!

    連絡先情報表示の理想

    サイトの右上(タイトル右横)にテキストとして連絡先を表示させる方法

    まずは基本的な感じで、右上に連絡先情報をテキスト表示させてみたいと思います。ちなみに取り扱っているテンプレートは Twenty Eleven ですが、基本的な考え方は一緒なので、ほぼ全てのテンプレートでも同じようにできるかと思います。

    これから行うカスタマイズは、必ず【 子テーマ 】を作成してから行ってください。子テーマについてはこちら。

    【重要】WordPressテーマをカスタマイズするなら子テーマを作れ!

    まず該当するテンプレートファイルは【 header.php 】ですね。PHP とは言っても、ホームページの基本は HTML で書かれているので、普通に HTML の感覚で文字やタグを打ち込んでいきましょう。場所はタイトルスペースに関して指定している【 hgroup 】の後がいいですね(Twenty Eleven の 76 行目辺りです)。

    <header id="branding" role="banner">
    	<hgroup>
    		<h1 id="site-title"><span><a href="<?php echo esc_url( home_url( '/' ) ); ?>" title="<?php echo esc_attr( get_bloginfo( 'name', 'display' ) ); ?>" rel="home"><?php bloginfo( 'name' ); ?></a></span></h1>
    		<h2 id="site-description"><?php bloginfo( 'description' ); ?></h2>
    	</hgroup>
    	0120-222-3333 <!-- ここに電話番号を入力しただけ -->

    とりあえず電話番号を打ち込んでみました。特に class や id も指定していない生な感じです。するとこんな感じでタイトルとヘッダー画像の間に電話番号が表示されます。

    header.phpに電話番号を書き込む

    そう、住所だろうが電話番号だろうが、ただ書き込めばいいだけなんですね。簡単すぎます。でもこれじゃあ目的とする表示方法じゃないしかっこ悪いので、CSS なんかでレイアウトを指定していきます。と、その前に右上の検索窓が邪魔なので消しちゃいましょう。

    WordPressテーマTwenty Elevenのヘッダーレイアウトの変更方法

    下準備:header.phpへの指定

    連絡先は連絡先だと分かるように、Google さんに教えてあげましょう!
    <address> というタグがあります。「連絡先や問い合わせ先を示す場合に使用する」となっています。というわけで、まずはこのタグで連絡先を囲ってあげます。そしてカスタマイズしやすいように電話番号に class を指定しましょう。

    <header id="branding" role="banner">
    	<hgroup>
    		<h1 id="site-title"><span><a href="<?php echo esc_url( home_url( '/' ) ); ?>" title="<?php echo esc_attr( get_bloginfo( 'name', 'display' ) ); ?>" rel="home"><?php bloginfo( 'name' ); ?></a></span></h1>
    		<h2 id="site-description"><?php bloginfo( 'description' ); ?></h2>
    	</hgroup>
    <!-- ▼ 連絡先情報をaddressタグで囲って、各情報にも class や id を指定 ▼ -->
    	<address>
    		<div class="tel">0120-222-3333</div>
    		<div class="hours">営業時間 9:00〜18:00</div>
    	</address>

    以上で【 header.php 】側の変更は終わりです。必要があれば適宜電話番号以外の情報も盛り込んでいってください。その際連絡先に関しては <address> 〜 </address> のタグの中に書き込むようにしてください(営業時間は別枠がいいかも・・・)。

    連絡先情報を右上に持って行くためのCSSの指定方法

    さて、続いて CSS 側の設定です。子テーマの【 style.css 】を開いてください。理屈的なことを言うと、【 hgroup 】と【 address 】の部分を回り込ませればいいということになります。
    まずは【 #branding hgroup 】です。親テーマの style.css では 79 行目にあります。ここのタイトル部分は左側に表示させたいので、【 float: left; 】で回り込ませます。さらに横幅は 100% になっているので、右側に連絡先を表示させるスペースを確保するために横幅を狭めておきましょう。以下の例では 68% まで縮めましたが、右側に連絡先が入るスペースができればいくらでも構いません。
    また、マージンも左右に 7.6% ずつスペースを取っているので、ここを変えてもいいと思います。具体的には、【 margin: 0 1% 0 7.6%;】のようにして、左マージンは今までの値、右マージンは小さな値にするといいでしょう。

    #branding hgroup {
    	margin: 0 7.6%;
    	float: left;
    	width: 68%;
    }

    そして【 address 】側の指定ですが、ここは【 #branding address 】とすることで指定できます。以下のように追記しておきましょう。

    #branding hgroup {
    	margin: 0 7.6%;
    	float: left;
    	width: 68%;
    }
    #branding address {
    	float: right;
    	width: 16.8%;
    	padding-top: 3.65625em; /* タイトルのpaddingと同じ値にしました */
    }

    するとこんな感じで連絡先を右上に表示させることができます。

    連絡先情報をヘッダータイトル右横に表示

    まぁこのままだと不格好なので、CSS で色々指定して体裁を整えてください。

    うまくいかない場合は余白(マージン)に注意!

    もしかしたら、フロートで回り込みを指定しても、タイトルと同じ列の右横に移動せずに、タイトルの下の列でただ右に移動しただけのように見えることがあるかもしれません。

    連絡先情報がタイトルと同じ高さに回り込んでいない

    ただ、これは hgroup や address の横幅が広すぎて、回り込むスペースが確保されていないことが原因だと思われます。ですので、上記では【 width 】を指定していますが、横幅が合計で 100% を超えるような値にしてはいけないわけです。
    例えば Twenty Eleven の場合、デフォルトでは 100% = 1000px なので、【 hgroup 】が 680px、その余白が左右に 76px ずつで合計 832px あることになります。ですので、【 address 】は残りの168pxよりも小さくなければいけません。これより大きいと 1000px(=100%)を超えてしまって回り込む隙間がありませんので・・・。
    なので、【 address 】 の横幅は 16.8% にしたわけです。
    その他、【 #site-title 】(サイトタイトル)や【 #site-description 】(サイトタイトル下の説明文)でもマージンやパディングといった余白が指定されていますので、それらも含めて間隔を調節しましょう。
    参考までに以下の図を確認してください。

    Twenty Elevenヘッダーの余白

    赤はマージン(margin)、青はパディング(padding)、緑は横幅(width)を表していて、ほとんどが Twenty Eleven のスタイルシート上でデフォルトとして指定されています。
    記載場所もばらばらなので、各々変更したい場合は上の図を参考に id などで検索してみてください。

    回り込んだら元に戻す

    あと、忘れては行けないのが回り込みの解除ですね。恐らくヘッダータイトルの後にはヘッダー画像が来ている人が多いかと思いますので、【 #branding img 】(親テーマでは 545 行目)の部分に【 clear: both; 】を指定しておきましょう。とは言ったものの、指定しなくてもレイアウトは崩れなさそうなので、無くてもいいのかもしれません。けど念のため・・・。
    ついでに言うと、Twenty Eleven は hgroup、address ともに、既に【 display: block; 】というようにブロック要素が指定されています。ですので、フロートが使えるんでしょうね〜・・・。

    サイトの右上(タイトル右横)からお問い合わせフォームへリンクさせる方法

    今度はリンクを指定したいと思います。方法は前述と同じで、テキストの部分にリンクタグを指定すればいいだけです。

    <header id="branding" role="banner">
    	<hgroup>
    		<h1 id="site-title"><span><a href="<?php echo esc_url( home_url( '/' ) ); ?>" title="<?php echo esc_attr( get_bloginfo( 'name', 'display' ) ); ?>" rel="home"><?php bloginfo( 'name' ); ?></a></span></h1>
    		<h2 id="site-description"><?php bloginfo( 'description' ); ?></h2>
    	</hgroup>
    	<address>
    		<div class="tel">0120-222-3333</div>
    		<div class="hours">営業時間 9:00〜18:00</div>
    		<div class="contact"><a title="お問い合わせ" href="フォームページのURL">フォームでのお問い合わせ</a></div>
    	</address>

    さらに header.php や CSS の方などを色々カスタマイズすると、こんな感じで表示できます。

    連絡先情報のカスタマイズ

    お問い合わせリンクをボタン風にしたり
    連絡先情報の文字を CSS でカスタマイズする

    上の図のような表示を最終目標として、必要なソースタグなんかをご紹介します。

    header.php の変更内容

    <header id="branding" role="banner">
    	<hgroup>
    		<h1 id="site-title"><span><a href="<?php echo esc_url( home_url( '/' ) ); ?>" title="<?php echo esc_attr( get_bloginfo( 'name', 'display' ) ); ?>" rel="home"><?php bloginfo( 'name' ); ?></a></span></h1>
    		<h2 id="site-description"><?php bloginfo( 'description' ); ?></h2>
    	</hgroup>
    	<address>
    		<div class="address">〒000-0000 ●●市1-1-1</div>
    		<div class="tel">0120-222-3333</div>
    		<div class="hours">営業時間 : 9:00〜18:00(平日)</div>
    		<div class="contact"><a title="お問い合わせ" href="フォームページのURL">フォームでのお問い合わせ</a></div>
    	</address>

    style.css の変更内容

    /* branding内の指定 */
    #branding hgroup {
    	margin: 0 7.6%;
    	width: 48%; /* 横幅を48%まで狭めました */
    	float: left;
    }
    #branding address {
    	float: right;
    	width: 26.8%; /* 横幅を26.8%まで広げました */
    	margin-right: 7.6%; /* バランスを整えるために右マージンを追記 */
    	padding-top: 3.65625em;
    }
    /* サイトタイトルと補足説明のマージンを変更 */
    #site-title {
    	margin-right: 70px; /* デフォルトは270pxでしたが、70pxに */
    	padding: 3.65625em 0 0;
    }
    #site-description {
    	color: #7a7a7a;
    	font-size: 14px;
    	margin: 0 70px 3.65625em 0; /* 右マージンのデフォルトは270pxでしたが、70pxに */
    }
    /* 以下を追記(クラス名はheader.phpと合わせてお好みで変更してください) */
    .address {
    	font-size: small;
    }
    .tel {
    	font-size: xx-large;
    	text-shadow: 1px 0px 2px #666666;
    }
    .hours {
    	font-size: small;
    }
    .contact {
    	margin-top: .5em;
    	text-align: center;
    }
    .contact a {
    	display: block;
    /* ボタンジェネレーターで作成したソースコード */
    	color: #ffffff;
    	font-size: large;
    	padding: 10px;
    	text-decoration: none;
    	-webkit-border-radius: 8px;
    	-moz-border-radius: 8px;
    	-webkit-box-shadow: 0px 1px 2px #666666;
    	-moz-box-shadow: 0px 1px 2px #666666;
    	text-shadow: 1px 1px 3px #666666;
    	border: solid #cacbcc 1px;
    	background: -webkit-gradient(linear, 0 0, 0 100%, from(#42aaff), to(#003366));
    	background: -moz-linear-gradient(top, #42aaff, #003366);
    }
    .contact a:hover {
    	background: #42aaff;
    /* ボタンジェネレーターで作成したソースコードここまで */
    }

    お問い合わせフォームへのリンク部分は、ボタンのデザインが簡単にできるブラウザ上の CSS ジェネレーターを使って作成しました。ジェネレーターでつくったタグをコピペしただけです。
    そのサイトはこちらです。
    > {CSS}Portalのボタンジェネレーター
    ぼくなんかの CSS 素人にはかなり重宝させて頂いているサイトです。こった CSS のデザインが難しいとか、作業時間を短縮したいという方はぜひご活用を。

    お問い合わせリンクに画像を使いたい場合

    住所や電話番号をテキストとして掲載しておくと検索対象になってしまうので、不安に思っていらっしゃる方も多いかと思います。なので、電話番号などを公開したいけど、画像表示で公開したいという方も多いはずです。
    そんな場合は電話番号や住所などの乗った画像を用意してアップロードすればいいのですが、ヘッダーに画像を表示させる場合は CSS 的に注意しないといけないことがあって、たぶん、普通に画像を表示させただけだとレイアウトが崩れたりするかもしれません。
    というわけでレイアウトが崩れないよにヘッダーにヘッダー画像以外の画像を指定する方法を、、、別途まとめたいと思います。

    Twenty Elevenのヘッダー右上に連絡先やお問い合わせリンクを画像で表示させる方法

  • Twenty Elevenのナビゲーションの「次へ」と「→」がズレてしまう件

    Twenty Eleven で個別記事のページを開いたときに、上の方に前の記事や次の記事へのナビゲーションが表示されるかと思いますが、これって、あなたのブラウザではちゃんと表示されていますでしょうか?
    もしかしてこんな感じに見えていませんか?
    ナビゲーションの「前へ」と「次へ」がズレている
    ぼくは Mac を使ってますが、Safari も Chrome も「次へ→」という部分の「次へ」と矢印部分がなぜか改行されて見えてしまうのです。IE環境での表示は確認してませんが、Firefox のみちゃんと一列に表示されています。

    ナビゲーションの「次へ」と「→(矢印)」を
    一列に表示したい!

    つまりこうしたいわけです。
    Twenty Elevenのナビゲーションの理想型
    これは CSS をちょっと変更すればうまく整いました。
    まず Twenty Eleven のテーマファイルの【style.css】を開いてだいたい 1700 行目に差し掛かる辺りから【=Navigation】という部分がでてきます。その最後の方に【Singular navigation】という項目がありますが、その一部を以下のように変更します。
    【該当箇所】

    #nav-single .nav-previous,
    #nav-single .nav-next {
    float: none;
    width: auto;
    }

    【変更後】

    #nav-single .nav-previous,
    #nav-single .nav-next {
    float: left; /* 左に回り込むように指定 */
    width: auto;
    }

    ナビゲーションの「前へ」と「次へ」に関する部分の回り込みが【none】となっていたので、【float: left;】というように左に回り込ませています。こうすると、ナビゲーションの「←前へ」と「次へ→」が一列にきれいに表示されるようになります。
    ナビゲーションの「前へ」と「次へ」が狭まってしまった

    ちょっと気になる点が・・・

    でも、よくよく見ると、「←前へ」と「次へ→」の間が、以前より狭まってしまっていると思いませんか? なので、この間隔を若干広げたいと思います。
    先ほどの箇所のすぐ下にある以下の部分【#nav-single .nav-next】の padding をちょっとだけ広げてみてください。ぼくの場合は 0.5em だったのを 1em にしました。

    #nav-single .nav-next {
    padding-left: 1em;
    }

    これで、このように「前へ」と「次へ」間隔が広がって、元の間隔と同じくらいの表示なります。
    Twenty Elevenのナビゲーションの理想型
    以上です。

  • WordPressにいいね!ボタンを設置する時のOGP設定

    「いいね!ボタン」を設置するからには誰かに押してもらいたいですよね? しかもできればそこからどんどん広がってアクセスが集まればいいと思いますよね?
    Facebook の「いいね!ボタン」は OGP 設定というものをしておかないとあんまり意味がないと言われています。なぜなら、この設定をしておかないと「いいね!」を押されても拡散性が弱くなるからです。友達のタイムライン上に「いいね!」を押したことが表示されないのです。
    他にも、OGP の設定をしていなければ、シェアのされ方や情報の表示のされ方などがあやふやになります。OGP 設定をすることで、記事の抜粋やサムネイル表示もしっかりされるとうわけです。

    OGP 設定の手順

    前回の『「いいね!ボタン」の取得方法』では、手順 3 までをまとめましたので、この記事では手順 4・5・6 についてまとめたいとおもいます。

    【手順】

    1. Facebookのデベロッパー(開発者)として登録してアプリケーションIDを取得する
    2. 「いいね!ボタン」のタグを取得する
    3. 「いいね!ボタン」のタグをWordPressに書き込む
    4. OGP設定用のタグを取得する(←この記事はここから)
    5. OGP設定用のタグを書き換える
    6. OGP設定用のタグを書き込む

    4.OGP 設定用のタグを取得する

    Facebook の DEVELOPERS にログインして、OGP 用のタグを取得し、必要な箇所を書き換えて行きます。

    OGP設定ページの表示

    タグは「いいね!ボタン」を取得したページと同じ場所にあります。アプリ管理画面の中段、【オープングラフ】というところから【利用開始】、もしくは【オープングラフを編集】をクリックして先に進みます。
    そして【Open Graphの詳細はこちら】をクリックすると新しいウィンドウでソーシャルプラグインのページを開くことができます。左サイドバーにある【Social Plugins】をクリックして、一番上の【Like Button】のページを開けばOKです。

    【表示方法】
    アプリ > 利用開始 or オープングラフを編集 > Open Graphの詳細はこちら > Social Plugin > Like Button

    OGP タグの取得

    Like Button ページの Step1 は「いいね!ボタン」のタグ取得でした(詳細は『いいね!ボタンを設置したい』にて)。そしてその後にある Step2 が OGP 設定に関してになります。
    OGP設定画面

    (1) 記事タイトルを入力する

    とりあえずは空欄で OK です。記事ごとのタイトルが表示させるように後々書き換えます。

    (2) タイプを選択する

    サイトのタイプを選択します。「ブログ」とか「ウィブサイト」といった形態の他にも、「本」とか「カフェ」とか、「映画」や「音楽」などなど、ジャンルを選ぶこともできます。自分のサイトにあったジャンルを選べば OK です。

    (3) URL を入力する

    サイトやブログの URL を入力しておきましょう。後で記事ごとの URL が表示されるように書き換えます。とりあえずは入力なしでも大丈夫です。

    (4) イメージ画像(サムネイル画像)の指定

    ここでタイムライン上に表示されたときのサムネイルとして使用される画像を指定できます。記事ごとにサムネイル(アイキャッチ)を設定しているのなら、記事ごとに表示されるように設定できますし、全て統一した画像でも OK です。とりあえずは空欄でも OK。

    (5) タイトルを入力する

    サイトやブログのタイトルを入力します。

    (6) アプリケーション ID を入力する

    アプリケーション ID を入力します。「いいね!ボタン」を取得する時にすでにアプリケーション ID は知っているはずですので、長ったらしい数字の羅列ですが、それをコピペしてください。
    アプリケーションID
    最低でも (2)・(5)・(6) の入力 or 選択が済んだら、【Get Tags】をクリックしましょう。以下のようなウィンドウが開きますので、テキストエディタなどにタグをコピペしてください。
    FacebookOGPタグ

    5.OGP 設定用のタグを書き換える

    取得したタグは以下のようになっています。

    (1)<meta property="og:title" content="ここは記事タイトルタグ" />
       <meta property="og:type" content="article" />
    (2)<meta property="og:url" content="ここは記事URLタグ" />
    (3)<meta property="og:image" content="サムネイル画像" />
       <meta property="og:site_name" content="ブログタイトル" />
       <meta property="fb:admins" content="アプリケーションID" />
    (4)<!-- 初期値では無し -->

    まだまだ空欄が多いので、WordPress に適した状態に書き換えていきます。

    ワードプレス用に OGP タグを設定していく

    これは「いいね!」を押された時に、「いいね!」ボタンが表示されているページの情報を正確にシェアしていくために必要は設定です。特に WordPress の ような更新型のサイトの場合、投稿したブログ記事ごとに「いいね!ボタン」が表示され、投稿された記事ごとにシェアされていくのが望ましいと思います。
    そのように記事ごとに正確な情報を表示させるためにタグを書き換えていきましょう。

    (1) 記事タイトルを出力するタグを差し込む

    WordPress の場合、記事のタイトルを表示させるタグは以下のタグになります。上記の (1)【<meta property=”og:title” content=”ここは記事タイトルタグ” />】の「ここは記事タイトルタグ」の部分に書き込めば OK です。

    <?php the_title(); ?>

    また、All in One SEO Pack で指定しているタイトルの方を表示させたい場合は、以下のタグになります。

    <?php echo get_post_meta($post->ID, _aioseop_title, true); ?>

    PHP は詳しくないので正確ではないかもしれませんが、ググって出て来た情報をカスタマイズして試してみたらうまくいっているっぽいという、極めて “確からしい” タグですw
    適当ですいません。とは言え、普通のタイトルタグで問題ないので、よほどの理由がない限り使う事はないと思います。

    (2) 記事ごとの URL を出力するタグを差し込む

    URL の部分は記事ごとのパーマリンクを取得できるようにしておきます。(2)【<meta property=”og:url” content=”ここは記事URLタグ” />】の「ここは記事URLタグ」の部分に以下のタグを書き込めばOKです。

    <?php the_permalink() ?>

    (3) サムネイル画像を出力するタグを差し込む

    シェアされた際に表示されるサムネイル画像を指定します。
    記事にアイキャッチを設定する人はそれをそのまま使いたいでしょうし、アイキャッチがない場合は何を表示させるのかも指定したいでしょうし、もしくはどの記事でも共通した画像を表示させたいという人もいるかもしれません。
    というわけでこれらの説明は後にまわします。。。

    (4) 情報を追記する

    Facebook デベロッパーズのページで取得したタグには、いくつか足りない情報があるので追記します。

    ・抜粋記事を表示する

    【description】という meta 情報は、デフォルトでは表示されていないので追記します。以下のタグをそのまま書き込んでください。

    <meta property="og:description" content="<?php the_excerpt() ; ?>"/>

    これまた All in One SEO Pack を使っていると、上記のタグではうまくいかないようで、All in One SEO Pack で指定した Description を表示させるには、以下のタグになるようです。

    <meta property="og:description" content="<?php echo strip_tags(get_the_excerpt()); ?>"/>

    All in One SEO PackのDescription
    ただ、Description に何か記載しておかないと何も表示されないみたいなので注意しましょう。

    ・ローカル情報を記載する

    ローカル情報には、例えば「日本ですよ〜」という情報を記載します。一昔前は、これが書かれていないとエラーがでるようになっていたようですが、今はなくても大丈夫そうです。なので、記載しなくてもおそらくOKですが、エラーがでたら追記しておいてください。

    <meta property="og:locale" content="ja_JP" />

    OGP 設定のサムネイル表示パターン

    先ほど飛ばした (3) のサムネイル画像の表示に関してですが、(3) は以下のように全とっかえで書き換えてください。

    <?php if (has_post_thumbnail()) :?>
    <?php
    $image_id = get_post_thumbnail_id();
    $image_url = wp_get_attachment_image_src($image_id,'medium');
    ?>
    <meta property="og:image" content="<?php echo $image_url[0]; ?>">
    <?php else: ?>
    <meta property="og:image" content="<?php bloginfo('stylesheet_directory'); ?>/images/●●●.png">
    <?php endif ;?>

    もしアイキャッチを設定していればアイキャッチが表示され、アイキャッチが指定されていない場合は、8 行目で指定している画像が表示されます(「●●●.png」の部分は適宜イメージのファイル名に変更してください)。この画像はテンプレートの images フォルダ直下にアップロードしてください。Facebook ではサイズも 200px 以上が推奨されています。
    また、常に同じサムネイルを表示させたい場合は、上記のように全部書き換えたりはせずに、(3)【<meta property=”og:image” content=”サムネイル画像” />】のサムネイル画像の部分に画像の URL を直接指定すれば OK です。

    6.OGP 設定用のタグを書き込む

    さて、書き換えが終わったらいよいよ OGP タグを書き込みましょう。先ほどいじった OGP 用のタグは <head> 〜 </head> の中に埋め込みます。テンプレートファイルは【header.php】を開けば OK です。
    Twenty Eleven の場合は 68 行目辺りに </head> タグがありますので、この直前が分かりやすいと思います。色々書き換えた後のタグをコピペしましょう。以下をそのままつかちゃって大丈夫です。

    <!-- OGP設定 -->
    <meta property="og:title" content="<?php the_title(); ?>" />
    <meta property="og:type" content="article" />
    <meta property="og:url" content="<?php the_permalink() ?>" />
    <meta property="og:description" content="<?php echo get_post_meta($post->ID, _aioseop_description, true); ?>" /><!-- 追記したDescription -->
    <!-- サムネイル画像に関して -->
    <?php if (has_post_thumbnail()) :?>
    <?php
    $image_id = get_post_thumbnail_id();
    $image_url = wp_get_attachment_image_src($image_id,'medium');
    ?>
    <meta property="og:image" content="<?php echo $image_url[0]; ?>">
    <?php else: ?>
    <meta property="og:image" content="<?php bloginfo('stylesheet_directory'); ?>/images/イメージのファイル名">
    <?php endif ;?>
    <!-- サムネイル画像に関してここまで -->
    <meta property="og:site_name" content="サイト・ブログタイトル" />
    <meta property="fb:app_id" content="アプリケーションID" />

    そしてもうひとつ、<html> タグの中に以下のタグを書き込んで <html ●●●> となるようにします。

    lang="ja" xmlns:og="http://ogp.me/ns#" xmlns:fb="http://www.facebook.com/2008/fbml"

    Twenty Eleven の場合は 22 行目辺りにあり、元々以下のようになっています。

    <html <?php language_attributes(); ?>>

    この中に先ほどの【xmlns】から始まるタグを付け加えれば OK です。

    <html lang="ja" xmlns:og="http://ogp.me/ns#" xmlns:fb="http://www.facebook.com/2008/fbml" <?php language_attributes(); ?>>
    2012.7.23 追記
    上記のタグ、【lang=”ja”】という部分もそのまま加えていますが、どうも【<?php language_attributes(); ?>】という部分が、この【lang=”ja”】という部分を吐き出してくれているみたいですので、この部分は省略しても大丈夫なようです。
    つまり、以下のように記述すれば OK ということになります。

    <html xmlns:og="http://ogp.me/ns#" xmlns:fb="http://www.facebook.com/2008/fbml" <?php language_attributes(); ?>>

    OGP が正常に作動しているかどうかチェックする

    最後に、OGP 設定がうまくいっているかどうかチェックをしたいと思います。利用するのはFacebookデベロッパーズのデバッガーというツールです。

    Facebookデバッガー
    こちらにサイトの URL、もしくは記事の URL を入力し、【デバッグ】をクリックします。すると・・・
    デバッガーでチェックした結果
    こんな感じで結果が表示されています。Object Properties のところで見え方が確認できます。
    また、「解決する必要がある警告」が表示されているんですが、上の図の場合は、「画像のサイズが足りてませんよ」という内容です。もともとアイキャッチが 150×150 なので、どうしようもないので無視してます(笑)
    他にも色々な警告が出てきますので、うまくいっていない場合はここの指示に従って内容を修正していってください。
    あと、実際問題なくてもうまく表示されたりされなかったりと、結構不安定なようです。Facebook ってそんなもんなのであまり気にしなくていいですよ、と書いてある記事を過去に見た記憶があります・・・。
    OGP 設定は以上です。気休め程度に参考にしてみてください。

    参考にさせて頂いたサイト

    ありがとうございました!