スパム登録を人間的ブロック

//スパム登録を防止
add_action( 'register_form', 'add_register_field' );
function add_register_field() { ?>
    <p>
        <label><?php _e('市外局番は?スパム防止') ?><br />
        <input type="text" name="user_proof" id="user_proof" class="input" size="25" tabindex="20" /></label>
    </p>
<?php }

add_action( 'register_post', 'add_register_field_validate', 10, 3 );
function add_register_field_validate( $sanitized_user_login, $user_email, $errors) {
    if (!isset($_POST[ 'user_proof' ]) || empty($_POST[ 'user_proof' ])) {
        return $errors->add( 'proofempty', '<strong>ERROR</strong>: あなたはスパムですか?'  );
    } elseif ( strtolower( $_POST[ 'user_proof' ] ) != '0561' ) {
        return $errors->add( 'prooffail', '<strong>ERROR</strong>: 登録したいお店の市外局番を入れてください'  );
    }
}

CSSで管理画面内のサイドメニューを非表示にする 権限指定

//CSSで管理画面内のサイドメニューを非表示にする 権限指定
function custom_admin_styles(){
$current_user = wp_get_current_user(); //現在のユーザー情報を取得
if(check_user_role($current_user,’shop_owner’)){ //shop_ownerかチェック
echo ‘ ‘;
}
if(check_user_role($current_user,’editor’)){ //編集者(editor)かチェック
echo ‘ ‘;
}

}
add_action(‘admin_print_styles’, ‘custom_admin_styles’, 21);

/*
* ユーザーの権限をチェックする
* @param $user ユーザーオブジェクト
* @param $role ユーザー権限の文字列
* (administrator, editor, author, contributor, subscriber)
*/
function check_user_role($user,$role){
foreach($user->roles as $user_role){
if($user_role === $role){
return true;
}
}
return false;
}

カスタムアドミンはこちら

ダッシュボードにオリジナルメニューを追加

//☆--オリジナルメニューを追加
function example_dashboard_widget_function() {
 echo '
  <div class="da d1"><a href="./post-new.php">投稿</a></div>
  <div class="da d1"><a href="./edit.php">投稿一覧</a></div>
 <div class="da d6"><a href="./admin.php?page=home/goldsource/www/temp/ecoroop/wp-content/themes/D/functions.php">マニュアル</a></div>
 ';
}
function example_add_dashboard_widgets() {
 wp_add_dashboard_widget('example_dashboard_widget', '更新', 'example_dashboard_widget_function');
}
add_action('wp_dashboard_setup', 'example_add_dashboard_widgets' );
//オリジナルメニューを追加--☆
//☆--オリジナルメニューを追加
function example_dashboard_widget_function() {
 echo '
  <div class="da d1"><a href="./post-new.php">新規 JC NEWS</a></div>
  <div class="da d1"><a href="edit.php?post_type=member_only">新規 ファイルアップロード</a></div>
 <div class="da d6"><a href="post-new.php?post_type=public_information">新規 公開情報</a></div>
 <div style="clear:both"></div>
 ';
}
function example_add_dashboard_widgets() {
 wp_add_dashboard_widget('example_dashboard_widget', '更新', 'example_dashboard_widget_function');
}
add_action('wp_dashboard_setup', 'example_add_dashboard_widgets' );
//オリジナルメニューを追加--☆

カスタムアドミンに

.da{
	float: left;
	padding-top: 10px;
	padding-right: 5px;
	padding-bottom: 10px;
	padding-left: 5px;
}


.da a{
	padding: 15px;
	background-color: #4091B4;
	color: #FFF;
	    -webkit-border-top-left-radius: 5px;  
    -webkit-border-top-right-radius: 5px;  
    -webkit-border-bottom-right-radius: 5px;  
    -webkit-border-bottom-left-radius: 5px;  
    -moz-border-radius-topleft: 5px;  
    -moz-border-radius-topright: 5px;  
    -moz-border-radius-bottomright: 5px;  
    -moz-border-radius-bottomleft: 5px;  
}

オリジナルアドミンバーメニュー

//オリジナルアドミンバーメニュー
add_action('admin_bar_menu', 'customize_admin_bar_menu', 9999);

function customize_admin_bar_menu($wp_admin_bar){
    $title = sprintf(
        '<span class="ab-icon"></span><span class="ab-label">%s</span>',
        '瀬戸青年会議所'
    );
    $wp_admin_bar->add_menu(array(
        'id'    => 'bookpress-app',
        'meta'  => array(),
        'title' => $title,
        'href'  => home_url()
    )); 
	$wp_admin_bar->add_menu(array(
    'parent' => 'bookpress-app', // 親メニューのIDを指定する
    'id'     => 'bookpress-app-sub4',
    'meta'   => array(),
    'title'  => '管理画面へ',
    'href'   => home_url('/wp-admin/')
));
	$wp_admin_bar->add_menu(array(
    'parent' => 'bookpress-app', // 親メニューのIDを指定する
    'id'     => 'bookpress-app-sub',
    'meta'   => array(),
    'title'  => 'JC NEWSを書く',
    'href'   => home_url('/wp-admin/post-new.php')
));
$wp_admin_bar->add_menu(array(
    'parent' => 'bookpress-app', // 親メニューのIDを指定する
    'id'     => 'bookpress-app-sub2',
    'meta'   => array(),
    'title'  => 'ファイルをアップロード',
    'href'   => home_url('/wp-admin/post-new.php?post_type=member_only')
));

$wp_admin_bar->add_menu(array(
    'parent' => 'bookpress-app', // 親メニューのIDを指定する
    'id'     => 'bookpress-app-sub3',
    'meta'   => array(),
    'title'  => 'ログアウト',
    'href'   => home_url('/wp-login.php?action=logout&redirect_to=http%3A%2F%2Fwww.setojc.org&_wpnonce=58ea72a46d')
));
}



//アドミンバー内容消す
add_action('admin_bar_menu', 'customize_admin_bar_menu2', 9999); // 優先順位は大きめで!

function customize_admin_bar_menu2($wp_admin_bar){
    // Adminバー左側
    $wp_admin_bar->remove_node('wp-logo');     // 一番左のWordPressのロゴを消す。
	$wp_admin_bar->remove_node('comments'); // コメント
    $wp_admin_bar->remove_node('site-name');   // 左から2番めのサイト名を消す。
    $wp_admin_bar->remove_node('new-content'); // 「+ 新規」ってメニューを消す。

    // Adminバー右側
    $wp_admin_bar->remove_node('my-account'); // アカウントのメニューを消す。
    $wp_admin_bar->remove_node('search');     // 検索のメニューを消す。
}

ダッシュボードウィジェット非表示

// ダッシュボードウィジェット非表示
function example_remove_dashboard_widgets() {
if (!current_user_can(‘level_10’)) { //level10以下のユーザーの場合ウィジェットをunsetする
global $wp_meta_boxes;
unset($wp_meta_boxes[‘dashboard’][‘normal’][‘core’][‘dashboard_right_now’]); // 現在の状況
unset($wp_meta_boxes[‘dashboard’][‘normal’][‘core’][‘dashboard_recent_comments’]); // 最近のコメント
unset($wp_meta_boxes[‘dashboard’][‘normal’][‘core’][‘dashboard_incoming_links’]); // 被リンク
unset($wp_meta_boxes[‘dashboard’][‘normal’][‘core’][‘dashboard_plugins’]); // プラグイン
unset($wp_meta_boxes[‘dashboard’][‘side’][‘core’][‘dashboard_quick_press’]); // クイック投稿
unset($wp_meta_boxes[‘dashboard’][‘side’][‘core’][‘dashboard_recent_drafts’]); // 最近の下書き
unset($wp_meta_boxes[‘dashboard’][‘side’][‘core’][‘dashboard_primary’]); // WordPressブログ
unset($wp_meta_boxes[‘dashboard’][‘side’][‘core’][‘dashboard_secondary’]); // WordPressフォーラム
}
}
add_action(‘wp_dashboard_setup’, ‘example_remove_dashboard_widgets’);

アドミンバー項目削除

function remove_bar_menus( $wp_admin_bar ) {
    $wp_admin_bar->remove_menu('wp-logo'); // W ロゴ
    $wp_admin_bar->remove_menu('site-name'); // サイト名
    $wp_admin_bar->remove_menu('view-site'); // サイト名 -> サイトを表示
    $wp_admin_bar->remove_menu('comments'); // コメント
    $wp_admin_bar->remove_menu('new-content'); // 新規
    $wp_admin_bar->remove_menu('new-post'); // 新規 -> 投稿
    $wp_admin_bar->remove_menu('new-media'); // 新規 -> メディア
    $wp_admin_bar->remove_menu('new-link'); // 新規 -> リンク
    $wp_admin_bar->remove_menu('new-page'); // 新規 -> 固定ページ
    $wp_admin_bar->remove_menu('new-user'); // 新規 -> ユーザー
    $wp_admin_bar->remove_menu('updates'); // 更新
    $wp_admin_bar->remove_menu('my-account'); // マイアカウント
    $wp_admin_bar->remove_menu('user-info'); // マイアカウント -> プロフィール
    $wp_admin_bar->remove_menu('edit-profile'); // マイアカウント -> プロフィール編集
    $wp_admin_bar->remove_menu('logout'); // マイアカウント -> ログアウト
}
add_action('admin_bar_menu', 'remove_bar_menus', 201);

05naviの記事件数 登録 何件?

ファンクションへ
オリジナル関数だと思う

//特定のカテゴリと特定のタグで絞った記事数の表示方法
function taxonomy_found_posts_num() {
    $args = array(
'post_type' => array('shoku','asobu','share','seikatsu','iryou','manabu','koukyou','ofuroyado'), //カスタム投稿名
    );
    $my_query = new WP_Query($args);
    return $my_query->found_posts;
}

//表示箇所に
//<?php echo taxonomy_found_posts_num('hokkaido','タグ1'); 件<br />
//<?php echo taxonomy_found_posts_num('aomori','タグ2'); 件

上記正式コード

<?php
function taxonomy_found_posts_num($cat_slug,$tag_slug) {
    $args = array(
        'post_type' =>'post',
        'tax_query' => array(
            'relation' => 'AND',
            array(
                'taxonomy' => 'category',
                'field' => 'slug',
                'terms' => $cat_slug,
            ),
            array(
                'taxonomy' => 'post_tag',
                'field' => 'slug',
                'terms' => $tag_slug,
            ),
        ),
        'posts_per_page' => 1
    );
    $my_query = new WP_Query($args);
    return $my_query->found_posts;
}
?>
    <?php 

//特定のポストタイプと特定のユーザーIDで絞った記事数の表示方法
function taxonomy_found_posts_num1($post_type,$user_id) {
    $args = array(
'post_type' => $post_type, //カスタム投稿名
'author' => $user_id,
    );
    $my_query = new WP_Query($args);
    return $my_query->found_posts;
}

//ログインユーザーのIDを取得
$user = wp_get_current_user();
$user_idd = $user->get('ID')."\n"; // ID

//出力
echo taxonomy_found_posts_num1('shoku',$user_idd);
	?>

CSS3でとfanctionでユーザープロフィール画面を整理する

#profile-page h3,
#profile-page table:nth-of-type(1) tr:nth-child(1),
#profile-page table:nth-of-type(1) tr:nth-child(2),
#profile-page table:nth-of-type(1) tr:nth-child(3),
#profile-page table:nth-of-type(2) tr:nth-child(2),
#profile-page table:nth-of-type(2) tr:nth-child(3),
#profile-page table:nth-of-type(2) tr:nth-child(4),
#profile-page table:nth-of-type(2) tr:nth-child(5),
#profile-page table:nth-of-type(3) tr:nth-child(2),
#profile-page table:nth-of-type(4) tr:nth-child(1)
{
	display: none;
}

ファンクション

//プロフィール画面でビジュアルエディターのチェックボックスを隠す
function hide_richeditor_checkbox() {
    global $wp_rich_edit_exists;
    if ( ! current_user_can( 10 ) && defined( 'IS_PROFILE_PAGE' ) && IS_PROFILE_PAGE ) {
        $wp_rich_edit_exists = false;
    }
}
add_action( 'admin_head', 'hide_richeditor_checkbox' );


//ユーザープロフィールの「管理画面の配色」を削除
remove_filter( 'admin_color_scheme_picker', 'admin_color_scheme_picker' );

//管理画面の配色を強制的に青
function admin_color_force_fresh() {
	return 'classic';
}
add_filter( 'get_user_option_admin_color', 'admin_color_force_fresh' );


//管理画面文字変更
add_filter('gettext', 'change_post_to_article');
add_filter('gettext_with_context', 'change_post_to_article');
add_filter('ngettext', 'change_post_to_article');
add_filter('ngettext_with_context', 'change_post_to_article');

function change_post_to_article($translated) {
    $translated = str_ireplace(
        'プロフィール',
        'パスワードの変更',
        $translated
    );
    return $translated;
}

//このcssでCSS3を使って項目見えなくする
//CSSで管理画面内のサイドメニューを非表示にする 権限指定
function custom_admin_styles(){
$current_user = wp_get_current_user(); //現在のユーザー情報を取得
        if(check_user_role($current_user,'shop_owner')){ //編集者(editor)かチェック
            echo '<link rel="stylesheet" type="text/css" href="' .get_bloginfo('template_directory'). '/custom-admin-css2.css" />';
        }
		if(check_user_role($current_user,'editor')){ //編集者(editor)かチェック
            echo '<link rel="stylesheet" type="text/css" href="' .get_bloginfo('template_directory'). '/custom-admin-css2.css" />';
        }
		
		
    }
    add_action('admin_print_styles', 'custom_admin_styles', 21);

    /*
     * ユーザーの権限をチェックする
     * @param $user ユーザーオブジェクト
     * @param $role ユーザー権限の文字列
     *      (administrator, editor, author, contributor, subscriber)
     */
    function check_user_role($user,$role){
        foreach($user->roles as $user_role){
            if($user_role === $role){
                return true;
            }
        }
        return false;
    }

http://qiita.com/koh-taka@github/items/79309c1f367f00c425d8

なかなか fanctionで 権限制御

http://www.cseas.kyoto-u.ac.jp/info/2013/08/5210

特定サイドメニューの非表示(2013/08/27)

編集者にはいらないメニューは極力見えないようにしたいものです。
カスタム投稿、プラグインが追加したメニューなども消すことができます。
ここでは、「管理者以外」は、「コメント」「カスタム投稿(hogehogeと名前付けしていると仮定)」「Contact Form 7」「Subscribe2」のメニューを非表示にします。

function my_remove_menu(){
remove_menu_page(‘edit-comments.php’); // コメントの非表示
remove_menu_page(‘edit.php?post_type=hogehoge’); // カスタム投稿「hogehoge」の非表示

// プラグインによる追加の場合には、管理画面のid(<li id=”hogehoge-{slug}”>)のslugを指定すること
remove_menu_page(‘wpcf7’); // Contact form 7の「お問い合わせ」を非表示
remove_menu_page(‘s2’); // Subscribe2を非表示
}
// 管理者以外は指定メニューを消す
if(!current_user_can(‘administrator’))
add_action(‘admin_menu’, ‘my_remove_menu’);

プラグイン設定の上書き

WordPress Download Monitorで編集者に特定権限を付与(2013/08/27)

通常は、管理者ユーザしか使えません。これを編集者も使えるようにするための方法です。
下記の設定によって、追加と編集が可能になります。設定やログ閲覧は不可です。

function add_theme_caps() {
$role = get_role( ‘editor’ );
$role->add_cap( ‘user_can_edit_downloads’);
$role->add_cap( ‘user_can_add_new_download’);
$role->remove_cap( ‘user_can_config_downloads’);
$role->remove_cap( ‘user_can_view_downloads_log’);
}
add_action( ‘admin_init’, ‘add_theme_caps’);
ただし、一旦登録してしまうと設定をOFFにしても有効になります。
設定の追加は、add_capに、設定の削除はremove_capに明示しましょう。

TablePressで編集者への特定権限を削除(2013/08/27)

WP-Table Reloadedの後継にあたります。
全面的に書き直されたTablePressについては、いくつかの権限について上書きが可能です。
ここでは、「編集者、作成者は、テーブル削除、インポート、About閲覧を不可」にします。

function add_theme_caps2() {
foreach (array(‘editor’,’author’) as $user){
$role = get_role( $user );
$role->remove_cap( ‘tablepress_delete_tables’);
$role->remove_cap( ‘tablepress_import_tables’);
$role->remove_cap( ‘tablepress_access_options_screen’);
$role->remove_cap( ‘tablepress_access_about_screen’);
}
}
add_action( ‘admin_init’, ‘add_theme_caps2’);
何が出来るかについては、tablepressのソースフォルダ以下で「cap」をキーワードに検索してみてください。

メディア等で扱える拡張子の追加

プラグインを作って公式ディレクトリに登録しましたので、そちらを使って貰えればと思います。

WP Add Mime Types(2013年8月16日公開、日本語説明)

タイトルを入力してくださいを変える

//タイトルを入力してくださいを変える
function change_default_title( $title ) {
	$screen = get_current_screen();
	if ( 'performer' == $screen->post_type ) {
		$title = 'パフォーマー名を入力してください。';
	} else if ( $screen -> post_type == 'post' ) {
		$title = 'これは投稿だけ変更します';
	}
	return $title;
}
add_filter('enter_title_here', 'change_default_title');

タイトルを入力してくださいを変える

//タイトルを入力してくださいを変える
function change_default_title( $title ) {
	$screen = get_current_screen();
	if ( 'performer' == $screen->post_type ) {
		$title = 'パフォーマー名を入力してください。';
	} else if ( $screen -> post_type == 'post' ) {
		$title = 'これは投稿だけ変更します';
	}
	return $title;
}
add_filter('enter_title_here', 'change_default_title');

マニュアル設置覚え

wp-admin/imgに画像
Dにtori.php

ファンクションに

//管理メニュー追加
function test_menu_page() {
    $siteurl = get_option( 'siteurl' );
?>
<div class="wrap">
    <h2>マニュアル</h2>
<?php include("tori.php"); ?>
   </div>
<?php
}
function test_admin_menu() {
    add_menu_page( 'マニュアル', 'マニュアル', 'read',
		   __FILE__, 'test_menu_page' );
}
add_action( 'admin_menu', 'test_admin_menu' );

search.phpでユーザー名とか、タグ名・カテゴリ名も検索対象その2

https://gist.github.com/wokamoto/3486944

ファンンクションにこれを追加

function custom_search($search, $wp_query) {
	global $wpdb;
 
	//サーチページ以外だったら終了
	if (!$wp_query->is_search)
		return $search;
	if (!isset($wp_query->query_vars))
		return $search;
 
	// ユーザー名とか、タグ名・カテゴリ名も検索対象に
	$search_words = explode(' ', isset($wp_query->query_vars['s']) ? $wp_query->query_vars['s'] : '');
	if ( count($search_words) > 0 ) {
		$search = '';
		foreach ( $search_words as $word ) {
			if ( !empty($word) ) {
				$search_word = $wpdb->escape("%{$word}%");
				$search .= " AND (
 {$wpdb->posts}.post_title LIKE '{$search_word}'
 OR {$wpdb->posts}.post_content LIKE '{$search_word}'
 OR {$wpdb->posts}.post_author IN (
   SELECT distinct ID
   FROM {$wpdb->users}
   WHERE display_name LIKE '{$search_word}'
   )
 OR {$wpdb->posts}.ID IN (
   SELECT distinct r.object_id
   FROM {$wpdb->term_relationships} AS r
   INNER JOIN {$wpdb->term_taxonomy} AS tt ON r.term_taxonomy_id = tt.term_taxonomy_id
   INNER JOIN {$wpdb->terms} AS t ON tt.term_id = t.term_id
   WHERE t.name LIKE '{$search_word}'
     OR t.slug LIKE '{$search_word}'
     OR tt.description LIKE '{$search_word}'
   )
) ";
			}
		}
	}
 
	return $search;
}
add_filter('posts_search','custom_search', 10, 2);