//スパム登録を防止
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);