WordPress – テーマ作成時に利用するスニペット

必須テンプレート

style.css

/*
Theme Name: 任意のテーマ名
Author: テーマの作成者
Author URI: テーマ作成者のWebサイトURI
Description: テーマの概要
*/

テーマ一覧で表示させる情報を記述しておく。テーマのルートにscreenshot.pngを設置しておくとテーマ一覧でも表示される。

functions.php

<? php 

//アイキャッチ画像機能をONにする
add_theme_support('post-thumbnails');

//投稿管理画面にあるビジュアルモードタブを非表示
function disable_visual_editor_pg(){
add_filter('user_can_richedit', 'disable_visual_editor');
}
function disable_visual_editor(){
return false;
}
add_action( 'load-post.php', 'disable_visual_editor_pg' );
add_action( 'load-post-new.php', 'disable_visual_editor_pg' );

//絵文字機能削除
function disable_emoji() {
 remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
 remove_action( 'admin_print_scripts', 'print_emoji_detection_script' );
 remove_action( 'wp_print_styles', 'print_emoji_styles' );
 remove_action( 'admin_print_styles', 'print_emoji_styles' ); 
 remove_filter( 'the_content_feed', 'wp_staticize_emoji' );
 remove_filter( 'comment_text_rss', 'wp_staticize_emoji' ); 
 remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email' );
}
add_action( 'init', 'disable_emoji' );

//抜粋の文字数(140字)を指定
function custom_excerpt_length($length) {   
  return 140; 
}   
add_filter('excerpt_length', 'custom_excerpt_length');

//抜粋の文末に表示する文字(...)の指定
function custom_excerpt_more($more) {
  return ' ... ';
}
add_filter('excerpt_more', 'custom_excerpt_more');

//スタイルシートをfunctionsから読む場合
function register_stylesheet() {
  wp_enqueue_style('style', get_template_directory_uri().'/style.css', array(), null, 'all');
  //複数の場合
  //wp_enqueue_style('ハンドル名', 'ファイルパス', array(), null, 'all');
}
add_action('wp_enqueue_scripts', 'register_stylesheet');

//Javascriptをfunctionsから読む場合
function register_script() {
  if ( !is_admin() ) {
    wp_deregister_script('jquery');
    wp_enqueue_script('jquery','//code.jquery.com/jquery-*.*.*.min.js', array(), null, 'all');
  //複数の場合
  //wp_enqueue_script('ハンドル名','ファイルパス', array(), null, 'all');
}
add_action('wp_enqueue_scripts', 'register_script');

最初の行に <? php の記述をしておく。最後の行の閉じタグ記述は省略しても構わない。

index.php

//ヘッダーの読み込み
<?php get_header(); ?>

//ここに処理

//フッターの読み込み
<?php get_footer(); ?>

テンプレートファイルが不足している場合に読み込みが行われるファイルであるため、トップページに独自のレイアウトを組み込む場合はhome.phpやfront-page.phpを作成する方が良い。
表示優先度は設定に応じて変化するため、どちらで作成するかは要確認。

参考サイト:【WordPress】front-page.phpがあるのに、home.phpやindex.phpがトップページになる?

header.php

// </head>の直前に置く
<?php wp_deregister_script( 'jquery' ); ?> // WordPressデフォルトのjQueryを読み込まない
<?php wp_head(); ?>

<?php wp_deregister_script( ‘jquery’ ); ?> をfunctions.phpではなくheader.phpに書くのは管理画面に適用させないため。

footer.php

// </body>の直前に置く
<?php wp_footer(); ?>

//headerで記述されているタグを閉じる
</body></html>

その他、必須ではないが原則的に設置するもの

  • page.php (固定ページ)
  • single.php (投稿ページ)
  • archive.php (アーカイブページ)
  • 404.php (404ページ)

場合によって設置するもの

  • taxonomy.php (タクソノミーのアーカイブページ)
  • search.php (検索結果表示ページ)

よく使う関数

URL出力

// トップページのURL
<?php bloginfo("url"); ?>

// テンプレートURL (適用しているテーマのディレクトリURL)
<?php bloginfo("template_url"); ?>

メインループ

<?php while ( have_posts() ) : the_post(); ?>
    <?php the_content(); ?>
<?php endwhile; ?>

サブループ

<?php
    $args = array(
        'post_type' => 'post_type_name', // 投稿タイプ名
        //'post_type' => array( 'post_type_name','post_type_name' ), // 投稿タイプ名(複数)
        'posts_per_page' => 10, // 取得投稿数
        'orderby' => 'date', // 並び順。
        'category_name' => 'category_name', // カテゴリ名。カンマで区切って複数も可。
        'tag' => 'tag_slug', // タグのスラッグ名。
        'meta_key' => 'key', // カスタムフィールドのキーを指定
        'meta_value' => 'value', // カスタムフィールドの値を指定
        'meta_value_num' => 10, // カスタムフィールドの値を指定
        'paged' => $paged, // ページャー使用時のページ数
        // ↓ 特定の「タクソノミー」に関連付けられた投稿を表示する場合(以下は複数のタクソノミーにてAND検索)
        'tax_query' => array(     // タクソノミーパラメーターを指定
            'relation' => 'AND',  // タクソノミーの検索条件に 'AND' か 'OR' が使用可能
            array(
                'taxonomy' => 'color', // タクソノミーを指定
                'field' => 'slug',     // term_id(デフォルト),name,slug のいずれかのタームの種類を選択
                'terms' => array( 'red', 'blue' ), // ターム(文字列かIDを指定)
                'include_children' => true,
                  // 階層を持つタクソノミーの場合に、子孫タクソノミーを含めるかどうか
                'operator' => 'IN'
                  // 演算子'IN','NOT IN','AND','EXISTS'(4.1.0以降),'NOT EXISTS'(4.1.0以降)が利用可能
            ),
    );
    $the_query = new WP_Query( $args );
?>

<?php while( $the_query->have_posts() ) : $the_query->the_post();  ?>
    // 処理
<?php endwhile; wp_reset_postdata(); ?>

サブループにquery_posts関数を利用するのは非推奨。WP_Query関数を使う。
WP_Queryの詳細な書き方は以下を参照。
参考サイト:これは便利!WordPressのWP_Queryでよく使うコードスニペット

ループ内で使う関数

// 投稿へのリンク
<?php the_permalink(); ?>

// 投稿名
<?php the_title(); ?>

// 投稿日
<?php the_time('Y.m.d'); ?>
// 下記のように日付フォーマットを変更できる
// Y.m.d = 0000.00.00
// Y/m/d = 0000/00/00
// Y-m-d = 0000-00-00 

// 本文
<?php the_content(); ?>

// 文字数を制限した本文
<?php echo mb_substr(strip_tags($post-> post_content),0,制限文字数).'…'; ?>

// 記事の抜粋(デフォルトは100文字)
<?php the_excerpt(); ?>

// アイキャッチ画像のURL
<?php the_post_thumbnail_url('full'); ?>

タイトルとURLをコピーしました