1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | //スパム登録を防止 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>: 登録したいお店の市外局番を入れてください' ); } } |
カテゴリー: fanction.php
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;
}
ダッシュボードにオリジナルメニューを追加
1 2 3 4 5 6 7 8 9 10 11 12 13 | //☆--オリジナルメニューを追加 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' ); //オリジナルメニューを追加--☆ |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | //☆--オリジナルメニューを追加 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' ); //オリジナルメニューを追加--☆ |
カスタムアドミンに
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | .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 ; } |
オリジナルアドミンバーメニュー
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | //オリジナルアドミンバーメニュー 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’);
アドミンバー項目削除
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | 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の記事件数 登録 何件?
ファンクションへ
オリジナル関数だと思う
1 2 3 4 5 6 7 8 9 10 11 12 | //特定のカテゴリと特定のタグで絞った記事数の表示方法 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'); 件 |
上記正式コード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <?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; } ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <?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でユーザープロフィール画面を整理する
1 2 3 4 5 6 7 8 9 10 11 12 13 | #profile-page h 3 , #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 ; } |
ファンクション
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | //プロフィール画面でビジュアルエディターのチェックボックスを隠す 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日公開、日本語説明)
プラグインを使わずユーザーのメディアじぶんのみ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | //メディア自分ののみ add_action( "pre_get_posts" , "set_ajax_media_query" ); function set_ajax_media_query( $wp_query ) { global $current_user ; if ( $wp_query ->query_vars[ 'post_type' ] != "attachment" ) { return ; } get_currentuserinfo(); if ( $current_user ->roles[0] == "administrator" ) { return ; } $wp_query ->query_vars[ 'author' ] = $current_user ->ID; } |
タイトルを入力してくださいを変える
1 2 3 4 5 6 7 8 9 10 11 | //タイトルを入力してくださいを変える 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' ); |
タイトルを入力してくださいを変える
1 2 3 4 5 6 7 8 9 10 11 | //タイトルを入力してくださいを変える 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
ファンクションに
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | //管理メニュー追加 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
ファンンクションにこれを追加
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | 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); |