WordPress テーマのスニペット集

このページは、WordPress のテーマで使用するスニペットなどをまとめる予定のページです。

目次

注意

  • コードのライセンスは CC0 (クレジット表示不要、改変可、商用可) です。

スニペット

メインループ雛形 (一覧)

<?php while (have_posts()): ?>
    <?php the_post(); ?>
    <?php the_time('Y年m月d日'); ?>
    <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
<?php endwhile ?>

メインループ雛形 (シングル)

<?php while (have_posts()): ?>
    <?php the_post(); ?>
    <?php the_time('Y年m月d日'); ?>
    <?php the_title(); ?>
    <?php the_content(); ?>
<?php endwhile ?>

サブループ雛形

<?php
$q = new WP_Query(array(
    'posts_per_page' => 5 // 表示件数
));
while ($q->have_posts()): ?>
    <?php $q->the_post(); ?>
    <?php the_time('Y年m月d日'); ?>
    <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
<?php
    wp_reset_postdata();
endwhile ?>

リンク付きタイトル

<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>

<title> を追加する

functions.php
add_theme_support('title-tag'); // タイトルを付ける
add_filter('document_title_separator', function(){ return '|'; }); // タイトルの区切り文字を「|」にする (必要な場合)

the_posts_pagination() の <h2> を消す

functions.php
add_filter('navigation_markup_template', function($template, $class) {
    if ($class == 'pagination') {
        $template = '<nav class="navigation %1$s" role="navigation"><div class="nav-links">%3$s</div></nav>';
    }
    return $template;
}, 10, 2);

管理バーの余白削除 + 半透明化

functions.php
// 管理バー余白削除
add_theme_support( 'admin-bar', array( 'callback' => '__return_false' ) );
style.css
/** 管理バー (半透明 → hover で半透明解除) */
#wpadminbar {
    opacity: 0.5;
    transition: 0.2s opacity;
}
#wpadminbar:hover {
    opacity: 1;
}

ショートコード

home_url

functions.php
// home_url()
add_shortcode('home_url', function(){ return home_url(); });

Contact Form 7

メールアドレスの確認欄チェック

functions.php
// メールアドレス確認
// https://contactform7.com/2015/03/28/custom-validation/
add_filter( 'wpcf7_validate_email*', 'custom_email_confirmation_validation_filter', 20, 2 );
function custom_email_confirmation_validation_filter( $result, $tag ) {
    $email_field_name = 'email'; // メールアドレス欄の name
    $email_conf_field_name = 'email_confirm'; // 確認欄の name

    if ( $email_conf_field_name == $tag->name ) {
        $your_email = isset( $_POST[$email_field_name] ) ? trim( $_POST[$email_field_name] ) : '';
        $your_email_confirm = isset( $_POST[$email_conf_field_name] ) ? trim( $_POST[$email_conf_field_name] ) : '';
 
        if ( $your_email != $your_email_confirm ) {
            $result->invalidate( $tag, '同じメールアドレスを入力してください。' );
        }
    }
 
    return $result;
}