gooodmark

goodなWebサイトを厳選ブックマーク!デザインやディレクションの参考にどうぞ。

516bookmark

WordPressのfunction.phpで常用するコード①(WP初期値をカスタマイズ編)

head内の余計なタグを削除

function.php
remove_action( 'wp_head', 'feed_links', 2 ); //サイト全体のフィード
remove_action( 'wp_head', 'feed_links_extra', 3 ); //その他のフィード
remove_action( 'wp_head', 'rsd_link' ); //Really Simple Discoveryリンク
remove_action( 'wp_head', 'wlwmanifest_link' ); //Windows Live Writerリンク
remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0 ); //前後の記事リンク
remove_action( 'wp_head', 'wp_shortlink_wp_head', 10, 0 ); //ショートリンク
remove_action( 'wp_head', 'wp_generator' ); //WPバージョン

絵文字対応のためのコードを削除

function.php
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' );

抜粋の長さを変更

function.php
function custom_excerpt_length($length) {
     return 40; //40文字抜粋
}       
add_filter('excerpt_length', 'custom_excerpt_length', 999);

抜粋の文末文字を変更

function.php
function custom_excerpt_more($more) {
    return '...'; //文末
}
add_filter('excerpt_more', 'custom_excerpt_more');

投稿記事の前後リンク(長いタイトルを丸める)

function.php
function Custom_previous_post_link($maxlen = -1, $format='« %link', $link='%title', $in_same_cat = false, $excluded_categories = '') {
	Custom_adjacent_post_link($maxlen, $format, $link, $in_same_cat, $excluded_categories, true, $maxlen);
}
function Custom_next_post_link($maxlen = -1, $format='%link »', $link='%title', $in_same_cat = false, $excluded_categories = '') {
	Custom_adjacent_post_link($maxlen, $format, $link, $in_same_cat, $excluded_categories, false);
}
function Custom_adjacent_post_link($maxlen = -1, $format='« %link', $link='%title', $in_same_cat = false, $excluded_categories = '', $previous = true) {

if ( $previous && is_attachment())
  $post = & get_post($GLOBALS['post']->post_parent);
  else
  $post = get_adjacent_post($in_same_cat, $excluded_categories, $previous);
  
  if ( !$post )
  return;
  
  $tCnt = mb_strlen( $post->post_title, get_bloginfo('charset') );
  if(($maxlen > 0)&&($tCnt > $maxlen)) {
  $title = mb_substr( $post->post_title, 0, $maxlen, get_bloginfo('charset') ) . '…';
  } else {
  $title = $post->post_title;
  }
  
  if ( empty($post->post_title) )
  $title = $previous ? __('Previous Post') : __('Next Post');
  
  $title = apply_filters('the_title', $title, $post->ID);
  $date = mysql2date(get_option('date_format'), $post->post_date);
  $rel = $previous ? 'prev' : 'next';
  
  $string = '<a href="'.get_permalink($post).'" rel="'.$rel.'">';
  $link = str_replace('%title', $title, $link);
  $link = str_replace('%date', $date, $link);
  $link = $string . $link . '</a>';
  
  $format = str_replace('%link', $link, $format);
  echo $format;
}
表示用
// タイトルを丸める場合
<?php Custom_previous_post_link(15) ?>
<?php Custom_next_post_link(15) ?>
// フォーマットなどをすべてのオプションを指定する場合
<?php Custom_previous_post_link(12, '%link', '&laquo; %title', true) ?>
<?php Custom_next_post_link(12, '%link', '&laquo; %title', true) ?>