プロフィール項目の削除・追加

ユーザー情報として「aim」や「jabber」や「yim」とかあるけど、使ったためしがない。
なのでプロフィール画面から消してしまおう。

<手順>
テーマのfunction.phpに以下を追加

function my_user_meta($x) {
  unset($x['aim']);
  unset($x['jabber']);
  unset($x['yim']);
  return $x;
}
add_filter('user_contactmethods','my_user_meta');

この「$x」というのは、任意の変数名みたいだ。
他のサイトでも命名はバラバラだった。

さて次に追加だ。
さきほどの項目より、「twitter」や「facebook」や「pixivID」などのほうが有益なのだ。
だから追加する。
さきほどのメソッドに追記。つまり全部書くとこんな感じ。

function my_user_meta($x) {
 unset($x['aim']);
 unset($x['jabber']);
 unset($x['yim']);
 $x['twitter'] = 'Twitter';
 $x['facebook'] = 'Facebook';
 $x['pixiv'] = 'Pixiv';

return $x;
}
add_filter('user_contactmethods','my_user_meta');

これでプロフィール画面に項目が追加されたと思う。

では、追加した項目をどうやって表示するかというと、テンプレートに以下のようなソースを書けばOK。

<p>投稿者の Twitter ID: <?php the_author_meta('twitter'); ?></p>

 

ログイン画面とダッシュボードのwordpressロゴを変更する。

ここで変更するのは2箇所。
ちなみに、今回作業したwordpressのバージョンは3.4.1だ。

まずログイン画面。

ログインフォーム上部の「wordpress」というロゴを、オリジナルのロゴに変更する。

まず大本の素材を作成する。
上記「wordpress」ロゴ画像が以下の場所にあるので、これをグラフィックソフトなどで修正する。

/wp-admin/images/wordpress-logo.png

もしくは新規で作成しても問題なし。その場合のサイズは274×63ピクセル。

このオリジナルロゴ画像をテーマフォルダにコピーする。ここでは「img」フォルダに入れたとする。

次に、テーマフォルダの「function.php」にコードを追加する。それが以下。

function custom_login_logo() {
 echo '<style type="text/css">h1 a { background: url('.get_bloginfo('template_directory').'/img/wordpress-logo.png) 50% 50% no-repeat !important; }</style>';
}
add_action('login_head', 'custom_login_logo');

ファイルパス等に注意!

以上。

次はダッシュボード左上に出てくる「W」ロゴ。
↓これね。

これも同じように元画像を修正する。
ただし、これは他で使う画像も含まれている縦長の画像なので、新規で作るより不要な箇所のみ修正する方が楽だろう。
まぁ、実際に画像を見てもらえばわかると思う。

対象画像は以下のフォルダにある。

/wp-includes/images/admin-bar-sprite.png

今回僕は「W」のロゴ(薄いグレーと濃いグレーの両方)を、オリジナルのロゴに変更した。別に2箇所とも全く同じロゴでもかまわない。
マウスオーバー時にロゴが変化しないだけだ。

画像を修正したら、テーマフォルダにアップロードする。

次に「function.php」だ。
以下のコードを追加する。

function my_custom_logo() {
 echo '<style type="text/css">.ab-icon { background-image:url('.get_bloginfo('template_directory').'/img/admin-bar-sprite.png) !important;background-position:0 -76px; }</style>';
}
add_action('admin_head', 'my_custom_logo');

以上。

「Role Scoper」でカテゴリ単位で管理権限を設定する方法

<要件>

  1. 登録ユーザーをグループ分けして、それぞれに投稿できるカテゴリと投稿できないカテゴリを設定する。<例>本社、○○支店、△△支店….とか。mac記事、windows記事….とか。
  2. 各ユーザーの新規投稿画面には、投稿できないカテゴリを表示しない。

<前提>

  1. 登録ユーザーは「寄稿者」の管理権限を付与(うちのシステムではね。必ず寄稿者である必要はない)
  2. 新規登録時、必ず権限グループを選択する。

<前準備>

すでに色々設定しまった場合は、まずデフォルトに戻しましょう。
ただし、デフォルトに戻した後でも、僕の場合カテゴリー設定などはそのまま設定が残ってしまっていたので、地道に「remove」などを繰り返して設定を消していきました。

<投稿以外を対象外にする> ※追記分
まずは権限設定の概念(というか考え方)だが、このプラグインの場合、一旦すべての投稿にロックをかける。
そして、その後の設定で一つずつロックを解除していくという手法をとる。
なので、この段階では、一度すべての投稿にロックをかける。

  1. 「Role」→「General」のページを開く
  2. 「1. Select Assignment Mode」の項目を「Assign」にする。
  3. 「2. Select Users or Groups to Modify」で「WP Contributor」をチェック
  4. 「Modify role assignments for 固定ページ」で「Page Associate」にチェック
  5. 「Modify role assignments for Nav Menu Manager」で「Nav Menu Manager」にチェック
  6. 「Modify role assignments for Groups」で「Group Applicant」にチェック
  7. ページ右上にある「update」をクリック

これで、投稿・固定ページなど、すべてにロックがかかったと思う。
ためしに「寄稿者」権限のユーザーでログインして、新規投稿ページを開いてみる。
もしカテゴリー枠に何も表示されていなければ、ロックがかかっていることになる。

では、次にユーザーを「グループ」に振り分ける。
つまり、A、B、Cというユーザーがいて、AとBは天才グループ、Cを秀才グループに分類する。
そして、天才カテゴリーにはAとBしか書き込めないようにする。秀才グループはCのみ書き込み可能とする。

<権限グループの設定方法>

  1. サイドメニュー→「ユーザー」→「Role Groups」を選択。
  2. 「Create New Group」フォームで、グループ名を入力。日本語も使用できた。必要があれば説明文も入力する。
  3. フォームの右側にある「create」をクリックすれば、権限グループが追加される。

<権限グループの付与方法>

  1. サイドメニュー→「ユーザー」→「ユーザー一覧」→該当ユーザーのプロフィールを選択
  2. User GroupsフォームでSearch for Groupから該当グループを探す。グループが少ない場合は、そのまま「Search」ボタンを押せば、登録済みのグループがリストアップされる。
  3. 該当するグループを選択して「Add>」ボタンを押す。

以上。

では、最後に「書き込みをOKするカテゴリーを開放する」設定を行う。

<設定方法>

  1. サイドメニュー→「Roles」→「カテゴリー」を選択。
  2. 「1. Select Assignment Mode」で「Assign for selected and sub-category」を選択。これで、選択したカテゴリーとその下位階層に設定が適用されます。
  3. 「2. Select Uesr or Groups To Modify」で対象グループもしくはユーザーを選択します。
  4. 「4. select Roles To Assign/Remove」で、投稿を許可するカテゴリの「Post Auther」を選択する。別にAutherでなくてもよいが、権限が低いと記事を公開できなくなる場合もあるらしい。
  5. ページ上部右端の「update」を選択する。しかし、なんで上にしか「update」がないんだ。カテゴリ多いと面倒くさいぞ。

終わり。画像なくてすみません。

【Contact Form 7】確認用メールアドレスとメールチェック

参考サイト:Contact Form 7で確認用メールアドレスの入力フォームを加える方法(こぶたのラッパ)

(1)テンプレートのfunction.phpに下記を追加

<?php
add_filter( 'wpcf7_validate_email', 'wpcf7_text_validation_filter_extend', 11, 2 );
add_filter( 'wpcf7_validate_email*', 'wpcf7_text_validation_filter_extend', 11, 2 );
function wpcf7_text_validation_filter_extend( $result, $tag ) {
$type = $tag['type'];
$name = $tag['name'];
$_POST[$name] = trim( strtr( (string) $_POST[$name], "n", " " ) );
if ( 'email' == $type || 'email*' == $type ) {
if (preg_match('/(.*)_confirm$/', $name, $matches)){
$target_name = $matches[1];
if ($_POST[$name] != $_POST[$target_name]) {
$result['valid'] = false;
$result['reason'][$name] = '確認用のメールアドレスが一致していません';
}
}
}
return $result;
}
?>

(2)contactform7の設定画面に、下記フォームを追加

<p>メールアドレス<br />
[email* your-email] </p>

<p>メールアドレス (確認用)<br />
[email* your-email_confirm] </p>

以上。今からテストする。

アイキャッチ画像のパラメータ取得

最初に使ったのがこれ。

the_post_thumbnail()

でも、これだとimgタグごと吐き出す。
こっちはaタグにファイルパスを入れたいだけなのに、余計なことしやがる(いや、本当は大変ありがたいんだけどね)

そこで、

$image_data = wp_get_attachment_image_src($id, ‘thumbnail’ );

これを使ってアイキャッチ関係の情報を取得するのだ。

「$id」は投稿ID。表示ループの中であれば、the_ID();で取得できる。
‘thumbnail’はアイキャッチ用の引数。

これで、$image_dataには、該当する投稿のアイキャッチ画像に関するデータが、配列として格納される。