ワードプレス functions.php

/* アドミンバー非表示 */

add_filter( 'show_admin_bar', '__return_false' );  

/* ログイン画面ロゴ変更 */

function my_custom_login_logo()  
{  
    echo '<style  type="text/css"> h1 a {  background-image:url('.get_bloginfo('template_directory').'/image/logo-login.png)  !important; } </style>';  
}  
add_action('login_head',  'my_custom_login_logo');  

/* ログイン画面CSS変更 */

function custom_login() {  
echo '<link rel="stylesheet" type="text/css" href="'.get_bloginfo('template_directory').'/login.css" />';  
}  

/* 管理画面上ロゴ・css変更 */

function my_custom_logo() {  
    echo '<style type="text/css">#header-logo { background-image:url('.get_bloginfo('template_directory').'/image/admin-logo-image.png) !important; }</style>';  
    global $post_type;  
    if($post_type == 'girls'){  
        echo '<style type="text/css">#icon-edit { background:url('.get_bloginfo('template_directory').'/image/girls_icon.png) ;background-repeat:no-repeat; }#postdivrich{display:none;}</style>';  
    }elseif($post_type == 'girls-diary'){  
        echo '<style type="text/css">#icon-edit { background:url('.get_bloginfo('template_directory').'/image/girls-diary_icon.png) ;background-repeat:no-repeat; }</style>';  
    }  
}  
add_action('admin_head', 'my_custom_logo');  

function wp_custom_admin_css() {  
                $current_user = wp_get_current_user();  
                $cuh = $current_user->roles;  
                if($cuh[0] == 'editor'){  

    echo "\n" . '<link rel="stylesheet" type="text/css" href="' .get_bloginfo('template_directory'). '/css/customAdmin.css' . '" />' . "\n";                }  

}  
add_action('admin_head', 'wp_custom_admin_css', 100);  

/* 管理画面フッター変更 */

function custom_admin_footer() {  
    echo 'お問い合わせは<a href="http://alitomo.com/">こちら</a>まで。';  
}  
add_filter('admin_footer_text', 'custom_admin_footer');  

/* 管理画面サイドバー非表示 */

function remove_menus () {  
                $current_user = wp_get_current_user();  
                $cuh = $current_user->roles;  
                if($cuh[0] == 'editor'){  

global $menu;  
     $restricted = array(__('ダッシュボード'),__('お問い合わせ'), __('リンク'), __('固定ページ'), __('外観'), __('ツール'), __('ユーザー'), __('設定'), __('コメント'), __('プラグイン'));  
     end ($menu);  
     while (prev($menu)){  
          $value = explode(' ',$menu[key($menu)][0]);  
          if(in_array($value[0] != NULL?$value[0]:"" , $restricted)){unset($menu[key($menu)]);}  
     }}  
}  
add_action('admin_menu', 'remove_menus');  

/* メタボックス追加 */

function nskw_meta_box_inside() {  
    echo '<a href="';bloginfo('template_url');echo '/explain.pdf" target="_blank" >サイト管理者マニュアル</a>';  
}  

// メタボックスを追加する関数  
function nskw_meta_box_output() {  
    add_meta_box('nskw_meta_post_page', '説明書', 'nskw_meta_box_inside', 'post', 'side', 'high' );  
}  

// フックする  
add_action('admin_menu', 'nskw_meta_box_output' );  

/* カスタムポストタイプ設定 */

function works_postype() {  
    $labels = array(  
        'name' => '施工一覧',  
        'singular_name' => '施工一覧',  
        'add_new' => '新規追加',  
        'add_new_item' => '新規施工を追加',  
        'edit_item' => '施工を編集',  
        'not_found' =>  '登録された施工情報はありません',  
        'not_found_in_trash' => 'ゴミ箱に情報はありません。',  
        'parent_item_colon' => '',  
    );  
    $args = array(  
        'label' => __('works'),  
        'labels' => $labels,  
        'public' => true,  
        'hierarchical' => true,  
        'rewrite' => true,  
        'query_var' => true,  
        'menu_position' => 5,  
        'supports'=> array('title') ,  
        'has_archive' => 'works'  
    );  
    register_post_type( 'works', $args);  
}  
add_action( 'init', 'works_postype' );  

register_taxonomy(  
    'workscat',  
    'works',  
    array(  
        'label' => '施工カテゴリー',  
        'hierarchical' => true,  
        )  
);  

/* カスタム投稿一覧表示欄の項目のカスタマイズ */

function custom_columns($columns) {  
            $columns['girlscat'] = '出勤カテゴリー';  
            return $columns;  
            }  
add_filter( 'manage_girls_posts_columns', 'custom_columns' );  

function add_column($column_name,$post_id) {  
    if ($column_name == 'girlscat') {  
echo get_the_term_list($id, 'girlscat');  
    }  
}  
add_action( 'manage_posts_custom_column', 'add_column',10,2);  

アイキャッチのURL取得関数

function get_featured_image_url() {  
    $image_id = get_post_thumbnail_id();  
    $image_url = wp_get_attachment_image_src($image_id,'thumbnail', true);  
    echo $image_url[0];  
}  

/* アイキャッチ サイズ削除 */

add_filter( 'post_thumbnail_html', 'custom_attribute' );  
function custom_attribute( $html ){  
    // width height を削除する  
    $html = preg_replace('/(width|height)="\d*"\s/', '', $html);  
    return $html;  
}  

/* アイキャッチ */

add_theme_support( 'post-thumbnails');  
add_image_size( 'top_thumb', 150, 150, true );  

/カスタム投稿のアーカイブでの表示件数を指定する方法/

function change_posts_per_page($query) {  
    if ( is_admin() || ! $query->is_main_query() )  
        return;  
    if ( $query->is_archive('magazine') ) { //カスタム投稿タイプを指定  
        $query->set( 'posts_per_page', '20' ); //表示件数を指定  
    }  
}  
add_action( 'pre_get_posts', 'change_posts_per_page' );  

/カスタム投稿別アーカイブページ投稿数設定/

function change_posts_per_page($query) {  
    /* @var $query WP_Query */  
    if ( !is_admin() && $query->is_main_query()) {  
        if ( is_post_type_archive('knowledge') ) {  
            $query->set( 'posts_per_page' , 2 );//表示したい数  
        }  
    }  
    return $query;      
}  
add_action( 'pre_get_posts', 'change_posts_per_page' );  

今の記事は何番目? WordPressの記事に連番を出力する方法

// ループ回数を取得  
function get_loop_number(){  
    global $wp_query;  
    return $wp_query->current_post + 1;  
}  
echo get_loop_number(); ?> // => 1  

// 記事の詳細ページで投稿のいくつ目かを出力するにはデータベースから投稿タイプの指定をしてカウントを取得します。  
function get_post_number( $post_type = 'post', $op = '<=' ) {  
    global $wpdb, $post;  
    $post_type = is_array($post_type) ? implode("','", $post_type) : $post_type;  
    $number = $wpdb->get_var("  
        SELECT COUNT( * )  
        FROM $wpdb->posts  
        WHERE post_date {$op} '{$post->post_date}'  
        AND post_status = 'publish'  
        AND post_type = ('{$post_type}')  
    ");  
    return $number;  
}  

/* 最初・最後・偶数・奇数取得 */

function isFirst($myQuery){  
    return ($myQuery->current_post === 0);  
}  

function isLast($myQuery){  
    return ($myQuery->current_post+1 === $myQuery->post_count);  
}  

function isOdd($myQuery){  
    return ((($myQuery->current_post+1) % 2) === 1);  
}  

function isEvery($myQuery){  
    return ((($myQuery->current_post+1) % 2) === 0);  
}  

ページネーション

function my_pagenate($myquery){  
    global $wp_rewrite,$paged;  
    $paginate_base = get_pagenum_link(1);  
    if (strpos($paginate_base, '?') || ! $wp_rewrite->using_permalinks()) {  
        $paginate_format = '';  
        $paginate_base = add_query_arg('paged', '%#%');  
    } else {  
        $paginate_format = (substr($paginate_base, -1 ,1) == '/' ? '' : '/') .  
        user_trailingslashit('page/%#%/', 'paged');;  
        $paginate_base .= '%_%';  
    }  
    echo paginate_links( array(  
        'base' => $paginate_base,  
        'format' => $paginate_format,  
        'total' => $myquery->max_num_pages,  
        'end_size' => 0,  
        'mid_size' => 1,  
        'prev_text' => '<img src="'. get_bloginfo('template_url') .'/images/prev.svg" alt="prev" />',  
        'next_text' => '<img src="'. get_bloginfo('template_url') .'/images/next.svg" alt="next" />',  
        'current' => ($paged ? $paged : 1)  
    ));  
}  

loginをemailに制限

function email_login( $user, $username, $password ) {  
  $user = get_user_by('email',$username);  
  if(!empty($user->user_login)) {  
    $username = $user->user_login;  
  } else {  
    $username = '';  
  }  
  return wp_authenticate_username_password( null, $username, $password );  
}  
add_filter('authenticate', 'email_login', 20, 3);  

投稿画面でカテゴリーのチェックが崩れるのを防ぐ //自動チェックはこのプラグインParent Category Toggler

function solecolor_wp_terms_checklist_args( $args, $post_id ){  
   if ( $args['checked_ontop'] !== false ){  
        $args['checked_ontop'] = false;  
   }  
   return $args;  
}  
add_filter('wp_terms_checklist_args', 'solecolor_wp_terms_checklist_args',10,2);  

cform7のサンクスページ移行

    add_action( 'wp_footer', 'mycustom_wp_footer' );  
    function mycustom_wp_footer() {  
    ?>  
    <script type="text/javascript">  
    document.addEventListener( 'wpcf7mailsent', function( event ) {  
        location = '**********/thanks';  
    }, false );  
    </script>  
    <?php  
    }  

ログインページURL変更後のリダイレクト無効設定

add_action('init', 'remove_default_redirect');  
add_filter('auth_redirect_scheme', 'stop_redirect', 9999);  

function stop_redirect($scheme)  
{  
    if ( $user_id = wp_validate_auth_cookie( '',  $scheme) ) {  
        return $scheme;  
    }  

    global $wp_query;  
    $wp_query->set_404();  
    get_template_part( 404 );  
    exit();  
}  

function remove_default_redirect()  
{  
    remove_action('template_redirect', 'wp_redirect_admin_locations', 1000);  
}  

現在のページにアクティブのクラスをふる

function show_class_active($url){  
    $page = explode("/",get_the_permalink());  
    //var_dump($page);  
    if(in_array($url,$page)){ //'abcd'のなかに'bc'が含まれている場合  
        echo 'class="active"';  
    }else{  
        return false;  
    }  
}  

↓表示は  
<?php show_class_active("about"); ?>