HTMLサイトのWordPress化
HTMLを用意
WordPress化したいHTMLサイトを用意
(以下簡易的なサンプルコードを記載)
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>タイトル</title>
<link rel="stylesheet" href="./css/style.css" type="text/css">
</head>
<body>
<header></header>
<main></main>
<nav></nav>
<footer></footer>
</body>
</html>
慣れてきたら、HTMLを用意せず、最初からパーツ化したPHP(テンプレートファイル)を作成して、その中に記述していきます。
共通部分のパーツ化&パースの読み込み
- index.html を、index.php(複数ページあるときはfront-page.php)と拡張子を書き換える
- それぞれパーツ化する(header.php, footer.phpなど)
- インクルードタグを使って先ほど作ったパーツを読み込む
ヘッド: <?php wp_head(); ?>
ヘッダー: <?php get_header(); ?>
サイドバー: <?php get_sidebar(); ?>
フッター: <?php get_footer(); ?> - システムファイルを読み込む
headが終わる前に <?php wp_head(); ?>
bodyが終わる前に <?php wp_footer(); ?>
header.php :
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>タイトル</title>
<link rel="stylesheet" href="./css/style.css" type="text/css">
<?php wp_head(); ?>
</head>
<body>
<header>
<h1>タイトル</h1>
</header>
index.php
<?php get_header(); ?>
<main>
</main>
<?php get_sidebar(); ?>
<nav>
</nav>
<?php get_sidebar(); ?>
<?php get_footer(); ?>
footer.php
JavaScriptを読み込ませるときは<?php wp_footer(); ?>より上に書きましょう。
<?php wp_footer(); ?>が、bodyの一番下にくるようにします。
<footer>
</footer>
<?php wp_footer(); ?>
</body>
</html>
テーマのアップ・有効化
テーマの場所:
wp-content > themes
この中にindex.phpなどが入ったフォルダをアップ
フォルダ内必須:
- index.php
- style.css
その他フォルダ内に入りそうなもの:
- header.php
- sidebar.php
- footer.php
- page1.php
- images(もしくは img)フォルダ
- cssフォルダ
テーマの名前
テーマの名前はstyle.cssに書き込むことで決めれます。
WordPressで書く場合:
外観 > テーマエディタ
最低限必要なものはTheme Name
@charset "UTF-8";
/* Theme Name: XXXX */
その他入れる場合、以下のようなものを入れます。
@charset "UTF-8";
/*
Theme Name: XXXX
Theme URL: https://XXXXX
Description: 自分のサイト用
Author: a3
Version: 1.0.0
Licence: a3
License URI: http://www.XXXX/licenses/gpl.html
*/
テーマのサムネイルを設定
テーマのフォルダの直下に「screenshot.png」を入れればサムネイルになります。
サイズ:880px × 660px
テンプレートタグでパスを書き換える
テンプレートタグとは、データベースから必要なデータを引っ張ってくる関数です。
パラメーターによって取得できるデータを制御できます。
css, js, 画像, リンクなどのパスをWordPress用に書き換えます。
bloginfo系
<!-- サイト名を表示 : 設定 > 一般 > サイトのタイトルが表示される -->
<?php bloginfo( 'name' ); ?>
<title><?php bloginfo('name');?> | <?php bloginfo( 'description' ); ?></title>
<!-- サイト名を表示 : 設定 > 一般 > キャッチフレーズが表示される -->
<?php bloginfo( 'description' ); ?>
<title><?php bloginfo('name');?> | <?php bloginfo( 'description' ); ?></title>
<!-- charsetをテンプレートタグで記述する場合 : utf-8 -->
<?php bloginfo( 'charset' ); ?>
<meta charset="<?php bloginfo( 'charset' ); ?>">
<!-- langをテンプレートタグで記述する場合 : 設定 > 一般 > サイト言語 -->
<?php bloginfo( 'language' ); ?>
<html lang="<?php bloginfo( 'language' ); ?>" >
<!-- テンプレートフォルダ内のimgにアクセス -->
<?php bloginfo('url');?>
<img src="<?php bloginfo('template_url');?>/img/XXX.jpg" alt="">;
<!-- 特定のページにリンク -->
<?php bloginfo('template_url');?>
<!-- XXX.co.jp/service だと -->
<a href="<?php bloginfo('url');?>/service"></a>
記事系
<!-- 記事のタイトルを表示 -->
<?php the_tile(''); ?>
<!-- 記事の日付を表示 -->
<?php the_date(''); ?>
<?php echo get_the_date( $format, $post ); ?>
<?php the_time( get_option( 'date_format' ) ); ?>
<!-- 記事へのリンク -->
<?php the_permalink(); ?>
<a href="<?php the_permalink(); ?>">記事を読む</a>
その他
<!-- ホームのurl : a要素でホームへ戻るhrefなどに -->
<?php echo home_url(); ?>
<a href="<?php echo home_url(); ?>">home</a>
<!-- テンプレートフォルダ内のimgにアクセス -->
<?php echo get_template_directory_uri(); ?>
<img src="<?php echo get_template_directory_uri(); ?>/img/XXX.jpg" alt="">
<!-- ページごとにbodyに違うclassをつけてくれる -->
<?php body_class(); ?>
<body <?php body_class(); ?>>
アイキャッチの入れ方
以下追記する
functions.php
<?php
add_theme_support( 'post-thumbnails' );
add_image_size( 'post-thumbnails', 400, 200, true )
index.php
サムネを入れるだけの記述
<?php the_post_thumbnail( 'post-thumbnails' ); ?>
サムネがある場合とない場合で記述を変える場合
<?php if ( has_post_thumbnail() ): ?>
<!-- サムネがある場合はここを実行 -->
<?php else: ?>
<!-- サムネがない場合はここが実行 -->
<?php endif; ?>
<?php if ( has_post_thumbnail() ): ?>
<!-- サムネがある場合はここを実行 -->
<?php the_post_thumbnail( 'post-thumbnail' ); ?>
<?php else: ?>
<!-- サムネがない場合はここが実行 -->
<img src="<?php echo get_template_directory_uri(); ?>/img/eye-catch.jpg" alt="NoImage">
<?php endif; ?>
タイトルをトップと、記事とで変える
以下それぞれに記述
functions.php
function titles() {
$title = wp_title(' | ', true, 'right');
if(is_home()) {
//トップページ
echo bloginfo('name').' | '.bloginfo( 'description' );
} else {
//トップページ以外
echo $title . bloginfo('name');
}
}
header.php
<title><?php titles(); ?></title>
投稿ページの雛形
投稿ページのひな型は「single.php」
固定ページの雛形
固定ページのひな型は「page.php」
HTMLを固定ページとして使いたい場合
- htmlを用意
XXX.htm - 頭に「page-」をつけて、拡張子を「.php」にします。
page-XXX.php - ダッシュボード > 設定 > パーマリンク > 「基本」以外に設定
投稿名などで良いかと思います。 - WordPressで固定ページを作成
- ページ編集画面 > パーマリンク > URLスラッグ > page-を付ける前の名前に変更
「XXX」と入力
リンク先は「href=”/XXX”」で反応します。
<a href="/XXX">XXX</a></li>
お知らせなどの投稿系データの出力
まずメインクエリを設定
- 設定 > 表示設定
- 「ホームページの表示」の「最新の投稿」にチェックを入れる
次に以下コードをHTMLに記述
<ul>
<?php if(have_posts()) : while(have_posts()) : the_post(); ?>
<li>
<a href="<?php the_permalink() ;?>">
<div class="date"><?php the_date(); ?></div>
<div class="ttl"><?php the_title(); ?></div>
</a>
</li>
<?php endwhile; ?>
<?php endif; ?>
</ul>
投稿系のデータを出力
- メインクエリを選択できるのはTOPだけ
- サブページはその固定ページの情報がメインクエリ
<!-- サブページ -->
<?php get_header(); ?>
<div id="content">
<!-- そのページのメインクエリの情報を引っ張ってくるループ処理 -->
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<!-- 管理画面で登録された情報を引っ張ってくる -->
<?php the_content(); ?>
<?php endwhile; ?>
<?php endif; ?>
</div>
<?php get_footer(); ?>
テンプレートファイルの概念に従い各種ファイル作成
例として最終的にテーマファイルは以下のようなもになります。
- archive-news.php
- 記事一覧などのアーカイブページ (archive.php)
- テーマフッター (footer.php)
- トップページ (front-page.php)
- テーマヘッダー (header.php)
- メインインデックスのテンプレート (index.php)
- page-company.php
- page-contact.php
- page-service.php
- 個別投稿ページ、固定ページ (page.php)
- sec-service.php
- 投稿の記事ページ (single.php)
それぞれがテンプレートファイルと呼ばれるものです。
テンプレートファイルの特徴は2つあります。
一つ目は、特定のURLを指定したときに、そのページがどのテンプレートファイルを読み込むか決まっています。
二つ目は、さらに読み込まれるテンプレートファイルには優先順位があります。
テンプレートファイルには階層があって、読み込む優先順位が決まります。
例えば、固定ページなら次のような階層があります。
page-{slug}.php → page-{id}.php → page.php
XXX.co.jp/company
これを固定ページで作った場合で、固定ページのIDが3の場合
page-company.php → page-3.php → page.php
こういった階層を「テンプレート階層」といいます。
各ページでヘッダーのデザインが変わるとき
メニューなど一部同じで、画像だけが変わるようなものを作るとき
以下のように条件分岐タグを使用して書きます。
<header>
<!-- 共通部分 -->
<nav id="gnav">
<li>トップ</li>
<li>サービス</li>
<li>制作実績</li>
<li>会社概要</li>
</nav>
<!-- 読み込まれる画像を変える -->
<div id="header_img">
<?php if(is_front_page()){ ;?>
<!-- トップページのヘッダー画像を入れる -->
<?php }else{ ;?>
<!-- トップページ以外のヘッダー画像を入れる -->
<?php } ;?>
</div>
</header>
全く別物にするときはテーマヘッダーを作成し、それをphpで読み込ませます。
例えばリクルートページを別のヘッダーにするなら、
リクルートのテーマヘッダー (header-recruit.php)を作成し、
<?php get_header(‘recruit’); ?> で読み込ませます。
表示させる記事数
表示させる記事数は以下で設定
設定 > 表示設定 > 1ページに表示する最大投稿数