WordPressスニペット

逐一調べる手間を省きたいので、自分がよく使うWordpressのコードをさらっと書きます。

 

 

functions.phpに使用

headの中の諸々を削除

WordPressでheader.phpに<?php wp_head(); ?>と記述すると、勝手に色々と出力されてしまいます。

不要なものを削除する場合は下記を使用。

// RSS
remove_action('wp_head', 'feed_links', 2);
// RSS
remove_action('wp_head', 'feed_links_extra', 3);
// Really Simple Discovery
remove_action('wp_head', 'rsd_link');
// Windows Live Writer
remove_action('wp_head', 'wlwmanifest_link');
// 分割ページのリンク
remove_action('wp_head', 'adjacent_posts_rel_link_wp_head');
// WordPressのバージョン
remove_action('wp_head', 'wp_generator');
// canonical
remove_action('wp_head', 'rel_canonical');
// indexへのリンク
remove_action('wp_head', 'index_rel_link');
// 分割ページへのリンク
remove_action('wp_head', 'parent_post_rel_link', 10, 0);
// 分割ページへのリンク
remove_action('wp_head', 'start_post_rel_link', 10, 0);
// WordPressの投稿IDのリンク
remove_action('wp_head', 'wp_shortlink_wp_head');
// Since 4.4
remove_action('wp_head','wp_oembed_add_discovery_links');
remove_action('wp_head','rest_output_link_wp_head');

// WPデフォルトのjqueryを使わない場合
function my_delete_local_jquery() {
wp_deregister_script('jquery');
}
add_action( 'wp_enqueue_scripts', 'my_delete_local_jquery' );

// プレビュー画面で管理画面のバーを表示しない
// 非表示にしないとプレビュー画面でページ上部に空白が表示される。
add_filter( 'show_admin_bar', '__return_false' );

// DNSプリフェッチ削除(4.6〜)
function remove_dns_prefetch( $hints, $relation_type ) {
if ( 'dns-prefetch' === $relation_type ) {
return array_diff( wp_dependencies_unique_hosts(), $hints );
}
return $hints;
}
add_filter( 'wp_resource_hints', 'remove_dns_prefetch', 10, 2 );

 

サムネイルの設定

デフォルトではサムネイルが使えないので、サムネイルを使えるようにする。

add_theme_support( 'post-thumbnails' );

 

画像のリサイズの設定を追加したい場合

add_image_size( '設定名' , width, height, true );

 

titleの設定

4.4以降から下記が非推奨(今のところ下記の記述でも動作に支障はありません。)

<?php wp_title( '|', true, 'right' ); ?><?php echo bloginfo('name'); ?>

↑を↓のように変更

functions.phpに記述

add_theme_support( 'title-tag' );

function wp_doc_title_separator( $separator ) {
$separator = '|';
return $separator;
}
add_filter( 'document_title_separator', 'wp_doc_title_separator' );

// タグラインの表示を消す
function wp_doc_title_parts( $title ) {
if ( is_home() || is_front_page() ) {
unset( $title['tagline'] );
}
return $title;
}
add_filter( 'document_title_parts', 'wp_doc_title_parts', 10, 1 );

header.phpのtitleタグへの記述

<?php echo wp_get_document_title(); ?>

 

検索範囲を投稿のみにする

何もしないと固定ページまで検索範囲に含まれます。

function searchFilter($query) {
if ( !is_admin() && $query->is_search() ) {
$query->set( 'post_type', 'post' );
}
return $query;
}
add_action( 'pre_get_posts', 'searchFilter' );

 

管理画面に投稿のアイキャッチを表示

function customize_admin_manage_posts_columns( $columns ) {
$columns['thumbnail'] = __ ('Thumbnail');
return $columns;
}
add_filter( 'manage_posts_columns', 'customize_admin_manage_posts_columns');

function customize_admin_add_column($column_name, $post_id) {
if ( 'thumbnail' == $column_name ) {
$thum = get_the_post_thumbnail($post_id, '画像のリサイズ設定名', array( 'style'=>'width:75px;height:auto;' ));
}
if ( isset($thum) && $thum ) {
echo $thum;
}
}
add_action( 'manage_posts_custom_column', 'customize_admin_add_column', 10, 2 );

 

カスタム投稿タイプを追加(例:galleryを追加する場合)

function add_post_gallery() {
register_post_type( 'gallery', array(
'label' => '管理画面サイドバーの表示名',
'public' => true,
'exclude_from_search' => true
'show_ui' => true,
'show_in_menu' => true,
'menu_position' => 5,
'hierarchical' => false,
'has_archive' => true,
'supports' => array(
'title',
'thumbnail'
)
));

// カテゴリ設定
register_taxonomy(
'カテゴリ名',
'gallery', // 該当するpost_type
array(
'hierarchical' => false,
'update_count_callback' => '_update_post_term_count',
'label' => '管理画面サイドバーの表示名',
'singular_label' => '管理画面上の表示名',
'show_admin_column' => true,
'public' => true,
'show_ui' => true
);
);
}
add_action( 'init', 'add_post_gallery', 1 )

 

特定の投稿タイプの表示件数を変更

例:投稿タイプgalleryの1ページあたりの表示件数を12件にする

function change_gallery_posts( $query ) {
if ( !is_admin() && $query->is_main_query() && is_post_type_archive('gallery') ) {
$query -> set( 'posts_per_page', 12 );
$query -> set( 'orderby', 'menu_order' );
$query -> set( 'order', 'ASC' );
}
}
add_action( 'pre_get_posts', 'change_gallery_posts' )

 

本文抜粋の文字数を変更

例:80文字を指定する場合(デフォルトは110字)

function chenge_excerpt_length($length) {
return 80;
}
add_filter( 'excerpt_length', 'change_excerpt_length' );

 

本文抜粋の末尾の省略文字を変更したい場合

例:3点リーダのみにする(デフォルトは[…])

function change_excerpt_more() {
return '...';
}
add_filter( 'excerpt_more', 'change_excerpt_more' )

 

ファイルのパスを記述する

サイトのURLを取得

 

echo home_url();

 

WordPressのURLを取得

echo site_url();

 

WordPressのテンプレートディレクトリまでのフルパス

echo get_template_directory_uri();

 

アイキャッチ画像を表示

*ループの中で使用

<img src=”〜自動で書き出されます。

the_post_thumbnail();

 

アイキャッチ画像のパスだけを取得

*ループの中で使用

$img = get_post_thumbnail_id();
$img_src = wp_get_attachment_image_src( $img, '画像のリサイズ設定名' );

<img src="<?php echo $img_src[0] ?>" alt=""

 

ページのあれこれを取得して表示

*ループの中で使用する

 

タイトルを取得して表示

the_title();

 

本文全文を表示

the_content();

 

本文の抜粋を表示

the_excerpt();

 

投稿日を表示

echo the_time();

 

ループ

表示件数などを変更しない場合

<?php if ( have_posts() ) : while( have_posts() ) : the_post(); ?>
//ループ中身
<?php endwhile; ?>
// ページャーがある場合はページャーの記述
<?php else: ?>
// 投稿がない場合の処理
// 例:検索結果がなかったときに「別の文字で検索してください」と表示する
<?php endif; ?>

 

前ページと次ページのページャーを表示

<?php if ( get_previous_post() ): ?>
<?php previous_post_link('%link', 'Prev'); ?>
<?php endif; ?>

<?php if ( get_next_post() ): ?>
<?php next_post_link('%link', 'Next'); ?>
<?php endif; ?>