タグ: カスタマイズ

GeekTool

いろいろなステータスを表示するのに便利なGeekTool
シェルのCommandを忘れないようにメモ。

バッテリー残容量と全容量

system_profiler SPPowerDataType | grep mAh

アプリケーションのCPUとメモリ使用状況
最後の数値は表示する行数なのでおこのみで。

ps -c -U username -o command,%cpu,%mem -r | head -n 16

CPUの使用状況

top -l 1 | head -n 4 | tail -n 1 | awk '{print "CPU : Use " $3 " / User " $5 " / Free " $7}'

ディスクの使用状況と全体容量

df -h  | head -n 2 | tail -n 1 | awk '{print "DISK : " $3 " / " $2 " [" $5 "]"}'

ロードアベレージ

top -l 1 | head -n 3 | tail -n 1

各部の温度
別途、Temperature Monitorのインストールが必要。

/Applications/TemperatureMonitor.app/Contents/MacOS/tempmonitor -c -l -a

サイドメニューから不要なものを削除

サイドメニューの「リンク」や「ツール」、「設定」メニューを管理者以外には見せないように改変する。

hijiriworld Webさまにやりたい事そのものが掲載されている。
公式は Function Reference/remove menu page あたりに。
プラスアルファでユーザーレベルで処理を分岐させる。
と言ってもifを一つかますだけ。

function katz_remove_menu() {
  if (!current_user_can('level_10')) {
    remove_menu_page('edit-tags.php?taxonomy=link_category'); // リンク
    remove_menu_page('tools.php'); // ツール
    remove_menu_page('options-general.php'); // 設定
#    remove_menu_page('index.php'); // ダッシュボード
#    remove_menu_page('edit.php'); // 投稿
#    remove_menu_page('upload.php'); // メディア
#    remove_menu_page('edit.php?post_type=page'); // コンテンツ
#    remove_menu_page('edit-comments.php'); // コメント
#    remove_menu_page('plugins.php'); // プラグイン
#    remove_menu_page('users.php'); // ユーザー
  }
}
add_action('admin_menu', 'katz_remove_menu');

引数はそれぞれのメニューのリンク先です。

本来なら User Role Editor で権限を調整して、そこで許可されていないものは非表示になるはず。
なんだろうけど、「リンク」とか「ツール」とか、親メニューとして残っちゃうものがあったのでコレで調整することに。

エディタ画面から不要なものを削除

投稿や固定ページのエディタ画面に存在する
「カスタムフィールド」や「スラッグ」を元から見えないようにしておく。

hijiriworld Webさまにやりたい事そのものが掲載されているので、これを改変する。
公式は Function Reference/remove meta box あたりに。

function katz_remove_edit_widgets() {
  remove_meta_box('postexcerpt', 'post', 'normal'); // 抜粋
  remove_meta_box('postcustom', 'page', 'normal'); // カスタムフィールド
  remove_meta_box('slugdiv', 'page', 'normal'); // スラッグ
  remove_meta_box('authordiv', 'page', 'normal'); // 作成者
  remove_meta_box('commentstatusdiv', 'page', 'normal'); // ディスカッション
  remove_meta_box('formatdiv', 'page', 'normal'); // ページ属性
  remove_meta_box('postimagediv', 'page', 'normal'); // アイキャッチ画像
}
add_action('admin_menu', 'katz_remove_edit_widgets');

第1引数はそれぞれの Widget を囲んでいるDIVタグのID。
第2引数は投稿だったら[ post ]、固定ページだったら[ page ]。

コレでいいかな。

msgfmt のバージョンを上げる

poファイルをmoファイルに変換するときに
『キーワード “msgctxt” は知りません』
とか言われて処理を打ち切られるとき。

msgfmt -V

で確認すると

msgfmt (GNU gettext-tools) 0.14.6

・・・
ってことで古いんだよそれ。

msgfmt は gettext に含まれているものなので

yum update gettext

でアップデートかけます。

msgfmt (GNU gettext-tools) 0.17

わぁい

ちなみに
『メッセージが二重に定義されています』
にも効果アリでした。

日本語表示を改変する

wordpress は基本は、英語。
他の言語は言語ファイルを経由することで表示されている、はず。
で、言語ファイルは「wp-content/languages」の中に格納されている。
開けてみると「.po」ファイルや「.mo」ファイルがある。
「.po」ファイルは翻訳のための置き換えリスト、「.mo」ファイルは置き換えリストをwordpressの読みこみ用に変換したもの、と言うこと。
詳細は I18n for WordPress Developers – WordPress Codex 日本語版 に。

で、具体的には「固定ページ」という単語を「サイトコンテンツ」に置き換えたい。
「サイトコンテンツ」という単語は admin-ja.po の 1328行目と 3993行目の2ヶ所にすでにあるけど気にしない事にする。
とりあえず新しい「admin-ja.po」「admin-network-ja.po」「ja.po」の3ファイルができたのでコレを変換する。

msgfmt -o admin-ja.mo admin-ja.po

で、

プログラム 'msgfmt' はまだインストールされていません。  次のように入力することでインストールできます:
apt-get install gettext

そういうことなので素直にインストールして再トライ。

できました!

最終更新者を表示する

固定ページを表示しているテンプレートに以下を追加する。

Author : <?php the_modified_author(); ?><br />

引数はないので、前後に適宜文字列を追加して体裁を整える。

固定ページでもタグを表示したい

Page Tagger などで固定ページにもタグ付けできるようにすると、
各固定ページにもどのタグ付けがされているのか表示したくなる。
固定ページを表示しているテンプレートに以下を追加。

<?php the_tags('TAG : ',' , ',''); ?>

引数はそれぞれ「タグ表示前の文字列」・「タグの区切り文字列」・「タグ表示後の文字列」なので、
「お砂糖」「スパイス」「素敵なものいっぱい」というタグがついているページに

<?php the_tags('パワーパフガールズは','と','で出来ています'); ?>

とやれば、
「パワーパフガールズはお砂糖とスパイスと素敵なものいっぱいで出来ています」
という表示になる。

the_tags はタグの名前のみを返してくれるけど、これにタグへのリンクを付け加えて返してくれる get_the_tag_list というものもある。
書き方はほとんど一緒で

<?php echo get_the_tag_list('パワーパフガールズは','と','で出来ています'); ?>

the_tags と違って自分で出力する機能を持たないので echo なり printf なりしてあげる必要がある。
これだと
「パワーパフガールズはお砂糖スパイス素敵なものいっぱいで出来ています」
という表示になる・・・

ダッシュボードから不要なものを削除

ダッシュボードにデフォルトで存在する
「WordPress ブログ」や「WordPress フォーラム」は
正直クライアントからは必要ないので削除する。

hijiriworld Webさまにやりたい事そのものが掲載されているので、これを改変するだけ。
公式は Dashboard Widgets API の中盤以降にある「Advanced: Removing Dashboard Widgets」あたり。

function katz_remove_dashboard_widgets() {
  global $wp_meta_boxes;
  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']);
  unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_secondary']);
}
add_action('wp_dashboard_setup', 'katz_remove_dashboard_widgets');

できたできた。

掲載期限を過ぎたらアラートを出す(用済み)

※ 2012/08/27 追記
プラグイン形式でつくりなおしました。
>> Expiration Notice <<
なので、この記事は用済みです。作成方法の詳細はこちらの記事に書きました。

クライアントからの要望は
「掲載期間が過ぎたものを見えなくする」
ではなく
「掲載期間が過ぎたものは、情報が古くなっている旨の警告を出す(古くてもその情報が生きる場合もあるので、情報自体が存在しなくなることは避けたい)」
ということだったので、下書きに戻してしまうPost ExpiratorSimple Expiresは使えない。
ということで、shortcodeで代用することに。
とりあえずAPIのページを見る。。。
で、書いてみた。こんな?

function katz_expired_alert($atts) {
 if (get_post_type(get_the_ID()) == &amp;amp;quot;page&amp;amp;quot;) {
 $katz_pp = get_pages(array('numberposts' =&amp;amp;gt; 1, 'ID' =&amp;amp;gt; get_the_ID()));
 } elseif (get_post_type(get_the_ID()) == &amp;amp;quot;post&amp;amp;quot;) {
 $katz_pp = get_posts(array('numberposts' =&amp;amp;gt; 1, 'ID' =&amp;amp;gt; get_the_ID()));
 }
 foreach($katz_pp as $val) {
 if ($val-&amp;amp;gt;ID == get_the_ID()) {
 $mod_sep1 = explode(&amp;amp;quot; &amp;amp;quot;, $val-&amp;amp;gt;post_modified);
 $mod_date = explode(&amp;amp;quot;-&amp;amp;quot;, $mod_sep1[0]);
 $mod_time = explode(&amp;amp;quot;:&amp;amp;quot;, $mod_sep1[1]);

$mod_mktime = mktime($mod_time[0],$mod_time[1],$mod_time[2],$mod_date[1],$mod_date[2],$mod_date[0]);

extract(shortcode_atts(array('y' =&amp;amp;gt; &amp;amp;quot;&amp;amp;quot;,'m' =&amp;amp;gt; &amp;amp;quot;&amp;amp;quot;,'d' =&amp;amp;gt; &amp;amp;quot;&amp;amp;quot;,'h' =&amp;amp;gt; &amp;amp;quot;&amp;amp;quot;,'i' =&amp;amp;gt; &amp;amp;quot;&amp;amp;quot;,'s' =&amp;amp;gt; &amp;amp;quot;&amp;amp;quot;), $atts));
 $y = $y !== &amp;amp;quot;&amp;amp;quot; ? $y + $mod_date[0] : $mod_date[0];
 $m = $m !== &amp;amp;quot;&amp;amp;quot; ? $m + $mod_date[1] : $mod_date[1];
 $d = $d !== &amp;amp;quot;&amp;amp;quot; ? $d + $mod_date[2] : $mod_date[2];
 $h = $h !== &amp;amp;quot;&amp;amp;quot; ? $h + $mod_time[0] : $mod_time[0];
 $i = $i !== &amp;amp;quot;&amp;amp;quot; ? $i + $mod_time[1] : $mod_time[1];
 $s = $s !== &amp;amp;quot;&amp;amp;quot; ? $s + $mod_time[2] : $mod_time[2];
 $exp_mktime = mktime($h,$i,$s,$m,$d,$y);
 }
 }
 if (($exp_mktime - $mod_mktime) &amp;amp;lt; 0) {
 $alert_html = '&amp;amp;lt;/pre&amp;amp;gt;
&amp;amp;lt;div class=&amp;amp;quot;expiration&amp;amp;quot;&amp;amp;gt;このページの有効掲載期限は&amp;amp;lt;span style=&amp;amp;quot;color: #ff0000;&amp;amp;quot;&amp;amp;gt; '.date(&amp;amp;quot;Y/m/d H:i&amp;amp;quot;,$exp_mktime).' &amp;amp;lt;/span&amp;amp;gt;までです。

記載されていることの正確性を確認ねがいます。&amp;amp;lt;/div&amp;amp;gt;
&amp;amp;lt;pre&amp;amp;gt;
';
 } else {
 $alert_html = '&amp;amp;lt;/pre&amp;amp;gt;
&amp;amp;lt;div class=&amp;amp;quot;non_expiration&amp;amp;quot;&amp;amp;gt;このページは '.date(&amp;amp;quot;Y/m/d H:i&amp;amp;quot;,$exp_mktime).' まで有効です。&amp;amp;lt;/div&amp;amp;gt;
&amp;amp;lt;pre&amp;amp;gt;
';
 }
 return $alert_html;
}
add_shortcode('expire_date', 'katz_expired_alert');

それぞれのコンテンツには[ expire_date d=60 ]とか埋め込む、と。
shortcodeだと入れたくないところには入れなくていいからフレキシブルだねぇ。

スタイルシートも書かないといけないので

.expiration {
	text-align: center;
	border: solid 1px #ff0000;
	background: #ffe1ff;
	color: #222;
	line-height: 18px;
	margin-bottom: 18px;
	padding: 1.5em;
}
.non_expiration {
	text-align: center;
	border: solid 1px #7aaeff;
	background: #d0f0ff;
	color: #222;
	line-height: 18px;
	margin-bottom: 18px;
	padding: 1.5em;
}

というカンジで入れ込む。
これで期限が来たときは
[ expire_date d=-60 ]
[expire_date d=-60]
期限が来ていないときは
[ expire_date y=10 ]
[expire_date y=10]
というカンジで表示される。
正直、期限が来ていないときは何も表示しなくていいとは思う。

customize

本体のカスタマイズ方法とか。

タグのフォントサイズを統一する(用済み)

なにかプラグインとかあるんだろうけど、めんどい。

※ 2012/07/19 追記
このためだけのプラグインありました。
>> Resize tag cloud <<
なので、この記事は用済みです。詳細はこちらの記事に書きました。

改造するところは1ヶ所なので。

wp-includes配下[category-template.php]の685行目。

( $smallest + ( ( $count - $min_count ) * $font_step ) )

をコメントアウトして好きなポイント数に変えるだけ。
とりあえず’9’にして様子をみてみることにする。

もしくは、サイズ指定自体を消してしまう。

		$a[] = "<a class="tag-link-$tag_id" style="font-size: &quot; . 			str_replace(;" title="&quot; . esc_attr( call_user_func( $topic_count_text_callback, $real_count ) ) . &quot;" href="$tag_link">$tag_name</a>";

この部分を

    $a[] = "<a class="tag-link-$tag_id" title="&quot; . esc_attr( call_user_func( $topic_count_text_callback, $real_count ) ) . &quot;" href="$tag_link">$tag_name</a>";

と書き換えれば、フォントサイズの指定自体がなくなる。

難点は WP がバージョンアップして[category-template.php]を置き換えられちゃうと効果がなくなること、かな。