2018年05月29日
WordPress functions.phpに記述しておいたほうがいい あれこれ
functions.phpに記述しておいたほうがいいコードをいくつか紹介しよう。
どのようなサイトを構築するにあたっても(多くの場合)記述しておいたほうがいいと思われるものを、厳選して紹介していく。
目次
WordPressに関して、テーマに関して
jQuery Migrate プラグインを読み込まない
function dequeue_jquery_migrate($scripts){
if(!is_admin()){
$scripts->remove('jquery');
$scripts->add('jquery',false,array('jquery-core'),'1.10.2');
}
}
add_filter('wp_default_scripts','dequeue_jquery_migrate');
WordPressのバージョン番号を削除
function remove_src_wp_ver($dep){
$dep->default_version = '';
}
add_action('wp_default_scripts','remove_src_wp_ver');
add_action('wp_default_styles','remove_src_wp_ver');
テーマの更新通知をしない
remove_action('load-update-core.php','wp_update_themes');
add_filter('pre_site_transient_update_themes',create_function('$a',"return null;"));
管理画面をカスタマイズ
カテゴリーを1つしか選択させない
function limit_category_select() {
?>
<script type="text/javascript">
jQuery(function($) {
// 投稿画面のカテゴリー選択を制限
var cat_checklist = $('.categorychecklist input[type=checkbox]');
cat_checklist.click( function() {
$(this).parents('.categorychecklist').find('input[type=checkbox]').attr('checked', false);
$(this).attr('checked', true);
});
// クイック編集のカテゴリー選択を制限
var quickedit_cat_checklist = $('.cat-checklist input[type=checkbox]');
quickedit_cat_checklist.click( function() {
$(this).parents('.cat-checklist').find('input[type=checkbox]').attr('checked', false);
$(this).attr('checked', true);
});
$('.categorychecklist>li:first-child, .cat-checklist>li:first-child').before('<p style="padding-top:5px;">カテゴリーは1つしか選択できません</p>');
});
</script>
<?php
}
add_action('admin_print_footer_scripts','limit_category_select');
「タグ」をなくす
function my_unregister_taxonomies() {
global $wp_taxonomies;
if (!empty($wp_taxonomies['post_tag']->object_type)) {
foreach ($wp_taxonomies['post_tag']->object_type as $i => $object_type) {
if ($object_type == 'post') {
unset($wp_taxonomies['post_tag']->object_type[$i]);
}
}
}
return true;
}
add_action('init','my_unregister_taxonomies');
アドミンバーを非表示に
add_filter('show_admin_bar', '__return_false');
メニューの一部を非表示に
function remove_admin_menu() {
remove_menu_page('link-manager.php');//リンク
remove_menu_page('edit-comments.php');// コメント
}
add_action('admin_menu','remove_admin_menu',999);
メニューの順番入れ替え
function custom_menu_order($menu_old) {
if (!$menu_old) return true;
return array(
'index.php',//ダッシュボード
'separator1',//区切り線
'edit.php',//投稿
'upload.php',//メディア
'edit.php?post_type=page',//固定ページ
'separator2',//区切り線
'themes.php',//テーマ
'plugins.php',//プラグイン
'users.php',//ユーザー
'tools.php',//ツール
'options-general.php',//設定
'separator-last',//区切り線
);
}
add_filter('custom_menu_order','custom_menu_order');
add_filter('menu_order','custom_menu_order',999);
わかりやすい文言に変える
function custom_gettext_translation($translation){
$translation = str_ireplace('メディア','画像',$translation);
$translation = str_ireplace('パーマリンク:','記事URL:',$translation);
$translation = str_ireplace('固定ページ','全ページ',$translation);
$translation = str_ireplace('お問い合わせ','問合せフォーム',$translation);
return $translation;
}
add_filter('gettext','custom_gettext_translation');
function custom_gettext_with_context_translation( $translation ) {
$translation = str_ireplace( 'アイキャッチ','サムネイル',$translation );
$translation = str_ireplace( '投稿','最新情報',$translation );
$translation = str_ireplace( '固定ページ','全ページ',$translation );
return $translation;
}
add_filter('gettext_with_context','custom_gettext_with_context_translation');
投稿・固定ページのメタボックスを非表示に
function remove_default_post_screen_metaboxes(){
remove_meta_box('postexcerpt','post','normal');//抜粋
remove_meta_box('trackbacksdiv','post','normal');//トラックバック送信
remove_meta_box('commentstatusdiv','post','normal');//ディスカッション
remove_meta_box('commentsdiv','post','normal');//コメント
remove_meta_box('slugdiv','post','normal');//スラッグ
remove_meta_box('authordiv','post','normal');//作成者
remove_meta_box('revisionsdiv','post','normal');//リビジョン
remove_meta_box('formatdiv','post','normal');//フォーマット
}
add_action('admin_menu','remove_default_post_screen_metaboxes',999);
function remove_default_page_screen_metaboxes(){
remove_meta_box('commentstatusdiv','page','normal');//ディスカッション
remove_meta_box('commentsdiv','page','normal');//コメント
remove_meta_box('slugdiv','page','normal');//スラッグ
remove_meta_box('authordiv','page','normal');//作成者
remove_meta_box('revisionsdiv','page','normal');//リビジョン
}
add_action('admin_menu','remove_default_page_screen_metaboxes',999);
操作マニュアル
function page_manual(){
?>
<div class="wrapper">
<h1>操作マニュアル</h1>
<p>本サイトはWordPressというコンテンツ管理システムをベースに構築されています。<br>
以下、WordPress管理画面の簡単な操作説明をさせていただきます。</p>
<div style="border:1px solid #ddd;background:#fff;margin:16px 16px 16px 0;padding:8px 16px;">
<h2 style="margin:12px 0 0;">はじめに</h2>
<p>・操作マニュアルをここに記載します。操作マニュアルをここに記載します。操作マニュアルをここに記載します。<br>
・操作マニュアルをここに記載します。操作マニュアルをここに記載します。操作マニュアルをここに記載します。操作マニュアルをここに記載します。操作マニュアルをここに記載します。</p>
</div>
</div>
<?php
}
function page_manuals(){
add_menu_page('操作マニュアル','操作マニュアル','manage_options','manual','page_manual','',1);
}
add_action('admin_menu','page_manuals');
固定ページ編集画面に注意書き
function page_attention($post){
if($post->post_type == "page"){
?>
<div style="border:1px solid #ddd;background:#fff;margin:24px 0;padding:8px 16px;">
<h3>固定ページ編集画面に注意書き</h3>
<p style="margin:0 0 24px;">・注意書きをここに記載します。注意書きをここに記載します。<br>
注意書きをここに記載します。注意書きをここに記載します。注意書きをここに記載します。注意書きをここに記載します。注意書きをここに記載します。<br>
注意書きをここに記載します。注意書きをここに記載します。</p>
<p style="margin:0 0 24px;">・注意書きをここに記載します。注意書きをここに記載します。注意書きをここに記載します。注意書きをここに記載します。注意書きをここに記載します。<br>
注意書きをここに記載します。注意書きをここに記載します。注意書きをここに記載します。注意書きをここに記載します。注意書きをここに記載します。</p>
</div>
<?php
}
}
add_action('edit_form_after_editor',page_attention);
固定ページ編集時にビジュアルエディタを非表示にする
function disable_visual_editor_in_page(){
global $typenow;
if( $typenow == 'page' ){
add_filter('user_can_richedit', 'disable_visual_editor_filter');
}
}
function disable_visual_editor_filter(){
return false;
}
add_action( 'load-post.php', 'disable_visual_editor_in_page' );
add_action( 'load-post-new.php', 'disable_visual_editor_in_page' );
管理画面の投稿一覧画面に「アイキャッチ画像」を表示
function customize_manage_posts_columns($columns) {
$columns['thumbnail'] = __('Thumbnail');
return $columns;
}
add_filter('manage_posts_columns','customize_manage_posts_columns');
function customize_manage_posts_custom_column($column_name, $post_id) {
if ('thumbnail' == $column_name) {
$thum = get_the_post_thumbnail($post_id,'small',array('style'=>'width:64px;height:auto;'));
} if ( isset($thum) && $thum ) {
echo $thum;
} else {
echo __('None');
}
}
add_action('manage_posts_custom_column','customize_manage_posts_custom_column',10,2);
追加機能
セルフピンバックをオフに
function no_self_ping( &$links ) {
$home = home_url();
foreach ( $links as $l => $link )
if ( 0 === strpos( $link, $home ) )
unset($links[$l]);
}
add_action( 'pre_ping', 'off_self_ping' );
検索結果から、固定ページを除く
function SearchFilter($query) {
if ($query->is_search) {
$query->set('post_type', 'post');
}
return $query;
}
add_filter('pre_get_posts','SearchFilter');