タグ: WordPress

  • これは流行る!間違いなく導入したほうがいい Pinterest の Image Hover ボタン。WordPress にも実装。Pinterest の時代、くるで。

    これは流行る!間違いなく導入したほうがいい Pinterest の Image Hover ボタン。WordPress にも実装。Pinterest の時代、くるで。

    Pinterest、画像を Pin してうれしがる SNS です。

    日本ではプチブームが来てたっぽいのですがこのたび日本語に対応したようで、

    今後、その影響力は強まっていくんじゃないかと思っているわけです。

    そんな Pinterest のすこぶる素晴らしいボタンはぜひとも導入しておいたほうがいいですまじで。

    コピペするだけで導入はできるっちゃできるんですが、ちょっと色々とレスポンシブ用とか WordPress 用に書いてみます。

    サンプル。マウスホバーで Pin ボタンが出るんですよ!
    サンプル。マウスホバーで左上に Pin ボタンが出るんですよ!

     

    Pinterest のボタン

    ボタンは3種類提供されています。

    • Pin される画像を指定するボタン→ 
    • ページ内の画像を一覧で見せてから選んで Pin してもらうボタン→
    • 自動で80px x 80px以上のサイズの画像をマウスホバーすると出てくる Pin ボタン(冒頭のサンプルよろしく)

    上2つは何度か使ってはみたんですけどどうもうまい使い方ができずにいたんですが、今回のコレはほんと使える…!

     

    Pinterest Hover Image ボタンの作り方

    Pinterest 公式のビジネスサイトでビルダーがあります。

    とりあえずは従ってみましょう。

    Pin It Button > Image Hover > Build It! と進む

    Widget-builder--Pinterest-for-Business
    びるどいっと

     

    したら、下にスクリプトが生成されます。

    できた
    できた

     

    <script type="text/javascript" data-pin-hover="true" src="//assets.pinterest.com/js/pinit.js"></script>

     

    </body> タグの直前に入れてね、ってことです、これで満足だという人はこのコードを入れましょう。

     

    流行りの非同期実行なスクリプトがいいよねやっぱり

    非同期実行ってのはすごく簡単に言うとページレンダリングが js によってブロックされず、表示がスムーズにできるようになる、ってやつです。

    Microsoft のページが詳しいかな?

     

    Pin ボタンビルダーから Advanced を選ぶと非同期実行用のスクリプトが生成されます。

    <script type="text/javascript">
    (function(d){
      var f = d.getElementsByTagName('SCRIPT')[0], p = d.createElement('SCRIPT');
      p.type = 'text/javascript';
      p.setAttribute('data-pin-hover', true);
      p.async = true;
      p.src = '//assets.pinterest.com/js/pinit.js';
      f.parentNode.insertBefore(p, f);
    }(document));
    </script>

    これはページのどこに書いてもいいよ、ってやつなので便利ですね!

    ここまででお腹いっぱいな人はこのコードでおk。

     

    レスポンシブ対応とかしたいよね!

    マウスホバーでボタンが出る、ということは非マウス環境なら必要ないわけで。

    読み込むのが無駄ですね!

    ということでブラウザウインドウ幅の判定を入れてみます。

    <script type="text/javascript">
    // ウインドウ幅を取得
    w = document.documentElement.clientWidth;
    // ウインドウ幅が 768px 以上の時だけ Pin ボタン実行
    if (w >= 768) {
    	// pinterest image hover
    	(function (d) {
    		var f = d.getElementsByTagName('SCRIPT')[0], p = d.createElement('SCRIPT');
    		p.type = 'text/javascript';
    		p.setAttribute('data-pin-hover', true);
    		p.async = true;
    		p.src = '//assets.pinterest.com/js/pinit.js';
    		f.parentNode.insertBefore(p, f);
    	}(document));
    }
    </script>

     

    これで振り分けおk、モバイル時には読み込まないようになりました。

    もうさすがに満足だって人はここでタブを閉じましょう。

     

    WordPress に簡単導入する

    WordPress でブログを書いてるぼくとしてはこれ、必須です。

    「WordPress でも <head></head> タグのところに書いたらいいじゃん」

    と思うかも知れませんがそこは、フィルターフックを使ってスマートに。

    かつ、記事ページ・ページ以外ではむしろ読み込みたくない(邪魔ですしね)のでその処理を入れつつ。

    functions.php に書いてスマートに実装します。

    /**
     * Pinterest Image Hover スクリプト読み込み用関数
     */
    function load_pinterest_image_hover_js() {
    	// 添付・投稿フォーマット・記事・ページで実行
    	if ( is_attachment() || is_post_type_archive() || is_singular() ):?>
    		<script type="text/javascript">
    			// <![CDATA[
    
    			// ウインドウ幅を取得
    			w = document.documentElement.clientWidth;
    			// ウインドウ幅が 768px 以上の時だけ Pin ボタン実行
    			if (w >= 768) {
    
    				// pinterest image hover
    				(function (d) {
    					var f = d.getElementsByTagName('SCRIPT')[0], p = d.createElement('SCRIPT');
    					p.type = 'text/javascript';
    					p.setAttribute('data-pin-hover', true);
    					p.async = true;
    					p.src = '//assets.pinterest.com/js/pinit.js';
    					f.parentNode.insertBefore(p, f);
    				}(document));
    
    			}
    			//]]>
    		</script>
    	<?php endif;
    }
    
    add_action( 'wp_head', 'load_pinterest_image_hover_js' );

     

    これをコピペで実装できます。簡単ですね。

    //cdata というやつは WordPress で html エレメントにスクリプトを直接書くときは古いブラウザ互換性のために書いておいてあげるやつです。

    そろそろ終わりにしたいところですが

     

    日本語の ”ピン” ってどうなのよ…

    実装して確認してみると、、、

    "ピン" はちょっとアレ…
    “ピン” はちょっとアレ…

    これはよろしくないですね!!!

    ということで Pinterest スクリプトで英語を指定してやります。

    最初の非同期コードだとこう、

    <script type="text/javascript">
    // ウインドウ幅を取得
    w = document.documentElement.clientWidth;
    // ウインドウ幅が 768px 以上の時だけ Pin ボタン実行
    if (w >= 768) {
    	// pinterest image hover
    	(function (d) {
    		var f = d.getElementsByTagName('SCRIPT')[0], p = d.createElement('SCRIPT');
    		p.type = 'text/javascript';
    		p.setAttribute('data-pin-hover', true);
    		p.setAttribute('data-pin-lang', 'en');
    		p.async = true;
    		p.src = '//assets.pinterest.com/js/pinit.js';
    		f.parentNode.insertBefore(p, f);
    	}(document));
    }
    </script>

     

    WordPress 用だとこう

    /**
     * Pinterest Image Hover スクリプト読み込み用関数
     */
    function load_pinterest_image_hover_js() {
    	// 添付・投稿フォーマット・記事・ページで実行
    	if ( is_attachment() || is_post_type_archive() || is_singular() ):?>
    		<script type="text/javascript">
    			// <![CDATA[
    
    			// ウインドウ幅を取得
    			w = document.documentElement.clientWidth;
    			// ウインドウ幅が 768px 以上の時だけ Pin ボタン実行
    			if (w >= 768) {
    
    				// pinterest image hover
    				(function (d) {
    					var f = d.getElementsByTagName('SCRIPT')[0], p = d.createElement('SCRIPT');
    					p.type = 'text/javascript';
    					p.setAttribute('data-pin-hover', true);
    					p.setAttribute('data-pin-lang', 'en');
    					p.async = true;
    					p.src = '//assets.pinterest.com/js/pinit.js';
    					f.parentNode.insertBefore(p, f);
    				}(document));
    
    			}
    			//]]>
    		</script>
    	<?php endif;
    }
    
    add_action( 'wp_head', 'load_pinterest_image_hover_js' );

     

    ふう、というわけでおわ…らない

     

    WordPress の場合、管理バーがあると Pin ボタンがずれる!!

    こういう風に、ずれます。

    ずれ
    ずれ

     

    管理バーが出ていないときはずれないので、基本的にどうでもいいんですが気になる人のために(といってもこれは不要でしょう

    これまた functions.php に追記。

    /**
     * 管理バーがあるときに Pin ボタンがずれるのを直す
     */
    function override_toolbar_margin_for_pinterest_hover() {
    	$output = '<style type="text/css" media="screen">';
    	$output .= 'html{margin-top:0 !important;}';
    	$output .= 'body{margin-top:28px !important;}';
    	$output .= '* html body{margin-top:28px !important;}';
    	$output .= '</style>';
    
    	echo $output;
    }
    
    if ( is_admin_bar_showing() )
    	add_action( 'wp_head', 'override_toolbar_margin_for_pinterest_hover', 12 );

     

    これで文句なく実装できます。

     

    ホホまとめ

    わりとうだうだっと書きましたけど、やってることは実にシンプル。

    今は導入しているブログ、見かけないので手間の割に効果があると踏んでます。

    Pinterest が流行れば Pinterest からの流入は間違いなくありますしね。

    文豪系ブログ以外では導入しない手がないんじゃないでしょうか。

    ついでに Pinterest 始めちゃうのもアリですね!

    こんなフォローボタンもありますよ→ Pinterest

  • 最後にちょっと修正を入れてテーマ制作終わりです。【テーマ作成 その⑧】

    最後にちょっと修正を入れてテーマ制作終わりです。【テーマ作成 その⑧】

    【テーマ作成 その⑦】からのつづきです。

     

    7回もああだこうだとやってしまいました、今回でラストです。

    WordPress Codex のガイドラインに沿って制作すれば簡単にできるよ、ってことで始めました。

    開発は継続しますが、テーマ作成の記事としては今回で終わります。

    では早速。

    wp_enqueue_style, wp_enqueue_script

    エンキューを使って css, js を読み込むことが推奨されてます。

    エンキューというのはプログラム用語でデータをリストへ格納する、って意味です。

    で、WordPress ではこれらをアクションフックで使ってね、ということなんでまずは Codex のサンプルを functions.php にコピペ。

    diff --git a/functions.php b/functions.php
    --- a/functions.php
    +++ b/functions.php
    @@ -86,6 +86,17 @@ add_action( 'after_setup_theme', 'hoho_setup' );
    
     /**
    + * スクリプトとスタイルのエンキュー、アクションフック
    + */
    +function theme_name_scripts() {
    +	wp_enqueue_style( 'style-name', get_stylesheet_uri() );
    +	wp_enqueue_script( 'script-name', get_template_directory_uri() . '/js/example.js', array(), '1.0.0', true );
    +}
    +
    +add_action( 'wp_enqueue_scripts', 'theme_name_scripts' );
    +
    +
    +/**
      * メインのサイドバーを定義
      *
      * @since WordPress 2.2 (2.9.0: description プロパティ追加

     

    css, js をエンキューに移動

    エンキューの用意ができたんで、header.php, footer.php に書かれていた css, js をエンキューへ。

    jQuery は WordPress 側で呼んでくれるので割愛(CDN版を使うのもアリですね。

    ※ソースコードを貼ってるところの先頭行に -が付いてるのは削除行、+が付いてるのは追加行になります。

    diff --git a/header.php b/header.php
    --- a/header.php
    +++ b/header.php
    @@ -25,13 +25,6 @@
    
     	<title><?php wp_title(); ?></title>
    
    -	<link rel="stylesheet" href="<?php echo get_stylesheet_directory_uri(); ?>/css/screen.css">
    -	<!--[if lt IE 9]>
    -	<link rel="stylesheet" href="<?php echo get_stylesheet_directory_uri(); ?>/css/ie.css"><![endif]-->
    -
    -	<script src="<?php echo get_stylesheet_directory_uri(); ?>/js/vendor/modernizr-2.6.2-respond-1.1.0.min.js"></script>
    -
    -	<?php if ( is_singular() ) wp_enqueue_script( 'comment-reply' ); ?>
     	<?php wp_head(); ?>
     </head>
     <body <?php body_class(); ?>>
    
    diff --git a/footer.php b/footer.php
    --- a/footer.php
    +++ b/footer.php
    @@ -38,12 +38,6 @@
     	</footer>
     </div>
    
    -<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
    -<script>window.jQuery || document.write('<script src="<?php echo get_stylesheet_directory_uri(); ?>/js/vendor/jquery-1.10.1.min.js"><\/script>')</script>
    -
    -<script src="<?php echo get_stylesheet_directory_uri(); ?>/js/plugins.js"></script>
    -<script src="<?php echo get_stylesheet_directory_uri(); ?>/js/main.js"></script>
    -
     <?php wp_footer(); ?>
     </body>
     </html>
    
    diff --git a/functions.php b/functions.php
    --- a/functions.php
    +++ b/functions.php
    @@ -88,12 +88,32 @@ add_action( 'after_setup_theme', 'hoho_setup' );
     /**
      * スクリプトとスタイルのエンキュー、アクションフック
      */
    -function theme_name_scripts() {
    -	wp_enqueue_style( 'style-name', get_stylesheet_uri() );
    -	wp_enqueue_script( 'script-name', get_template_directory_uri() . '/js/example.js', array(), '1.0.0', true );
    +function hoho_scripts() {
    +
    +	// メインのスタイルシート
    +	wp_enqueue_style( 'hoho-style', get_stylesheet_directory_uri() . '/css/screen.css' );
    +	// IE 用のスタイルシート
    +	if ( ! is_admin() )
    +		wp_register_style( 'hoho-style-ie', get_stylesheet_directory_uri() . '/css/ie.css' );
    +	$GLOBALS['wp_styles']->add_data( 'hoho-style-ie', 'conditional', 'lt IE 9' );
    +	wp_enqueue_style( 'hoho-style-ie' );
    +
    +
    +	// コメント用スクリプト
    +	if ( is_singular() )
    +		wp_enqueue_script( 'comment-reply' );
    +	// Modernizr ライブラリ
    +	wp_enqueue_script( 'modernizr', get_template_directory_uri() . '/js/vendor/modernizr-2.6.2-respond-1.1.0.min.js' );
    +	// メインの js
    +	wp_enqueue_script( 'main-js', get_template_directory_uri() . '/js/main.js' );
    +
    +	// コンソールエラー回避のためのヘルパースクリプト
    +	if ( WP_DEBUG )
    +		wp_enqueue_script( 'plugins-js', get_template_directory_uri() . '/js/plugins.js' );
    +
     }
    
    -add_action( 'wp_enqueue_scripts', 'theme_name_scripts' );
    +add_action( 'wp_enqueue_scripts', 'hoho_scripts' );
    
     /**

     

    テーマのバージョンを THEME_VER に定義

    エンキューではバージョンを付加できる (例: style.css?ver=0.1) ので、css に関してはテーマのバージョンを付加させようと思います。

    テーマのバージョンを取得するには、WordPress のテンプレートタグ、wp_get_theme() を使います。

    wp_get_theme を使うと、現在のテーマ情報が取得できます↓こんな感じ

    WP_Theme Object
    (
        [theme_root:WP_Theme:private] => L:\www\wp/wp-content/themes
        [headers:WP_Theme:private] => Array
            (
                [Name] => Hoho
                [ThemeURI] => http://hayashikejinan.com
                [Description] => hoho theme for WordPress.
                [Author] => hayashikejinan
                [AuthorURI] => http://profiles.wordpress.org/hayashikejinan
                [Version] => 0.1
                [Template] => 
                [Status] => 
                [Tags] => orange, two-columns
                [TextDomain] => 
                [DomainPath] => 
            )
    
        [headers_sanitized:WP_Theme:private] => 
        [name_translated:WP_Theme:private] => 
        [errors:WP_Theme:private] => 
        [stylesheet:WP_Theme:private] => hoho
        [template:WP_Theme:private] => hoho
        [parent:WP_Theme:private] => 
        [theme_root_uri:WP_Theme:private] => 
        [textdomain_loaded:WP_Theme:private] => 
        [cache_hash:WP_Theme:private] => c25c98525eeda79ecf4f4ca8615765c7
    )

     

    で、バージョンの数字だけ欲しいのでバージョンだけ取得して、define で定義。

    diff --git a/functions.php b/functions.php
    --- a/functions.php
    +++ b/functions.php
    @@ -9,6 +9,12 @@
      * @subpackage Hoho
      */
    
    +// テーマのバージョンを取得・定義
    +$ver = wp_get_theme();
    +$ver = $ver->get( 'Version' );
    +define( 'THEME_VER', $ver );
    +
    +
     /**
      * コンテンツエリアの最大許容幅を設定
      *

     

    これで THEME_VER という定数が使えるようになりました。

    wp_enqueue_style・wp_enqueue_script にハンドル・バージョン・スクリプト呼び出し情報付加

    ということで、エンキューにバージョン情報を。

    ここで wp_enqueue_style, wp_enqueue_script についてちょっと詳しく。

    wp_enqueue_style

    wp_register_style で登録して、wp_enqueue_style で出力する命令、って感じです。

    使い方は、<?php wp_enqueue_style( $handle, $src, $deps, $ver, $media ); ?> という形で。

    パラメータ

    • $handle…これだけ必須のパラメータ。スタイルシートのハンドルとして使われる名前。
    • $src…css のURL。
    • $deps…この css 以前に読み込まないといけない場合指定するパラメータ。配列で指定。
    • $ver…css に付加されるバージョン。正しくキャッシュさせるために使う。
    • $media…css が定義されるメディアを特定。例: ‘all’, ‘screen’, ‘handheld’, ‘print’

    wp_enqueue_script

    ~style と似てます、register で登録、enqueue で出す。

    使い方は <?php wp_enqueue_script( $handle, $src, $deps, $ver, $in_footer ); ?> という形。

    パラメータがちょっと違いますね。

    パラメータ

    • $handle…同上。
    • $src…js のURL。
    • $deps…この js 以前に読み込まないといけない、または依存する js がある場合指定するパラメータ。配列で指定。
    • $ver…js に付加されるバージョン。正しくキャッシュさせるために使う。
    • $in_footer…通常 <head> 部分に js は配置されますが、true の場合 </body> 直前に配置できます(wp_footer() があれば

    ということです。

     

    これらを元にエンキュー部分を修正すると、

    diff --git a/functions.php b/functions.php
    --- a/functions.php
    +++ b/functions.php
    @@ -97,10 +97,10 @@ add_action( 'after_setup_theme', 'hoho_setup' );
     function hoho_scripts() {
    
     	// メインのスタイルシート
    -	wp_enqueue_style( 'hoho-style', get_stylesheet_directory_uri() . '/css/screen.css' );
    +	wp_enqueue_style( 'hoho-style', get_stylesheet_directory_uri() . '/css/screen.css', array(), THEME_VER );
     	// IE 用のスタイルシート
     	if ( ! is_admin() )
    -		wp_register_style( 'hoho-style-ie', get_stylesheet_directory_uri() . '/css/ie.css' );
    +		wp_register_style( 'hoho-style-ie', get_stylesheet_directory_uri() . '/css/ie.css', array(), THEME_VER );
     	$GLOBALS['wp_styles']->add_data( 'hoho-style-ie', 'conditional', 'lt IE 9' );
     	wp_enqueue_style( 'hoho-style-ie' );
    
    @@ -109,13 +109,14 @@ function hoho_scripts() {
     	if ( is_singular() )
     		wp_enqueue_script( 'comment-reply' );
     	// Modernizr ライブラリ
    -	wp_enqueue_script( 'modernizr', get_template_directory_uri() . '/js/vendor/modernizr-2.6.2-respond-1.1.0.min.js' );
    +	wp_enqueue_script( 'modernizr', get_template_directory_uri() . '/js/vendor/modernizr-2.6.2-respond-1.1.0.min.js',
    +		array(), '2.6.2', false );
     	// メインの js
    -	wp_enqueue_script( 'main-js', get_template_directory_uri() . '/js/main.js' );
    +	wp_enqueue_script( 'main-js', get_template_directory_uri() . '/js/main.js', array(), THEME_VER, true );
    
     	// コンソールエラー回避のためのヘルパースクリプト
     	if ( WP_DEBUG )
    -		wp_enqueue_script( 'plugins-js', get_template_directory_uri() . '/js/plugins.js' );
    +		wp_enqueue_script( 'plugins-js', get_template_directory_uri() . '/js/plugins.js', array(), THEME_VER, true );
    
     }

     

    はいできました、パラメータを適切に指定。

    archive.php, search.php を作成

    アーカイブ表示用と検索結果表示用のテンプレートを作成します。

    といっても、index.php をコピーしてタイトルを変えるだけで済ませます。

    diff --git a/archive.php b/archive.php
    new file mode 100644
    --- /dev/null
    +++ b/archive.php
    @@ -0,0 +1,38 @@
    +<?php
    +/**
    + * アーカイブのテンプレートファイル
    + *
    + * 特定のクエリに一致しない時にアーカイブページ(タグ、カテゴリー、日付別、作成者)を表示するため読み込まれる。
    + * 例: date.phpファイルが存在しない時に日付別アーカイブとして使われる。
    + * 詳しくは Codex へ: http://codex.wordpress.org/Template_Hierarchy
    + *
    + * @package    WordPress
    + * @subpackage Hoho
    + */
    +
    +get_header(); ?>
    +
    +<div class="wrapper clearfix">
    +
    +	<div class="main clearfix">
    +
    +		<?php
    +		// content.php を読み込む
    +		get_template_part( 'content' ); ?>
    +
    +		<!-- pagination -->
    +		<div class="navigation">
    +			<div class="alignleft"><?php previous_posts_link( '&laquo; 前へ' ) ?></div>
    +			<div class="alignright"><?php next_posts_link( '次へ &raquo;', '' ) ?></div>
    +		</div>
    +		<!-- pagination -->
    +
    +	</div>
    +	<!-- #main -->
    +
    +	<?php get_sidebar(); ?>
    +
    +</div>
    +<!-- #wrapper -->
    +
    +<?php get_footer(); ?>
    
    diff --git a/search.php b/search.php
    new file mode 100644
    --- /dev/null
    +++ b/search.php
    @@ -0,0 +1,34 @@
    +<?php
    +/**
    + * 検索結果のテンプレートファイル
    + *
    + * @package    WordPress
    + * @subpackage Hoho
    + */
    +
    +get_header(); ?>
    +
    +<div class="wrapper clearfix">
    +
    +	<div class="main clearfix">
    +
    +		<?php
    +		// content.php を読み込む
    +		get_template_part( 'content' ); ?>
    +
    +		<!-- pagination -->
    +		<div class="navigation">
    +			<div class="alignleft"><?php previous_posts_link( '&laquo; 前へ' ) ?></div>
    +			<div class="alignright"><?php next_posts_link( '次へ &raquo;', '' ) ?></div>
    +		</div>
    +		<!-- pagination -->
    +
    +	</div>
    +	<!-- #main -->
    +
    +	<?php get_sidebar(); ?>
    +
    +</div>
    +<!-- #wrapper -->
    +
    +<?php get_footer(); ?>

     

    コピーできたらページタイトルを表示するように小変更。

    diff --git a/archive.php b/archive.php
    --- a/archive.php
    +++ b/archive.php
    @@ -16,6 +16,14 @@ get_header(); ?>
    
     	<div class="main clearfix">
    
    +		<header class="page-header">
    +
    +			<h1 class="page-title">
    +				<?php wp_title(''); ?>
    +			</h1>
    +
    +		</header>
    +
     		<?php
     		// content.php を読み込む
     		get_template_part( 'content' ); ?>
    
    diff --git a/search.php b/search.php
    --- a/search.php
    +++ b/search.php
    @@ -12,6 +12,14 @@ get_header(); ?>
    
     	<div class="main clearfix">
    
    +		<header class="page-header">
    +
    +			<h1 class="page-title">
    +				<?php wp_title(''); ?>
    +			</h1>
    +
    +		</header>
    +
     		<?php
     		// content.php を読み込む
     		get_template_part( 'content' ); ?>

     

    しゅっと終わらせました。

    別途表示させたいものがある場合、これらのテンプレートに書いていけばオッケーですね。

    header, footer 調整

    header: titleタグ、ヘッダータイトル修正、footer: copyright に書き変え。

    ここは WordPress 関係ないのでささっと。

    diff --git a/footer.php b/footer.php
    --- a/footer.php
    +++ b/footer.php
    @@ -34,7 +34,11 @@
     	</div>
    
     	<footer class="wrapper">
    -		<h3>footer</h3>
    +
    +		<p class="copyright">
    +			&copy; <?php echo date( 'Y' ); ?> <?php bloginfo( 'name' ); ?>.
    +		</p>
    +
     	</footer>
     </div>
    
    diff --git a/footer.php b/footer.php
    --- a/footer.php
    +++ b/footer.php
    @@ -34,7 +34,11 @@
     	</div>
    
     	<footer class="wrapper">
    -		<h3>footer</h3>
    +
    +		<p class="copyright">
    +			&copy; <?php echo date( 'Y' ); ?> <?php bloginfo( 'name' ); ?>.
    +		</p>
    +
     	</footer>
     </div>

     

    404.php

    404エラー時に見せる用のテンプレート。

    URL打ち間違い等で404が出がちなので、凝りに凝ってるサイトさんをよく見かけます。

    最低限の404っぽさを出しつつ変更。

    <?php
    /**
     * 404 エラーページ (Not Found) を表示するテンプレート
     *
     * @package    WordPress
     * @subpackage Hoho
     */
    
    get_header(); ?>
    
    <div class="wrapper clearfix">
    
    	<div class="main clearfix">
    
    		<article>
    			<section>
    				<h1>Not found <span>:(</span></h1>
    
    				<p>申し訳ありませんが、あなたが表示しようとしたページは存在しません。</p>
    
    				<p>考えられる原因は:</p>
    				<ul>
    					<li>URLの打ち間違い</li>
    					<li>リンクの期限切れ</li>
    				</ul>
    				<p>です。</p>
    
    				<h3>その他のヒント:</h3>
    
    				<?php get_search_form(); ?>
    
    			</section>
    		</article>
    
    	</div>
    	<!-- #main -->
    
    	<?php get_sidebar(); ?>
    
    </div>
    <!-- #wrapper -->
    
    <?php get_footer(); ?>

     

     

    css 調整

    css をちょっとだけ直し。

    diff --git a/css/screen.css b/css/screen.css
    --- a/css/screen.css
    +++ b/css/screen.css
    @@ -116,8 +116,11 @@ a img.aligncenter {
     }
    
     .wp-caption {
    -  background: white;
    +  background: #eeeeee;
       border: 1px solid #f0f0f0;
    +  -webkit-box-shadow: 0 5px 10px #aaaaaa;
    +  -moz-box-shadow: 0 5px 10px #aaaaaa;
    +  box-shadow: 0 5px 10px #aaaaaa;
       max-width: 96%;
       /* Image does not overflow the content area */
       padding: 5px 3px 10px;
    @@ -259,6 +262,10 @@ nav a:hover {
     .main article h1 {
       font-size: 2em;
     }
    +.main article img {
    +  height: auto;
    +  max-width: 100%;
    +}
    
     .mceContentBody {
       padding: 0 20px;
    
    diff --git a/sass/_main.sass b/sass/_main.sass
    --- a/sass/_main.sass
    +++ b/sass/_main.sass
    @@ -93,8 +93,9 @@ a img
     		margin-right: auto
    
     .wp-caption
    -	background: #fff
    +	background: #eee
     	border: 1px solid #f0f0f0
    +	@include box-shadow(0 5px 10px #aaa)
     	max-width: 96%
     	/* Image does not overflow the content area
     	padding: 5px 3px 10px
    @@ -212,8 +213,12 @@ nav
     	padding: 30px 0
    
     .main
    -	article h1
    -		font-size: 2em
    +	article
    +		h1
    +			font-size: 2em
    +		img
    +			height: auto
    +			max-width: 100%
    
     // for visual editor
     .mceContentBody

     

    不要なファイルを消す

    Initializr という html5 なテンプレートを元に作り始めたんですけども、WordPress のテーマとしては不要なファイルがあるため削除。

    • .htaccess
    • crossdomain.xml
    • humans.txt
    • robots.txt

    の4つを消し去る。

    これでテーマ完成と相成りました(ダウンロードは こちら

    ※完成と言ってますが、記事中 css や html はスルーしてるため、なにかと見た目は残念なところがあります。公式テーマとしてリリースするまで待ってもらえると幸いです。

    終わりに

    そもそも自分のブログのテーマを変えようと思ったのがことの発端。

    せっかくなので簡単にできるところまでは Codex の解説も入れつつ記事にしていこうとやってきました。

    作成途中モチベーションがなくなったり忙殺されたりで間が空いたりしましたけども、作業内容としては 1日あれば充分できる内容だと思います。

    というより、Codex の通りにやればテーマなんて簡単に作れる(ある程度まではね)んですよ。

    少しの決意表明とやる気があれば充分、なことが伝われば幸いです。

     

    ちなみに、今後は記事を書かなくてよくなったためがっつり作成にとりかかり、WordPress公式ディレクトリに登録するところまでいくつもりです。

    では長々とやってきたテーマ作成はその⑧を以て終わりにしようと思います。

  • Theme Check 2回目。functions.php 多いですけど、ここ大事。【テーマ作成 その⑦】

    Theme Check 2回目。functions.php 多いですけど、ここ大事。【テーマ作成 その⑦】

    【テーマ作成 その⑥】からの続きです。

     

    テーマチェック2回目を行い、細かい所をブラッシュアップしていきます。

    今回はほぼ functions.php に書いていく感じです。

    よく詰まるところですが、Codex の通りにシンプルな実装をすれば問題なくできるのでがんばってみましょう。

    量が多いので若干端折ってるところはありますが、なるべくわかりやすいよう書いたつもりです。

    Theme Check

    1回目ではある程度 (基本的なテストをパスするぐらい) しかやってませんでしたので、滞りなくやっちゃいます。

    Theme Check やらの準備は過去記事を参照のこと。

    はい、いくつか出ました。

    出てます出てます
    出てます出てます

     

    ではひとつひとつ(都合により順番は前後しました)見ていきましょう。

    このテーマには投稿記事ページネーションのコードがありません

    必須: このテーマには投稿記事ページネーションのコードがありません。posts_nav_link() もしくは paginate_links() もしくは next_posts_link() と previous_posts_link() を使用して投稿記事ページネーションを追加してください。

    “前の記事へ” “次の記事へ” ってやつですね。

    Codex の posts_nav_link を参考に。

    ※ソースコードを貼ってるところの先頭行に -が付いてるのは削除行、+が付いてるのは追加行になります。

    --- a/index.php
    +++ b/index.php
    @@ -21,6 +21,13 @@ get_header(); ?>
     		// content.php を読み込む
     		get_template_part( 'content' ); ?>
    
    +		<!-- pagination -->
    +		<div class="navigation">
    +			<div class="alignleft"><?php previous_posts_link( '&laquo; 前へ' ) ?></div>
    +			<div class="alignright"><?php next_posts_link( '次へ &raquo;', '' ) ?></div>
    +		</div>
    +		<!-- pagination -->
    +
     	</div>
     	<!-- #main -->
    できた
    できた

    wp_link_pages が見つかりませんでした

    必須: wp_link_pages が見つかりませんでした。参考: wp_link_pages <?php wp_link_pages( $args ); ?>

    記事を数ページに分けた時用のページャーを表示する関数ですね。

    記事を数ページに分けるなんてやらへんわ!とは思うものの実装。

    --- a/single.php
    +++ b/single.php
    @@ -16,6 +16,10 @@ get_header(); ?>
     		// content.php を読み込む
     		get_template_part( 'content' ); ?>
    
    +		<div class="page-links">
    +			<?php wp_link_pages(); // 記事内ページャー ?>
    +		</div>
    +
     	</div>
     	<!-- #main -->
    ぺーじゃー
    ぺーじゃー

    テーマ内にファイル readme.txt が見つかりませんでした

    推奨: テーマ内にファイル readme.txt が見つかりませんでした。 より詳しい情報は Theme_Documentation をご覧ください。

    Codex には、カスタム機能や設定の使い方を説明するために書けばいいよ、と書いてますね。

    テーマによってまちまちで、更新記録が書いてあったりします。

    Theme Check 通るように作成だけとりあえずしておきましょう。

    add_theme_support とは

    ここからいくつか add_theme_support という関数を使ってのテーマ機能登録になります。

    add_theme_support はアクションフックでの登録がいいみたいです、アクションフックっていうのは簡単に言うとですね、

    WordPress のコアファイルをいじることなく、特定の場所に割り込んで動作を指定(関数を追加)できるよ

    ってやつです、覚えたら頗る捗るやつ。

     

    で、アクションフックに取り付ける場合は、after_setup_theme というフックでなきゃいけません。

    Codex の after setup theme アクションフックに一例 (Twenty Twelve で使われてるコード) があるので、それをベースにまず functions.php へ記述。

    add_action( ‘フック’, ‘追加する関数’ ) という形で記述します。

    新規関数を作成して、それを add_action 。

    --- a/functions.php
    +++ b/functions.php
    @@ -17,6 +17,16 @@
     if ( ! isset( $content_width ) )
     	$content_width = 585;
    
    +if ( ! function_exists( 'hoho_setup' ) ):
    +
    +	function hoho_setup() {
    +		// ここに add_theme_support を書いていく
    +	}
    +
    +endif;
    +// 'after_setup_theme' フックが実行された時に 'hoho_setup' 関数を実行する処理
    +add_action( 'after_setup_theme', 'hoho_setup' );
    +
     /**
      * 自動的にRSSフィードのリンクを挿入
      *

    if ( function_exists ) ってのは関数があれば true を返す PHP の関数です、 プラグインの関数を呼び出すときに使ったりしますよね。

    今回は ! がついてるので、関数がなければ実行する処理になってます。(なぜかと言うと子テーマでここを触れるようにするため)

     

    アクションフックと関数が作れたら以前に書いたコード、RSSフィードのリンクってやつは add_theme_support の仲間なので作った関数に入れてあげる。

    --- a/functions.php
    +++ b/functions.php
    @@ -19,8 +19,17 @@ if ( ! isset( $content_width ) )
    
     if ( ! function_exists( 'hoho_setup' ) ):
    
    +	/**
    +	 * テーマのデフォルト設定や、WordPress 諸機能のサポートを登録・設定します。
    +	 *
    +	 * この関数は init フックの前に実行される after_setup_theme フックへ繋がっていることに注意してください。
    +	 * init のアクションフックだと間に合わない機能があるからです。
    +	 */
     	function hoho_setup() {
    -		// ここに add_theme_support を書いていく
    +
    +		// 投稿・コメントページで自動的にRSSフィードのリンクを <head> に挿入
    +		add_theme_support( 'automatic-feed-links' );
    +
     	}
    
     endif;
    @@ -28,13 +37,6 @@ endif;
     add_action( 'after_setup_theme', 'hoho_setup' );
    
     /**
    - * 自動的にRSSフィードのリンクを挿入
    - *
    - * @since WordPress 3.0
    - */
    -add_theme_support( 'automatic-feed-links' );
    -
    -/**
      * メインのサイドバーを定義
      *
      * @since WordPress 2.2 (2.9.0: description プロパティ追加

     

    このテーマ内に投稿サムネイル (アイキャッチ画像) への参照が見つかりませんでした

    推奨: このテーマ内に投稿サムネイル (アイキャッチ画像) への参照が見つかりませんでした。 このテーマにサムネイルの機能をもたせるのなら functions.php 内に add_theme_support( ‘post-thumbnails’ ) を実装したほうがいいでしょう。

    サムネイルはもはやなくてはならないと思うので要チェック。

    Codex の add_theme_support( ‘post-thumbnails’ ) を見てみます。

    パラメータやらなんやらと書いてますね、わかりやすいよう、一番簡単な実装にしておきます。

    functions.php に記述。

    --- a/functions.php
    +++ b/functions.php
    @@ -30,6 +30,9 @@ if ( ! function_exists( 'hoho_setup' ) ):
     		// 投稿・コメントページで自動的にRSSフィードのリンクを <head> に挿入
     		add_theme_support( 'automatic-feed-links' );
    
    +		// アイキャッチを有効化
    +		add_theme_support( 'post-thumbnails' );
    +
     	}
    
     endif;

     

    これで投稿画面にてアイキャッチを設定できるようになります。

    このテーマ内に the_post_thumbnail() への参照が見つかりませんでした

    推奨: このテーマ内に the_post_thumbnail() への参照が見つかりませんでした。サムネイル用には、カスタムフィールドを使う代りにこの機能を実装するようお勧めします。

    アイキャッチを設定できるようにしたものの、出力をしないといけませんね。

    Codex の一例がシンプルでわかりやすいのでその通りにします。

    --- a/content.php
    +++ b/content.php
    @@ -29,9 +29,21 @@
     			<section>
    
     				<?php if ( is_singular() ) : ?>
    +
     					<?php the_content(); // 記事を表示 ?>
    +
     				<?php else: ?>
    +
    +					<?php
    +					// アイキャッチが設定されているか確認
    +					if ( has_post_thumbnail() ) {
    +						// アイキャッチ画像を出力
    +						the_post_thumbnail();
    +					};
    +					?>
    +
     					<?php the_excerpt(); // 記事の抜粋を表示 ?>
    +
     				<?php endif; ?>
    
     			</section>
    アイキャッチ出ましたー
    アイキャッチ出ましたー

    これでアイキャッチが出るようになりました-。

    No reference to add_theme_support( ‘custom-background’, $args ) was found in the theme

    推奨: このテーマ内に add_theme_support( ‘custom-background’, $args ) への参照が見つかりませんでした。背景画像や背景色をテーマで使用するならこの機能を実装することをお勧めします。

    英語なんで和訳しつつ。

    このカスタム背景というのは、背景の色や画像のカスタマイズを提供するテーマ機能です。

    テーマを配布する時にユーザーが任意でカスタムできるよう WordPress が備えてる機能ですね。

    ただインラインで css を吐くので個人的には使わない機能ですけども、推奨されてるんで実装。

    --- a/functions.php
    +++ b/functions.php
    @@ -30,6 +30,9 @@ if ( ! function_exists( 'hoho_setup' ) ):
     		// 投稿・コメントページで自動的にRSSフィードのリンクを <head> に挿入
     		add_theme_support( 'automatic-feed-links' );
    
    +		// カスタム背景有効化
    +		add_theme_support( 'custom-background' );
    +
     		// アイキャッチを有効化
     		add_theme_support( 'post-thumbnails' );

     

    1行だけでオッケーです。簡単!外観メニューに背景オプションが追加されます。

    背景オプションが追加されます。
    背景オプションが追加されます。

     

    ただ、テーマによってデフォルトの色とかを決めたい、って時には配列で指定してあげないといけません。

    配列とかちょっと難しいっぽいですけども、そんなことないです。

    Codex を参考に指定。

    --- a/functions.php
    +++ b/functions.php
    @@ -31,7 +31,15 @@ if ( ! function_exists( 'hoho_setup' ) ):
     		add_theme_support( 'automatic-feed-links' );
    
     		// カスタム背景有効化
    -		add_theme_support( 'custom-background' );
    +		add_theme_support(
    +			'custom-background',
    +			array(
    +				// デフォルトの色
    +				'default-color' => 'fff',
    +				// デフォルトの画像
    +				//'default-image' => get_template_directory_uri() . '/images/background.jpg',
    +			)
    +		);
    
     		// アイキャッチを有効化
     		add_theme_support( 'post-thumbnails' );

     

     

    No reference to add_theme_support( ‘custom-header’, $args ) was found in the theme

    推奨: このテーマ内に add_theme_support( ‘custom-header’, $args ) への参照が見つかりませんでした。ヘッダー画像を使用するならこの機能を実装することをお勧めします。

    カスタム背景と似てますね、ヘッダーをユーザーが自由に変えられるよう WordPress が備えてる機能です。

    ロゴ部分に使われたりスライダーとして使われたり、実装次第でいろいろできます。

    今回は可変幅でブラウザ幅100%になるヘッダー画像として実装してみます。

    --- a/functions.php
    +++ b/functions.php
    @@ -41,6 +41,9 @@ if ( ! function_exists( 'hoho_setup' ) ):
     			)
     		);
    
    +		// カスタムヘッダー画像有効化
    +		add_theme_support( 'custom-header' );
    +
     		// アイキャッチを有効化
     		add_theme_support( 'post-thumbnails' );

     

    こちらも1行追加すればOKなんですけども、指定したいところがあるので配列を渡して指定してあげます。

    --- a/functions.php
    +++ b/functions.php
    @@ -42,7 +42,23 @@ if ( ! function_exists( 'hoho_setup' ) ):
     		);
    
     		// カスタムヘッダー画像有効化
    -		add_theme_support( 'custom-header' );
    +		add_theme_support(
    +			'custom-header',
    +			array(
    +				// デフォルトの画像
    +				'default-image' => get_template_directory_uri() . '/images/header.jpg',
    +				// 幅を可変にするか否か
    +				'flex-width'    => true,
    +				// カスタムヘッダーの画像幅
    +				'width'         => 9999, // 今回は幅 100% で使うため仮の数値 9999 にしておく
    +				// 高さを可変にするか否か
    +				'flex-height'   => true,
    +				// カスタムヘッダーの画像高さ
    +				'height'        => 300,
    +				// ヘッダーテキストを使うか否か
    +				'header-text'   => false,
    +			)
    +		);
    
     		// アイキャッチを有効化
     		add_theme_support( 'post-thumbnails' );

    指定されてない時でもデフォルトの画像を表示するため、imagesフォルダに header.jpg という画像を入れておきます。

     

    これで外観メニューにヘッダーのオプションが追加されます。

    ヘッダーオプションが追加されます。
    ヘッダーオプションが追加されます。

     

    しかしですね、カスタムヘッダーは出力を書いてあげないといけません。

    ということで header.php に出力をするべく記述。

    --- a/header.php
    +++ b/header.php
    @@ -43,6 +43,17 @@
     <![endif]-->
    
     <div class="header-container">
    +
    +	<?php
    +	// カスタムヘッダーを設定した場合表示する
    +	if ( get_header_image() ) : ?>
    +		<section class="site-header">
    +			<a href="<?php echo esc_url( home_url( '/' ) ); ?>" title="<?php echo esc_attr( get_bloginfo( 'name', 'display' ) ); ?>" rel="home">
    +				<img src="<?php header_image(); ?>" width="<?php echo get_custom_header()->width; ?>" height="<?php echo get_custom_header()->height; ?>" alt="" />
    +			</a>
    +		</section>
    +	<?php endif; ?>
    +
     	<header class="wrapper clearfix">
     		<h1 class="title">h1.title</h1>
     		<nav>

     

    html のマークアップを新たにしたので、css で見た目を整える。

    --- a/css/screen.css
    +++ b/css/screen.css
    @@ -212,6 +212,19 @@ a:hover img {
       color: white;
     }
    
    +/* ================
    + *  MOBILE: Header
    + * ================ */
    +.site-header a,
    +.site-header a img {
    +  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    +  opacity: 1;
    +}
    +.site-header img {
    +  height: auto;
    +  width: 100%;
    +}
    +
     /* ==============
      *  MOBILE: Menu
      * ============== */
    --- a/sass/_main.sass
    +++ b/sass/_main.sass
    @@ -170,6 +170,17 @@ a:hover
     .title
     	color: white
    
    +/* ================
    + *  MOBILE: Header
    + * ================
    +.site-header
    +	a,
    +	a img
    +		@include opacity(1.0)
    +	img
    +		height: auto
    +		width: 100%
    +
     /* ==============
      *  MOBILE: Menu
      * ==============

     

    ちょっとこの部分は長いですけども、しっかりと。

    で、ちゃんとできるとこうなりました(∩´∀`)∩ワーイ

    カスタムヘッダーのデフォルト画像が無事表示されます。
    カスタムヘッダーのデフォルト画像が無事表示されました。

     

    ついでに WordPress 3.6 からサポートされた add_theme_support( ‘html5’) を追加

    WordPress 3.6 から新しく、add_theme_support( ‘html5’) というコメントフォーム、検索フォーム、コメントリストを html5 マークアップにしてくれる機能が追加されました。

    せっかく html5 なテーマにしましたし、仕様要件を 3.6以降にしちゃいましょう、ということで追加。

    --- a/functions.php
    +++ b/functions.php
    @@ -63,6 +63,9 @@ if ( ! function_exists( 'hoho_setup' ) ):
     			)
     		);
    
    +		// コメントフォーム、検索フォーム、コメントリストを html5 マークアップにしてくれる
    +		add_theme_support( 'html5', array( 'comment-list', 'comment-form', 'search-form' ) );
    +
     		// アイキャッチを有効化
     		add_theme_support( 'post-thumbnails' );

     

    このテーマ内に add_editor_style() への参照が見つかりませんでした

    推奨: このテーマ内に add_editor_style() への参照が見つかりませんでした。テーマへのエディタースタイルの実装を推奨します。これにより、エディターのコンテンツとこのテーマの実際の出力とをマッチさせることができ、ユーザーエクスペリエンスが向上します。

    ビジュアルエディタ用に css が使えるんですよね、それを指定しろってことです。

    add_editor_style() だけを書くと、テーマのフォルダ直下の editor-style.css を読む、って動作をするんですけども

    今回はテーマ表示用のスタイルシートへ一緒に記述することにするんで、テーマのスタイルを読むように指定。

    --- a/functions.php
    +++ b/functions.php
    @@ -27,6 +27,9 @@ if ( ! function_exists( 'hoho_setup' ) ):
     	 */
     	function hoho_setup() {
    
    +		// ビジュアルエディタ用の css 読み込み
    +		add_editor_style( 'css/screen.css' );
    +
     		// 投稿・コメントページで自動的にRSSフィードのリンクを <head> に挿入
     		add_theme_support( 'automatic-feed-links' );

     

    ビジュアルエディタで使われるクラスを css に追加。

    --- a/css/screen.css
    +++ b/css/screen.css
    @@ -260,6 +260,10 @@ nav a:hover {
       font-size: 2em;
     }
    
    +.mceContentBody {
    +  padding: 0 20px;
    +}
    +
     /* =================
      *  MOBILE: Sidebar
      * ================= */
    --- a/sass/_main.sass
    +++ b/sass/_main.sass
    @@ -215,6 +215,10 @@ nav
     	article h1
     		font-size: 2em
    
    +// for visual editor
    +.mceContentBody
    +	padding: 0 20px
    +
     /* =================
      *  MOBILE: Sidebar
      * =================

     

    ビジュアルエディタ用のスタイルを Before-After で見てみると…

    左: 適用前 右: 適用後
    左: 適用前 右: 適用後

     

    しっかり適用されてます。やったね!

    このテーマ内に nav_menu への参照が見つかりませんでした

    推奨: このテーマ内に nav_menu への参照が見つかりませんでした。テーマにメニューバーがあるのなら、そのための WordPress の nav_menu 機能を使用してください。

    外観 > メニュー で作成できるメニューですね。

    使えるようにするには機能を使うよ!ってことを書かなくちゃいけません。

    functions.php にまずメニューを登録。

    --- a/functions.php
    +++ b/functions.php
    @@ -66,6 +66,9 @@ if ( ! function_exists( 'hoho_setup' ) ):
     		// アイキャッチを有効化
     		add_theme_support( 'post-thumbnails' );
    
    +		// メニューを登録
    +		register_nav_menu( 'primary', 'ヘッダーのメニュー' );
    +
     	}
    
     endif;

     

    登録すると、登録したメニューが出てきます。

    メニューが追加されました。
    メニューが追加されました。

     

    ただまぁこれも出力したいところへ記述が必要ですね、header.php の元々あったメニューを書き変え。

    html5 なマークアップにしたいため配列でそうなるよう指定します。

    --- a/header.php
    +++ b/header.php
    @@ -56,13 +56,24 @@
    
     	<header class="wrapper clearfix">
     		<h1 class="title">h1.title</h1>
    -		<nav>
    -			<ul>
    -				<li><a href="#">nav ul li a</a></li>
    -				<li><a href="#">nav ul li a</a></li>
    -				<li><a href="#">nav ul li a</a></li>
    -			</ul>
    -		</nav>
    +
    +		<?php
    +		/**
    +		 * ヘッダーメニュー
    +		 */
    +		wp_nav_menu(
    +			array(
    +				// 使うメニューの登録した名前を指定
    +				'theme_location'  => 'primary',
    +				// ul を囲むタグ。div か nav を指定。false でタグなし。デフォルト値は div
    +				'container'       => 'nav',
    +				// container にクラスを付与
    +				'container_class' => 'nav nav-top menu-container',
    +				// ul にクラスを付与。デフォルト値は menu
    +				'menu_class'      => 'menu menu-top',
    +			)
    +		); ?>
    +
     	</header>
     </div>
    メニューが実装されましたー
    メニューが実装されましたー

     

    続いてせっかくなのでフッターにもメニューを追加してみます。

    同じようにメニューを登録し、表示させたいところから呼び出す。

    --- a/functions.php
    +++ b/functions.php
    @@ -67,7 +67,12 @@ if ( ! function_exists( 'hoho_setup' ) ):
     		add_theme_support( 'post-thumbnails' );
    
     		// メニューを登録
    -		register_nav_menu( 'primary', 'ヘッダーのメニュー' );
    +		register_nav_menus(
    +			array(
    +				'primary'   => 'ヘッダーのメニュー',
    +				'secondary' => 'フッターのメニュー',
    +			)
    +		);
    
     	}
    --- a/footer.php
    +++ b/footer.php
    @@ -13,6 +13,26 @@
     <!-- #main-container -->
    
     <div class="footer-container">
    +
    +	<div class="wrapper clearfix">
    +		<?php
    +		/**
    +		 * フッターメニュー
    +		 */
    +		wp_nav_menu(
    +			array(
    +				// 使うメニューの登録した名前を指定
    +				'theme_location'  => 'secondary',
    +				// ul を囲むタグ。div か nav を指定。false でタグなし。デフォルト値は div
    +				'container'       => 'nav',
    +				// container にクラスを付与
    +				'container_class' => 'nav nav-bottom menu-container',
    +				// ul にクラスを付与。デフォルト値は menu
    +				'menu_class'      => 'menu menu-bottom',
    +			)
    +		); ?>
    +	</div>
    +
     	<footer class="wrapper">
     		<h3>footer</h3>
     	</footer>

     

    ファイル header.php 内にハードコードされているようなリンクが見つかりました

    そもそも、元々 html5 なテンプレートを元に作り始めたんで、そのコードが残ってます。

    IE7以下のブラウザの場合 chrome frame をオススメするメッセージを出してくれるテンプレートなのですよね。

    まぁいらないんで消しときます。

    --- a/header.php
    +++ b/header.php
    @@ -35,12 +35,6 @@
     	<?php wp_head(); ?>
     </head>
     <body <?php body_class(); ?>>
    -<!--[if lt IE 7]>
    -<p class="chromeframe">You are using an <strong>outdated</strong> browser. Please
    -	<a href="http://browsehappy.com/">upgrade your browser</a> or
    -	<a href="http://www.google.com/chromeframe/?redirect=true">activate Google Chrome Frame</a> to improve your experience.
    -</p>
    -<![endif]-->
    
     <div class="header-container">

     

     

    ここまでが終わると、すごくそれっぽくなります。というか、もうなってます。

    現時点上から下までのスクショ
    現時点上から下までのスクショ

     

    まだテーマチェックで日本語が~とだけは言われますが、日本語で書いてるので問題ないですね!

    7回目の今回はだいぶとボリュームが多いですし若干難しいところです。

    ここをしっかりと追えないとテーマをいじるにもなかなか手こずるところなので、きっちり学びたいところ。

    次回、見た目や細かいところを整え。

    ここまでのzipがこちら、今までの履歴は Github でも辿れます。

  • Twenty FourteenテーマがすでにWordPressの開発段階に!ちょっと触ってみたった。

    Twenty FourteenテーマがすでにWordPressの開発段階に!ちょっと触ってみたった。

    WordPress 3.6がリリースされましたねー。

    定期的にWordPressのGitリポジトリをPullして遊んでるんですけども、さっきPullしてみたらなんとTwenty Fourteenがありました。

    ということで早速試してみましたよー。

    2014年まであと4ヶ月ですね★
    2014年まであと4ヶ月ですね★

    Twenty Fourteenの見た目

    Twenty Thirteenの時はリリースまでに細かいコード変更はあったものの、目に見えるデザインはそんな変わらなかったので変わらないのかな?

    白黒を基調に、というかモノトーンに限りなく近いという。

    リンク系が緑です。

    フロントページ
    フロントページ

    もちろんレスポンシブに対応なさっており。

    幅が狭くなると…
    幅が狭くなると…

     

    狭くなった感じ。
    狭くなった感じ。

    @media分岐は 400, 672, 740, 770, 870, 1008, 1150, 1230pxと細かくありました。

     

    ウィジェットエリアはサイドバー2つ、フッター5つ。

    ウィジェットエリアね
    ウィジェットエリアね

     

    メニューは2つ。

    トップとサイドバーですねー。
    トップとサイドバーですねー。

     

    パッとこんな感じでしたー。

    ホホまとめ

    最新の色々が取り込まれているのでソースを見るだけで勉強になりますまじで。

    「見てみたいぜ!!」

    って方は Github Twenty Fourteenのところ、もしくは今日時点のテーマをzipにしておいたのでダウンロードして見てみてはいかがでしょうか。

    進化するモノに触れられるというのは刺激的でほんと素晴らしいですね。

  • FeedlyのブログRSS購読者数(フォロワー数)を取得・表示してうれしがる方法を紹介するよ!もちろんWordPressでも

    FeedlyのブログRSS購読者数(フォロワー数)を取得・表示してうれしがる方法を紹介するよ!もちろんWordPressでも

    NKJ56_hohonitewonoseru ぼくはがっちり使ってますので今まで何度も取り上げています。

     

    FeedlyにログインしてRSS登録しようとしたら出るfollowersあるじゃないですか

    購読者数 (followers) ってやつですね、あれを取得したいなと思ったんです。

    これ!このフォロワー数をブログに表示させたい
    これ!このフォロワー数をブログに表示させたい

    (ここから多少だらだらするので、コードだけ欲しいひとは一番下までいったらいいと思うよ!) 当ブログRSSフィードのところに出てるようなことができますよー。

     

    FeedlyのRSS購読者数(フォロワー数)を取得すべく調べてみた

    まずはGoogleさんに日本語・英語で聞くも、載っておらず。(2013.06.26時点) FeedlyのAPIも公開されてないっぽい(´д⊂)‥ハゥ ということでGoogle+のカウント数を自力で取得した時みたいに自力で調べました。 おもむろにFirefox→Firebugを立ち上げつつFeedlyにアクセス! ムムッ…

    これはきた…!
    これはきた…!

     

    ってかJsonで出してくれてるやん!
    ってかJsonで出してくれてるやん!

    こうなればこっちのもんですね!

     

    まずはPHPでの出力

    WordPressの場合はキャッシュや便利な wp_remote_get関数 が使えるので後述。

    <?php
    // RSS feed のURLをエンコード
    $feed_url = rawurlencode( '【ここにRSSのURLを入れましょう】' );
    // 購読情報をJsonで取得して購読者数だけ頂く
    $subscribers = file_get_contents( "http://cloud.feedly.com/v3/feeds/feed%2F$feed_url" );
    $subscribers = json_decode( $subscribers );
    $subscribers = $subscribers->subscribers;
    ?>
    <!-- RSS購読者数表示 -->
    FeedlyでのRSS購読者数は <span class="subscribers"><?php echo number_format_i18n( $subscribers ); ?></span> 人です。

    【ここにRSSのURLを入れましょう】 をRSSのURLで置き換えて表示させたいところに貼り付ければOK。

    出力結果はこんな感じ
    出力結果はこんな感じ

    エラー処理はしてないので使う時はちゃんとエラー処理しましょう。

     

    WordPressでFeedlyのブログRSS購読者数(フォロワー数)を取得・表示する方法

    ここが本題です、やっと辿り着きました( ´ー`)フゥー... PHPだけで書くとそこで処理が止まっちゃうのでよろしくないですね! WordPressだとその辺りの応用が効くので楽ちんです。 以前試してブログに書いた

    が生きてくるわけですよここで!(前置きが長い せっかくなので半日はキャッシュさせておくようにしました、でないと表示遅くなっちゃいますもんね。

    <?php
    /**
     * FeedlyのブログRSS購読者数(フォロワー数)を取得・表示
     */
    
    // 値がない、もしくは古いときはデータベースへ一時保存
    if ( false === ( $subscribers = get_transient( 'feedly_subscribers' ) ) ) :
    	// RSS feed のURLをエンコード
    	$feed_url = rawurlencode( get_bloginfo( 'rss2_url' ) );
    	// 購読情報をJsonで取得して購読者数だけ頂く
    	$subscribers = wp_remote_get( "http://cloud.feedly.com/v3/feeds/feed%2F$feed_url" );
    	$subscribers = json_decode( $subscribers['body'] );
    	$subscribers = $subscribers->subscribers;
    
    	// データベースへ購読者数を一時保存する。60 * 60 * 12 = 半日。お好きに値は変えましょう
    	set_transient( 'feedly_subscribers', $subscribers, 60 * 60 * 12 );
    endif;
    ?>
    <!-- RSS購読者数表示 -->
    FeedlyでのRSS購読者数は <span class="subscribers"><?php echo number_format_i18n( $subscribers ); ?></span> 人です。

    これでOKです!コピペでOKです。

     

    ホホまとめ

    というわけで無事、FeedlyのRSS購読者数を取得してWordPressで作ったブログに表示させることができました。 ぼくなんかのブログはまだ始めたばかりなので購読者数少ないですしむしろ載せないほうがいいんじゃないか説はありますけども、オリジナリティを高める意味でとても有用だと思います。 また、これを読んで「なかなかやるじゃん」みたいなことを思ってもらえたらRSS購読してくれて全然かまいません。 follow me in feedly

  • Twenty Thirteen WordPress テーマがコミットされてましたので使てみた。

    Twenty Thirteen WordPress テーマがコミットされてましたので使てみた。

    タイトルが誤字っぽいですが、”つこてみた” と読んでいただく形になります(かんさいべん

    wordpressのgitをクローンしてローカルで最新版をうれしそうにいつも遊んでいるぼくです。

    いつものようにpullしてみると新しくテーマが追加されていました。

     

    Twenty Twelve → Twenty Thirteen と来てるのでこれからは毎年テーマが増えていくんでしょうかね?(要確認ぼく

    とりあえずローカルで試してみましたよっと。

    外観

    トップページはこんな感じ。ポップでいいね。

    twentythirteen_top

     

     

    コンテンツ下~フッター付近はこんな感じ。

    twentythirteen_footer

     

     

    投稿画面

    投稿フォーマットが充実。

    twentythirteen_post-format

     

     

    ウィジェット

    ウィジェットはサイドバーとフッターの2つ使える。

    twentythirteen_widget

     

    レスポンシブも対応

    480×800画面で見るとこんな感じです。

     

    まとめ

    まだプロジェクト自体始まったばかりなので、翻訳ファイルは入ってません。

    メニューはヘッダーに1つ。

    スクロールで上部にタイトル&検索バーが追従してきます。

     

    新しいもの試してみたい方はどうぞ。

    Twenty Thirteen v0.1

  • LINEで送るボタン 公式の設置方法じゃandroidでリンク飛ばないので

    LINEで送るボタン 公式の設置方法じゃandroidでリンク飛ばないので

    若年層に大人気、というか10~20代で使ってへん人いてるんか?ってぐらいのLINE。

    2013年1月17日に公式でソーシャルボタンがリリースされましたね。

    さて、前から試していてすごく今さらなんですが、公式のまんま設置したらandroidで LINEで送る を押してもLINEアプリが起動しないんですよ。

    LINEのホームページに飛んでしまうんです。iPhoneだとアプリ起動するんですけどね。

    ということで、LINEアプリがダイレクトに起動するよう書き変えました。

    ※スマートフォンサイトへの設置方法は読み込む外部スクリプトを書き変えないといけないんで却下。

     

    書き変えたらこうなった

    まず設置方法リンクの一番下から画像zipをダウンロードして然るべきディレクトリに画像を据えておきます。

     

    Webサイトの場合

    <a href="line://msg/text/?LINE%E3%81%A7%E9%80%81%E3%82%8B%0D%0Ahttp%3A%2F%2Fline.naver.jp%2F"><img src="[ボタン画像のURL]" width="[ボタン幅]" height="[ボタン高さ]" alt="LINEで送る" /></a>

    WordPress の場合

    <a href="line://msg/text/?<?php the_title(); ?>%0D%0A<?php the_permalink(); ?>"><img src="[ボタン画像のURL]" width="[ボタン幅]" height="[ボタン高さ]" alt="LINEで送る" /></a>

    ボタン幅、高さは画像によります。ぼくは 幅 36px, 高さ 60px で。

     

    これでちゃんとandroidでも起動します。

    http://line.naver.jp/R/msg/~ をダイレクトに起動のパラメータ line://msg~ に置き換えた感じです。

     

    うちのサイトではモバイルビューの時だけ出るようにしてますしてました。

    line-button_sample

     

    LINEで送るボタンっている?? 他のソーシャルボタンみたくカウントしてくれたらいいのにー。

    LINEでビジネスとコミュニケーションを加速する方法
    松浦 法子
    ソーテック社
    売り上げランキング: 83,776
  • WordPressSEOプラグイン日本語化ファイル(40%)

    WordPressSEOプラグイン日本語化ファイル(40%)

    以前はAll in One SEO Packを使っていたんですけども、WordPress SEOを使ってみたところどう考えても後者のほうが設定多いし使える!

    っということで乗り換え。

    wordpress pluginからのインストールでは日本語があんまり反映されてないので翻訳してみた。

    ただ量が多すぎてとりあえず挫折しているところ。

    そのうちちゃんと解説&日本語化しようと思っているよ。

    ちゃんとできたら公式に入れてもらうようにします。

    日本語化は wordpress-seo-ja.mo をダウンロードして、プラグインlanguagesディレクトリに上書きでおk。

    タイトル & Meta ‹ ローカルWP — WordPress