//スパム登録を防止 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;
}
ダッシュボードにオリジナルメニューを追加
//☆--オリジナルメニューを追加 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日公開、日本語説明)
プラグインを使わずユーザーのメディアじぶんのみ
//メディア自分ののみ 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; }
タイトルを入力してくださいを変える
//タイトルを入力してくださいを変える 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);