【WordPress】ACFのアドオン「Date and Time Picker Field」で時間の入力間隔を変更する

WordPressのプラグイン「Advanced Custom Fields」のアドオンに「Date and Time Picker Field」という時間入力に使える便利なものがあるのですが、デフォルトでは入力スライダーが1ずつ加算されていくため、例えば10分間隔でパラメータを入力したいという場合には、そのままだとユーザービリティがあまりよろしくありません。

コードをチェックしてみると、どうやら「jquery-ui-timepicker-addon.js」というjQueryのコードをそのまま読み込んでいるようなので、Date and Time Pickerアドオンのjsディレクトリ以下にあるjquery-ui-timepicker-addon.jsをエディタで開き、stepの部分を任意のパラメータに変更すれば目的が達成出来そうです。(プラグインのコードを直接いじるとアップデートに対応出来なくなるため、あまりよろしくありませんが。)

例えばスライダーの分を10分刻みにしたい時は以下のように「stepMinute」を変更します。

[acf-field-date-time-picker/js/jquery-ui-timepicker-addon.js]

...
stepHour: 1,
stepMinute: 10,
stepSecond: 1,
stepMillisec: 1,
stepMicrosec: 1,
...

時間の入力間隔を変更したい場合は同様に「stepHour」のパラメータを変更すれば、設定した間隔でスライダーが動作するようになると思います。

WordPressで投稿者アーカイブを出力させないようにする方法

はっきりとした事は不明だがWordPress日本語フォーラムの以下の報告を皮切りに改ざん報告がちらほらと見受けられる。

WordPress › フォーラム » サイト改ざん?

Googleの検索結果では2011年くらいにも同様の事例が引っかかるので、今に始まったわけじゃないようだが、ここ半年くらい、特にここ数週間は顕著なようだ。

今後、ロリポップやhetemlから何らかのアナウンスがあるんじゃないかと思うが、そんな中、node.jsをいじろうと思って契約したものの、全くいじっていないGehirn Web ServicesからWordPressの不正アクセスに関するメールが届いたため、一部抜粋して転載する。

日本時間の2013年8月28日 午後3時頃より、平常時よりも大量の WordPress ログインを試みる不正なアクセスが検出されています。
現在、弊社の分析局で攻撃手法や特徴を分析しております。

弊社の分析によりますと、 /?author=1 にアクセスすることで使用しているユーザー名が分かることから、 デフォルトの admin アカウント以外のユーザ名を設定されているお客様にも影響があると見られ、十分に注意が必要です。

ということで、どうやらWordPressの投稿者アーカイブが狙われているっぽいので、これを無効化するコードを二つ程紹介する。

投稿者アーカイブを非表示にする

以下のコードをテーマの functions.php に突っ込むとauthorクエリ(?author=xxx)を無効化して404を返すようになる。

function disable_author_archive($q) {
  if ( $q->is_admin ) {
    return $q;
  }elseif ( $q->is_author ) {
    unset( $_REQUEST['author'] );
    $q->set( 'author', '' );
    $q->set_404();
  }
}
add_action('parse_query', 'disable_author_archive');

参考:Disable the WordPress Public Search

上記の参考先では ?s= の検索クエリを無効化するものなので、気になる人はついでに利用すると良いんじゃないかと思う。

あるいは以下のコードでURLに author が含まれた場合、どこか適当なページにリダイレクトさせるようにする。

function redirect_author_archive() {
  if( isset($_REQUEST['author']) || preg_match('#/author/.+#', $_SERVER['REQUEST_URI']) ){
    wp_redirect( home_url( '/404' ) ); //リダイレクト先
    exit;
  }
}
add_action('init', 'redirect_author_archive');

参考:WordPress › フォーラム » セキュリティ向上:ログインIDをURLにしたくない

他にもプラグインで対応可能かもしれない。

【さくらのVPS】php-mbstringのインストール

WordPressの「WP Multibyte Patch」プラグインを動作しようとしたところ、「お使いの WP Multibyte Patch を有効にするには、PHP の mbstring 関数が必要です。」というエラーメッセージが表示されたため、以下のコマンドで「php-mbstring」をインストール…

sudo yum install php-mbstring

しようとしたら出来なかった。

検索したところ、remiリポジトリを有効にすればインストール出来るらしいと判明。
そういえばCentOS6.2の標準リポジトリにphp5.3.xが含まれてなかったのでremiからインストールしてた。

参考:Install PEAR Mail/Mime Dependency issues in pure EPEL installation

以下のコマンドで再実行。

sudo yum --enablerepo=remi install php-mbstring
...

Warning: RPMDB altered outside of yum.
  Installing : php-mbstring-5.3.12-1.el6.remi.x86_64                                                           1/1 

Installed:
  php-mbstring.x86_64 0:5.3.12-1.el6.remi                                                                          

Complete!

なんかWarning!が出てるがインストール出来たらしい。
以下のコマンドでApacheを再起動し、Webサーバを最新の状態に更新する。

sudo /etc/rc.d/init.d/httpd restart

再度プラグインを確認したところ、今度は正常に有効化できた。

Google Analyticator が復活!しかし設定画面が表示されないバグ(?)が発生

※Google Analyticator v6.3.3のバージョンアップにより、この記事は陳腐化しています。(2012.09.18)

以前のエントリーで少しだけ触れましたが「Google Analyticator」という管理画面のダッシュボードにGoogle Analyticsの簡易的なアクセス解析結果を表示出来るプラグインがあるのですが、GoogleのAPI更新に伴って、簡易的なアクセス解析が表示されないという問題が発生していました。

作者のRonaldさんは既に開発終了宣言を出していたため、個々人でなんとかするか、引き継いでくれる人にまかせるかといった状態でしたが、、、この度、なんとアップデートしてくたようです!素晴らしい!

が、私の環境(WordPress v3.4.2)では若干問題が発生。

なんらかのプラグインと競合しているのか、あるいはバグ(?)なのか、最新版にアップデート後、一旦、Googleの認証をリセットしないといけないようなのですが、どうやらパスの指定?がおかしいらしく「WordPressのアドレス」ではなく「サイトのアドレス」になっているため、プラグインのresetメニューからでは正常なページに飛びませんでした。(404が帰ってきます)

私の環境限定かもしれませんし、バグだとすれば恐らアップデートがかかるとのではないかと思うのでそれを待った方が良いと思います。

追記(2012/09/16):
問題を把握してくれているようなので素直に待った方が良いでしょう。
Broken if WordPress is installed in a sub-directory

ただ、まったく推奨しませんが、仮に症状が同じで待ってられないという方は以下の方法を試せば何とかなるかもしれません。

※FirefoxであればFirebug、Chromeであればデベロッパーツールなど、リアルタイムでコード編集が可能なツールが必要です。(別の方法もありますが) (さらに…)

今さら気付いた事

いつの間にかGoogleのキャッシュ表示にMacのコマンドキーの説明が追加されていた。

後、WordPressの「Google Analyticator」というダッシュボードにGoogle Analyticsの簡易的なアクセス解析結果を表示出来るプラグインがあるんですが、APIの仕様変更に伴って動かなくなってます。

 

フォーラムを見ると作者の方は大分前に開発終了宣言を出してて、誰か何とかしてくれ状態。

Dashboard widget no longer authenticates

 

最後の投稿に「MailChimp’s Analytics360」というプラグインを試してみろと載ってる。

 

過去に何件かお客さんに納品済みのものがあるんだけど、どうしたものかな。

 

リンク集的なものが作れるやつを作成

あまりにも中途半端だけど一応動く。

colinkr(http://alpha-version.com/colinkr)

Google ChromeやSafariの初期画面っぽい感じでサイトのサムネイル画像が一覧で見れるやつのWeb版。

画像の生成はWordPress.comのAPIに丸投げしてキャッシュを全く生成していない。おまけにタイトルタグはfile_get_contents関数で引っ張ってきてるので1つのリンク集にURLを10個くらい登録すると非常に重い。相手方のサーバーに負荷をかけるクソ仕様。

前に、フランス人かスウェーデン人あたりが簡単にWebサイトのブックマークリストとか1ページだけのWebサイトとかを作れるサービスを公開してた気がするんですけど、サービスの名前を忘れてしまったので仕方ないので作りました。

ベースにはFluid Squares V2というレスポンシブレイアウトのフレームワークを使用。(ライセンスが書いてない事に今さら気付いた・・・)
WordPressで作ってるので、tanzakuテーマとかを使わせてもらった方が良かったかもしれない。

WordPressマルチサイトのサイト一覧画面にblog IDを追加する

以下のサイトにコードが掲載されていました。

View Blog ID in WordPress Multisite

こんな感じでプラグインとして使えば良いようです。

<?php
/*
Plugin Name: Add Blog ID for Multisite
Plugin URI: http://wpengineer.com/2188/view-blog-id-in-wordpress-multisite/
Description: ネットワーク管理者のサイト一覧画面に各ブログのIDを追加します。
Author: WPengineer.com
Version: 1.0
Author URI: http://wpengineer.com/
*/
class Add_Blog_ID {
	public static function init() {
		$class = __CLASS__ ;
		if ( empty( $GLOBALS[ $class ] ) )
			$GLOBALS[ $class ] = new $class;
	}
	public function __construct() {
		add_filter( 'wpmu_blogs_columns', array( $this, 'get_id' ) );
		add_action( 'manage_sites_custom_column', array( $this, 'add_columns' ), 10, 2 );
		add_action( 'manage_blogs_custom_column', array( $this, 'add_columns' ), 10, 2 );
		add_action( 'admin_footer', array( $this, 'add_style' ) );
	}
	public function add_columns( $column_name, $blog_id ) {
		if ( 'blog_id' === $column_name )
			echo $blog_id;
		return $column_name;
	}
	// Add in a column header
	public function get_id( $columns ) {
		$columns['blog_id'] = __('ID');
		return $columns;
	}
	public function add_style() {
		echo '<style>#blog_id { width:7%; }</style>';
	}
}
add_action( 'init', array( 'Add_Blog_ID', 'init' ) );
?>

上記のコードを「add_blog_id.php」とでも名前をつけて保存し、
「/wp-content/mu-plugins/」以下にアップロードすればネットワーク管理者のサイト一覧画面にblogIDのカラムが追加されます。(mu-pluginsディレクトリが無い場合は追加してください。)

超個人的な備忘録:Html KickStartをWordPressテーマに組み込みtheme my loginを有効にするとIEではエラーメッセージが表示されない

【原因】

kickstart.js に組み込まれている 「Placeholder plugin for jQuery」が原因っぽい。118行目付近の以下のjQueryを無効化すると正常になる。

//$('input, textarea').placeholder();

【追記:2012/02/15】

twitterのプロフィールウィジェットを組み込むとkickstart.jsの以下のコードが引っかかってページ自体が表示されなくなる。(バージョン0.91beta)

$('[class*=col_]').addClass('column').wrapInner('
');

上記のコードはHtml KickStartのレイアウトシステムの基盤であるため、プレースホルダーのように無効化することは困難。レイアウト外に書き込めばtwitterのウィジェットは正常に動作するが、レイアウトの修正が非常に面倒。

そのため、twitterのプロフィールウィジェットのみを表示するhtmlファイルを用意してiframeで読み込む事で対処した。

今日の発見

今更ながら気づいたんですが、WordPressの日本語公式ブログの記事に自分の名前が載ってるのを見つけてちょっと感動しました。

 

WordPress 日本語フォーラム・ドキュメンテーションの貢献者

 

WordPressには業務や個人的な活動でも大分お世話になってるので多少なりとも恩返しできればと思い、昨年の末くらいからフォーラムで回答するようにしてたのですが非常に光栄です。

 

大半がパズル感覚で、個人的に面白そうな質問だけしか回答して無い感じですが。

今後は釣った魚だけじゃなく、魚の釣り方自体も共有できるようにしていきたいですね。

JVNのWordPress3.3以下のバージョンに関する脆弱性報告についてのメモ

久しぶりにhetemlの管理画面にアクセスしたら、昨年の12月27日付けで「WordPressをご利用のお客様へ」というトピックが掲載されており、内容を確認するとどうやらWordPress3.3より前のバージョンだと非常にクリティカルな脆弱性が存在するとのこと。

 

年末のゴタゴタに巻き込まれて見落としていたのかと思ったが、WordPressの公式ブログには同様の報告はあがっていないし、そもそもhetemlに掲載されていた情報の元であるJVNこの報告この報告がいつの段階での脆弱性報告なのかいまいち良く分からないため、検索を進めたところWordPress 日本語版作成チームのGoogleグループでJVNの報告に関する議論を発見↓

 

IPA の連絡不能開発者一覧に WordPress

 

以下はマクラケン直子さんの記述を引用。

■ 経緯について 
tenpura さんにチェックをして頂きましたが、一件は4年前にすでに修正されているバグ、もう一件は過去のデフォルトテーマのバグ(こちらも修正済み、現在のテーマには無いバグ)で、2008年くらいから何度も本家にメールを送り続けていたようです。
Ryan、Otto からはこちらから secur...@wordpress.org へメールしたらすぐに(半日以内)返事が来ました。 
すでに修正されているバグや実際のセキュリティ脅威とはいえない報告については返事しないポリシーとのことでした。相当な量のレポートやスパムも届いているはずなので、これは仕方ないかと思います。 
3.3.1 の件でもみなさんお分かりだと思いますが、本当にバグがあった際にはたいてい数時間以内に動きがあります。
JVN ではソースコードを追わず、日本語版チームに連絡することもなく、また上記 URL の記載内容についても「WordPress バージョン 3.3 より前のバージョン」という表記は誤解を呼ぶので正しく書いて 
欲しいとお願いしたのですができないとのことでした。

とりあえず最新のバージョン使っておけということなのでしょうが誤解しまくったので「WordPress バージョン 3.3 より前のバージョン」という表記は止めて欲しいものですね!

Pages: 1 2 3 Next
IT起業アカデミア