0%

Programmingプログラミングナレッジ

Posted:2016.08.26

WordPressのfunctions.phpに記述する便利なコードまとめ

WordPressでサイトをカスタマイズする際に必須となるfunctions.phpファイルですが、今回はこのfunctions.phpファイルに記述するコードをまとめてみました。あんなことやこんなことも実装できてしまう便利機能ばかりです!

 

アイキャッチ画像の有効化
add_theme_support('post-thumbnails');

 

 

カスタムメニューの有効化
add_theme_support( 'menus' );

 

 

WordPressバージョン出力metaタグ非表示
remove_action('wp_head','wp_generator');

 

 

抜粋の文字数を指定
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');

 

 

adminbarの非表示
function disable_admin_bar(){
  return false;
}
add_filter( 'show_admin_bar' , 'disable_admin_bar');

 

 

テーマ内のjQuery読み込み(管理画面への読み込みも防ぐ)
function load_cdn() {
  if ( !is_admin() ) {
  wp_deregister_script('jquery');
  wp_enqueue_script('jquery', './js/jquery-1.11.2.min.js', array(), '1.11.2');
  }
}
add_action('init', 'load_cdn');

 

 

javascriptファイル読み込み
function register_script() {
  if ( !is_admin() ) {
    wp_deregister_script('jquery');
    wp_enqueue_script('jquery','//code.jquery.com/jquery-2.2.4.min.js', array(), null, 'all');
    wp_enqueue_script('ハンドル名','ファイルパス', array(), null, 'all');
}
add_action('wp_enqueue_scripts', 'register_script');

 

 

スタイルシート読み込み
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');

 

 

ログイン後にトップページへリダイレクトさせる
function redirect_login_front_page() {
  $url = site_url('', 'http');
  wp_safe_redirect($url);
  exit();
}
add_action('wp_login', 'redirect_login_front_page');

 

 

ログアウト後にトップページへリダイレクトさせる
function redirect_logout_page(){
  $url = site_url('', 'http');  
  wp_safe_redirect($url);
  exit();
  }
add_action('wp_logout','redirect_logout_page');

 

 

ログイン画面のカスタマイズ
function edit_login() { ?>
  <style> //css記述
  </style>
  <script> //javascript記述
  </script>
<?php }
add_action( 'login_enqueue_scripts', 'edit_login' );

 

 

ウィジェットサイドバーの追加
if (function_exists('register_sidebar')) {
  register_sidebar(array(
    'name' => 'サイドバー1',
    'id' => 'sidebar1',
    'description' => '説明1',
    'before_widget' => '<div>',
    'after_widget' => '</div>',
    'before_title' => '<h5>',
    'after_title' => '</h5>'
  ));
  register_sidebar(array(
    'name' => 'サイドバー2',
    'id' => 'sidebar2',
    'description' => '説明2',
    'before_widget' => '<div>',
    'after_widget' => '</div>',
    'before_title' => '<h5>',
    'after_title' => '</h5>'
  ));
  register_sidebar(array(
    'name' => 'サイドバー3',
    'id' => 'sidebar3',
    'description' => '説明3',
    'before_widget' => '<div>',
    'after_widget' => '</div>',
    'before_title' => '<h5>',
    'after_title' => '</h5>'
  ));
}

 

 

カスタムメニュー定義
if (!function_exists('custom_menu')):
function custom_menu() {
  register_nav_menus( array(
    'global' => 'グローバルナビ',
    'header' => 'ヘッダーナビ',
    'footer' => 'フッターナビ',
  ));
}
endif;
add_action('after_setup_theme','custom_menu');

 

 

ページャー
function pagination($pages = '', $range = 2){
  $showitems = ($range * 2)+1;
  global $paged;
  if(empty($paged)) $paged = 1;
  if($pages == '') {
    global $wp_query;
    $pages = $wp_query->max_num_pages;
    if(!$pages){
      $pages = 1;
    }
  }
  if(1 != $pages) {
    echo '<ul class="pagenation" role="menubar" aria-label="Pagination">';
    echo '<li class="first"><a href="'.get_pagenum_link(1).'"><<</a></li>';
    echo '<li class="prev"><a href="'.get_pagenum_link($paged - 1).'"><</a></li>';
    for ($i=1; $i <= $pages; $i++) {
      if (1 != $pages &&( !($i >= $paged+$range+1 || $i <= $paged-$range-1) || $pages <= $showitems )) {
        echo ($paged == $i)? '<li class="current"><a>'.$i.'</a></li>':'<li><a href="'.get_pagenum_link($i).'" class="inactive" >'.$i.'</a></li>';
      }
    }
    echo '<li class="next"><a href="'.get_pagenum_link($paged + 1).'">></a></li>';
    echo '<li class="last"><a href="'.get_pagenum_link($pages).'">>></a></li>';
    echo '</ul>';
  }
}

 

 

カスタム投稿タイプ作成
add_action( 'init', 'create_post_type' );
function create_post_type() {
  register_post_type( 'CustomPostTypeName', // 投稿タイプ名の定義
    array(
      'labels' => array(
      'name' => __( 'カスタム投稿' ), // フロントで表示する投稿タイプ名
      'singular_name' => __( 'カスタム投稿' )
    ),
      'public' => true,
      'menu_position' =>5,
      'has_archive' => 'blog',
      'supports' => array('title','editor','thumbnail','custom-fields') ,
    )
  );
}

 

 

カスタム分類作成
register_taxonomy(
  'taxonomy01', // カスタム分類名の定義
  'CustomPostTypeName',  // 投稿タイプ名
  array(
    'label' => 'カスタム分類1', // フロントで表示する分類名
    'hierarchical' => true,   // 階層構造か否か(trueの場合はカテゴリー、falseの場合はタグ)
    'query_var' => true,
    'rewrite' => true
  )
);    
register_taxonomy(
  'taxonomy02', 
  'CustomPostTypeName', 
  array(
    'label' => 'カスタム分類2', // フロントで表示する分類名
    'hierarchical' => false,   // 階層構造か否か(trueの場合はカテゴリー、falseの場合はタグ)
    'query_var' => true,
    'rewrite' => true
  )
);

 

 

カスタム投稿タイプの月別アーカイブ出力
global $my_archives_post_type;
add_filter( 'getarchives_where', 'my_getarchives_where', 10, 2 );
function my_getarchives_where( $where, $r ) {
  global $my_archives_post_type;
  if ( isset($r['post_type']) ) {
    $my_archives_post_type = $r['post_type'];
    $where = str_replace( '\'post\'', '\'' . $r['post_type'] . '\'', $where );
  } else {
    $my_archives_post_type = '';
  }
  return $where;
}
add_filter( 'get_archives_link', 'my_get_archives_link' );
function my_get_archives_link( $link_html ) {
  global $my_archives_post_type;
  if ( '' != $my_archives_post_type )
  $add_link .= '?post_type=' . $my_archives_post_type;
  $link_html = preg_replace("/href=\'(.+)\'\s/","href='$1".$add_link." '",$link_html);
  return $link_html;
}

 

 

このようにfunction.phpはWordPressにいろいろな機能を追加するプラグインのような役割を果たすテンプレートです。このほかにもたくさんのコードが存在しますが、また次の機会にまとめていきたいと思います。

 

author
この記事を書いた人オガワ シンヤ
FacebookTwitter

DesignSupply.代表 / ディレクター・ウェブデザイナー・フロントエンドエンジニアをやっています。「ウェブとデザインでヒト・モノ・サービスを繋げ新しい価値を生み出す」をコンセプトに日々奮闘中!制作中はチョコレートが欠かせない三十路Webクリエイター。

制作のご依頼やお問い合わせ・パートナー業務提携のご相談はこちら

デザインやウェブ制作についてのご依頼やご相談、その他お問い合わせなどもお気軽にご連絡ください。フットワークの軽さやレスポンスの早さ、また豊富な経験や知識、技術を活かした対応力といったフリーランスクリエイターの強みでクライアント様、パートナー企業様のお力になります。デザインからコーディングやWordPress実装といったウェブサイト構築はもちろん、写真撮影や動画編集、コンテンツ制作からサイト運用サポートまで一括してお任せください。

ホームページ制作のご検討やウェブ運用でお悩みの経営者様や企業のウェブ担当者様をはじめ、個人で店舗を営んでいらっしゃるオーナー様、フリーで活動されているビジネスオーナー様はもちろんのこと、リソース不足でお困りの制作会社様、またクリエイターをお探しの代理店様も大歓迎です。

コンタクトをご希望の方はお手数ですが、下記よりお問い合わせフォームのページへアクセスしていただき、必要事項を入力の上メッセージを送信してください。確認でき次第すぐに折り返しご連絡致します。

こんな記事も読まれています

コメントもお気軽にどうぞ

記事に関するご質問やご意見などありましたら下記のコメントフォームよりお気軽に投稿ください。なおメールアドレスは公開されませんのでご安心ください。また、* が付いている欄は必須項目となります。

内容に問題なければ、下記の「コメントを送信する」ボタンを押してください。

CAPTCHA


ページトップへ
大阪市天王寺区のホームページ制作デザイン事務所(SOHO)DesignSupply.【デザインサプライ】