IMUZA.com

Xserver<<WordPress(ConoHa)<<はてなブログ

ホーム / Wordpress / WordPress:自作テーマをゼロからつくってみた

WordPress:自作テーマをゼロからつくってみた

2023/06/24 Wordpress

WordPress のテーマをゼロからつくってみようと始めたのが昨年の5月でしたので一年になります。完成して公開しました。下記サイトです。

  • そんなには褒めないよ。映画評

もちろん一年と言っても実質ひと月もあればできていただろうという時間の感覚です。

  • スタートは空白の index.php, style.css から
  • デフォルトのメニュー設定はやめた
  • ウィジェットも使わない
  • SEO 関連
  • サイトデザイン
  • PageSpeed Insights

スタートは空白の index.php, style.css から

スタートは本当にゼロからです。

  • WordPress:テーマをゼロから作ってみる(1)

WordPress のテーマは、themes ディレクトリに好きな名前のディレクトリをつくり、そこに index.php と style.css ファイルをつくり、style.css に「Theme Name: テーマ名」のコメント行を入れてインストールすれば認識されます。もちろん有効にしてアクセスしても画面は真っ白です。

後は各テンプレートファイルをつくっていくだけです。下記リンク先に(1)から(15)までの記事と関連記事の一覧があります。

  • テーマをゼロから作ってみる

デフォルトのメニュー設定はやめた

いくつか変更点があります。

「テーマをゼロから作ってみる(3)」と「メニューのid,classを整理カスタマイズ」では、WordPress に用意されているメニュー設定の方法の記事を書いているのですが、その方法はやめました。

理由は、テーマをインストールするだけでテーマ変更を完了したいからです。WordPress デフォルトのテーマ設定を使いますと、テーマインストールとは別に管理画面でテーマ設定をしなくてはいけなくなります。テーマファイルにメニューのテンプレートファイルも含めておけばその必要がなくなり、テーマをインストールするだけで変更が完了します。

これが実際のメニューです。上から

  • 記事一覧は、いわゆるブログページと言われる一覧ページで、設定 > 表示設定 > ホームページの表示で投稿ページに指定している固定ページ
  • おすすめ映画は、カテゴリーのひとつ
  • よく読まれている記事は、wordpress popular posts の自作版
  • あ行〜は、映画タイトルの五十音順カテゴリーの第一階層

となっており、コードは次のようになっています。dashicons と検索は省略してあります。dashicons を svg ファイルで表示する方法は、「WordPress:SVGファイルでDashiconsを表示する」にあります。

<ul class="menu">
	<li class="menu-category menu-item">
		<a title="映画タイトル五十音順" href="#category" id="category" class="menu-item-link">アイコン省略</a>
		<ul class="sub-menu">
			<li class="cat-item cat-item-archives"><a href="<?php echo home_url(); ?>/archives/">アイコン省略<span>記事一覧</span></a></li>
			<li class="cat-item cat-item-recommend"><a href="<?php echo home_url(); ?>/category/recommend/">アイコン省略<span>おすすめ映画</span></a></li>
			<li class="cat-item cat-item-archives"><a href="<?php echo home_url(); ?>/popular/">アイコン省略<span>よく読まれている記事</span></a></li>
			<?php wp_list_categories('depth=1&exclude=' . get_category_by_slug( 'recommend' )->cat_ID . '&title_li='); ?>
		</ul>
	</li>
	<li class="menu-search menu-item">
		検索省略
	</li>
</ul>

このメニューテンプレートファイル(たとえば nav-main.php )を index.php などから get_template_part('nav', 'main') として呼び出します。

ウィジェットも使わない

メニューと同じ意味合いで「WordPress:テーマをゼロから作ってみる(4)」で記事にしたウィジェットも使うのをやめました。メニューにしろウィジェットにしろめったに変更するものではありませんので、テンプレートファイルに書いてしまえばテーマファイルだけで他に設定する必要がなくなります。

たとえば、サイドバーに表示する「最新記事一覧」は

	<section id="latest-articles" class="widget-articles">
		<h3 class="widget-title">最新映画レビュー</h3>
		<?php
		$query = new WP_Query(array('posts_per_page' => 5));
		if ( $query->have_posts() ) :
			while ( $query->have_posts() ) : $query->the_post();
		?>
		<a class="widget-card-link" href="<?php the_permalink(); ?>">
			<article class="widget-article">
				<figure class="widget-thumbnail"><?php has_post_thumbnail() ? the_post_thumbnail('thumbnail') : get_dummy_img(''); ?></figure>
				<p class="widget-article-title"><?php the_title(); ?></p>
        		<time class="widget-date"><?php the_time('Y.m.d'); ?></time>
			</article>
		</a>
		<?php endwhile; endif; ?>
       	<?php wp_reset_postdata(); ?>
		<div class="see-more"><a href="/archives/">最新レビューを一覧で見る</a></div>
	</section>

をテンプレートファイル sidebar.php として保存し、get_sidebar() で呼び出します。

SEO 関連

SEO 関連で思いつくこともプラグインを使わずすべて自前でまかなっています。

  • robotsメタタグをプラグインなしで制御する
  • canonicalタグをプラグインなしで制御する
  • JSON-LD構造化データをプラグインなしで出力
  • OGPタグをプラグインなしで挿入する

サイトデザイン

デザイン面の詳細は記事にしていませんが、構造の基本は、モバイルファーストのレスポンシブデザインで、コンテンツ幅の最大とサイドバー幅を固定して作成しています。

  • コンテンツ幅で決めるメディアクエリのブレイクポイント

PageSpeed Insights

ということで、PageSpeed Insights の結果です。

デスクトップでは、

モバイルでは、

という結果です。さらに検討ですね。

お中元 黒毛和牛 国産牛 6種 2段重 焼肉セット 445g ご自宅用 高級 国産牛 A4 A5 等級 焼肉 牛肉 おせち 人...

お中元 黒毛和牛 国産牛 6種 2段重 焼肉セット 445g ご自宅用 高級 国産牛 A4 A5 等級 焼肉 牛肉 おせち 人…

5,980円(09/26 02:43時点)
Amazon
WordPress:the_date()で日付が表示されない
WordPress高速化:最新記事などウィジェット系のキャッシュ
Twitter
Facebook
ブックマーク
LINEで送る

最初のサイドバー

最新記事

2023/09/14

GDPRを設定する

2023/08/30

scroll-behavior:smoothは履歴に残る

2023/08/22

要素がトップにきたことを感知する-IntersectionObserver

2023/08/8

ホームページとは別に投稿一覧ページをつくる方法-WordPress

2023/07/28

WordPress:シングルページにループはいらない

最新記事を一覧で見る

よく読まれている記事

よく読まれている記事を一覧で見る

カテゴリー

  • はてなブログ215
  • WebTips110
  • javascript100
  • Joomla!88
  • Wordpress78
  • Windows68
  • CSS64
  • Joomla!更新53
  • Linux49
  • はてなテーマ45
  • Google36
  • Plamo33
  • はてなプラグイン25
  • php23
  • Node.js18
  • Ubuntu16
  • SASS16
  • laravel415
  • Chrome11
  • cms-style10
  • iPhone9
  • Git入門6
  • ConoHa WING6
  • genesis6
  • Python5
  • Android5
  • PC全般4
  • Facebook4
  • スマートフォン4
  • Xserver3
  • Firefox3
  • 静的サイトジェネレーター3
  • SSD3
  • Docker3
  • Blankslate3
  • Twitter2
  • Mactype2
  • GitHub2
  • youtube1
  • はてなブクマ1
  • rails入門1
  • 映画1

Footer

My Web Sites

  • @半径とことこ60分
  • そんなには褒めないよ。映画評
  • IMUZA.com
  • GitHub

Related Sites

  • WordPress公式
  • WordPress関数リファレンス
  • PHPマニュアル

Contact Us

  • お問い合わせフォーム
  • Twitter
  • Facebook
  • Feedly

Copyright © 2023 · IMUZA.com