2016年12月28日水曜日

【備忘録】WordPress で特定カテゴリーに限定した月別アーカイブの出し方

特定カテゴリの月別アーカイブを表示したいです(WordPerss.org フォーラム)に触発されて、久々にSQL文にチャレンジしたと思っていろいろやっていたら出来たようなので、メモっておきます。なお考えたのはデータの取得までで、表示は上記フォーラムのものをそのまま使っています。

最初にコード全体を見せて、次にそれぞれの説明をしていきます。

参考情報




コード


青文字が考えた部分です。それ以外は変更していません。

<?php // カテゴリーなし(slug名)のみの月別アーカイブ表示

$year_prev = null;
$slug = 'カテゴリーなし';

// 日本語のエンコード処理
$slug = urlencode($slug);
// エンコードした場合、%が入る。SQLでは %は %% とエスケープが必要
if(preg_match("/%/", $slug)):
  $slug = str_replace('%','%%', $slug);
endif;

// SQLクエリ
$query = $wpdb->prepare("SELECT DISTINCT MONTH( post_date ) AS month ,
YEAR( post_date ) AS year,
COUNT( id ) as post_count FROM $wpdb->posts
WHERE post_status = 'publish' and post_date <= now( )
and post_type = 'post'
and id IN(
SELECT object_id FROM wp_term_relationships
WHERE term_taxonomy_id = (
SELECT term_taxonomy_id FROM wp_term_taxonomy AS tt
INNER JOIN wp_terms AS tm ON tt.term_id = tm.term_id
WHERE tm.slug = '%s'

)
GROUP BY month , year
ORDER BY post_date DESC",$slug);


$months = $wpdb->get_results($query);

foreach($months as $month) :
$year_current = $month->year;
if ($year_current != $year_prev){
if ($year_prev != null){?>
</ul>
<?php } ?>
<h3><?php echo $month->year; ?></h3>
<ul class="archive-list">
<?php } ?>
<li>
        <a href="<?php bloginfo('url') ?>/<?php echo $month->year; ?>/<?php echo date("m", mktime(0, 0, 0, $month->month, 1, $month->year)) ?>"> <span class="archive-month"><?php echo date("n月", mktime(0, 0, 0, $month->month, 1, $month->year)) ?></span> </a>
</li>
<?php $year_prev = $year_current;
endforeach; ?>
</ul>

以下、青色部分について説明していきたいと思います。

2016年12月8日木曜日

【備忘録】StaticPress プラグインを BASIC認証下の WordPress サイトで利用する場合の注意点

まぁ既出の問題らしいのですが、プラグイン本体の書き換えが必要なので、その方法をメモ。問題は下記で報告しておきました。


問題


WordPress 4.7で確認。
Basic認証しているサイトの場合、 StaticPress の BASIC認証のオプション設定をしたとしても、HTMLファイルが出力されない。

修正


includes/class-static_press_admin.php

static public function basic_auth(){
// return get_option(self::OPTION_STATIC_BASIC, false);
return 'ID:PASS(BASE64への変換が必要)';
}

と直接 BASIC認証のデータを ID:PASS でBASE64エンコードで入れるというもの
Macをお使いなら、ターミナルから

echo 'hogehoge:hogegegege' | base64

でBASE64エンコードできます。
あるいは
などのウェブサービスをつかうとよいです。

2016年12月8日 @kimipooh

2016年11月25日金曜日

【備忘録】MAMP で WP-CLIコマンドを叩くと、「Error: APCu is not configured correctly.」とでちゃう!?

ちょっと引っかかったので備忘録としてメモ残しておきます。

wp-content/object-cache.php を削除せよ


サーバーの WordPress を MAMP へ落とし込む時に遭遇するかもしれません。
サーバー側の PHP が APCuモジュールを有効にして、かつ WordPress 側に 「APCu Object Cache Backend」をいれていた場合ですね。

このプラグインは
  • wp-content/object-cache.php 
に手動インストールするので忘れがちです。
MAMPを利用する場合には、このファイルを削除しておいてください。

2016年11月25日 @kimipooh

2016年11月12日土曜日

第二回 Global WordPress Translation Day に参加して(WordBench 大阪) 11/12 #wordpress #wbosaka

第一回目は、第52回 WordBench 大阪に参加&発表して・・・ #wordpress #wbosaka で4月に開催されました。前回は日本から4つの地域コニュニティが参加し、今回は5つの地域コミュニティが参加します。


   WordBench 大阪(株式会社ファーストサーバー・会議室)
 (360度カメラの撮影データ

 WordBench 京都


 WordBench男木島


翻訳したもの

  1. Login Security Solution | 翻訳データ(Readme除く)| 承認権限ゲット | 完了
  2. Contact Form DB | 翻訳データ(Readme除く)| 完了
  3. WP Mail Smtp Mailer | 翻訳データ(すべて)| 承認権限ゲット | 完了
  4. Google Apps Login | 翻訳データ(Readme除く)| 承認権限要求中→ゲット | 完了

1. Login Security Solution


総当り攻撃や一定時間が過ぎたら自動ログアウトさせるなど、セキュリティ系プラグイン

2. Contact Form DB


Contact Form 7で送信されたデータを、WordPress上で表示したりエクスポートしたりするプラグイン。日本語版 Excel用のCSV(Shift-JIS)への出力は筆者コードをマージしてもらった。

3. WP Mail Smtp Mailer


WordPress からメール送信する時に、外部のSMTPを利用するためのプラグイン。
WP Mail SMTP が有名だが、現時点で9ヶ月間更新されていないので、ここ最近更新されているプラグインに切り替え。AMIMOTOにおいた WordPress で昨日から使い始めました。

4. Google Apps Login


Google アカウントで WordPress にログインするためのプラグイン。

発表するはずが・・・

2016年10月21日金曜日

【備忘録】カスタム投稿で記事コピー出来るプラグイン Duplicate Post が動かなくなった!?

ここ最近バタバタしていて使っていなかったのですが、あれ?下書きモードで記事をコピーできる「新規下書き」がなくなってるなと気づきました。

Duplicate Post プラグイン 3.0.0 の新機能の問題か


3.0.0 より、Duplicate Post の設定内の権限項目が付与され、投稿タイプによってこのプラグインを有効無効にできるようになりました。どうやらデフォルトは、投稿と固定ページのみのため、カスタム投稿はOFFになっていたのが原因でした。

すべてのサイトでは検証していないので、特殊な要因かもしれませんが、ここ最近 Duplicate Post プラグインがカスタム投稿で動かないな−と思ったら、設定をご確認あれ〜

2016年10月21日 @kimipooh


2016年9月21日水曜日

「nginx + リバースプロキシキャッシュ」において、User Agent ベースでテーマ切り替えやスマホ対応している場合の問題

随分前からある Tipsのようですが、nginx に移行して初めて遭遇したので、備忘録として残しておきます。まぁ遭遇したサーバーが網元(AMIMOTO)さんだったので、サポートに問い合わせたら件名の可能性について回答してくださったので手間取らずに済みました!

最近はレスポンシブ・ウェブ・デザインでスマホ対応していたので、気づいてなかったのでしょうね...

スマホ対応には、いろいろ方法はあると思いますが、まぁデザインやレイアウトに疎い私が把握・理解できる範疇では下記の2つぐらいかなーと思います。それぞれ nginx + リバースプロキシ配下でどう対応するかをメモっておきます。

1. レスポンシブ・ウェブ・デザイン


対応の必要なし

2. User Agent にて表示変更


モバイル判定したものについては、キャッシュを削除する必要あり。
Nginx でモバイル判定させ、その情報をもとにリバースプロキシキャッシュを削除するということになりますね。一番簡単なのは

  1. Nginx Cache Controller プラグインの導入
  2. nginx設定に、モバイル判定設定を組み込む
     参考:[WordPress] nginxでモバイルとPCでテーマを分ける方法(Qiita)
  3. テーマの functions.php にNginx Cache Controller を使ってモバイル用のキャッシュを削除するフィルタを追加
     参考:網元で WPtouch を使用する際の設定(網元)

当方は、WPtouch Mobile Plugin が利用されていたサイトだった事、網元をつかっていたので、まさにこのヘルプをみて解決できました!! 


3. User Agent でテーマ変更


これも基本は「2」と同じですが、便利なプラグインがあります。
  1. Nginx Cache Controller プラグインの導入
  2. nginx設定に、モバイル判定設定を組み込む
  3. Nginx Mobile Theme プラグインを使って利用する
どう設定するかは、上記2つのプラグイン作者のサイト

2016年9月21日 @kimipooh

2016年9月12日月曜日

【備忘録】特定の親カテゴリー以下の子孫カテゴリー情報を収集したい

ちょっとしたきっかけで試してみたので、備忘録メモとして残しておきます。

事例)親カテゴリー(記事)のID=2に属する、子、孫以下のすべてのカテゴリーIDを収集


$parent_id = 2;
$children_ids = array();
$term_children =  get_terms( 'category', array('child_of' => $parent_id) );

if($term_children){
  foreach($term_children as $child){
     $children_ids[] = $child->term_id;
  }
}

がもっとも短いコードかなーと思います。
ここの、 $term_children をチェックすることで、カテゴリー名やスラッグなども収集できますね。特定カテゴリーにの子孫の記事情報を表示したい、非表示にしたいなどのときも活用できそうです。

2016年9月12日 @kimipooh

2016年9月8日木曜日

【備忘録】WP-CLIと BackWPUPプラグインを利用した WordPress の自動バックアップ&自動アップデート

WordPerssの wp-cron.php によるアップデートは
  1. 「いつ」実施されるかわからない
  2. バックアップをとってから、やってほしい
という要望を満たすことが出来ません。
ので、もしサーバーで WP-CLI、BackWPUPプラグイン、そして cronが利用できるなら、コマンドベースのバックアップもオススメですよ!

以下は備忘録を兼ねて、一例として書いておきます。

流れ

2016年7月26日火曜日

【備忘録】公開日時を投稿内容の任意の場所に表示させる方法(+有効期限を表示する方法)

WordPress.org 日本語版フォーラムでのやり取りで解決した内容です。
今後使うこともありそうなので、備忘録としてここに残しておきます。



公開日時を投稿の好きな場所に表示させる


テンプレートを利用する方法などいろいろ方法はありますが、もっとも単純かつ分かりやすい方法は、the_content に対するフック(割り込み)を利用して、特定文字を置換することです。「いや、ショートコード作れよ!」ってツッコミが入りそうです。うむ、ならば単なる備忘録じゃなくてショートコードでやってみますか!
フックを用いる方法は、上記フォーラムで提示したコードを参照してみてください。

■ functions.php に追加

2016年7月13日水曜日

WordCamp Kansai 2016に参加・登壇して #wck2016 #wordcamp

WordCamp Kansai 2016では、実行委員として広報チームで活動していました。
主に記事の英語への翻訳です。他のメンバーに校訂してもらいつつ、基本的に一人で頑張りました。とくに想い入れがあったのが、3Dわぷーの翻訳です。

大体1話4時間〜6時間ぐらいかかったかなーと思います。
私自身英語は苦手なのですが、英作文をうまくなりたくて頑張っています。

初心者向けハンズオンにて


スライドは2つ利用しました:http://www.slideshare.net/kitanikimiya/presentations
また事前準備として、「MAMPのインストール方法(Windows / Mac)」をお願いするにあたって、https://info.cseas.kyoto-u.ac.jp/links-ja/manuals の資料を参考にしました。筆者が用意した資料です。

基本をおさらいしよう! WordPressのインストールからということで、初日にスピーカーとして登壇しました。



がハンズオンの会場です。ですがここには私は写っていません。
これは一日目午前のハンズオン準備部屋の写真です。
私の最大のやっちゃったことは、ハンズオン参加者と一緒に記念撮影しなかったこでした。まぁ実行委員が写真とってくれていたので、そのうち写真もらおう・・・。

お疲れ様でした!


2016年7月1日金曜日

【備忘録】WooCommerce 2.6.2(プラグイン)で日本の郵便番号についてはハイフンが自動付与される機能が実装

WooCommerceでの日本の郵便番号でハイフンを入れたい (WordPress.org 日本語版)でのやり取りを経て、実装されたっぽいので備忘録としてメモっておきます。
私自身はこのプラグインは使っておりませぬ (^^;

今回の修正で、日本、ポルトガルの補正が追加されたようです。
日本は、XXXYYYY --> XXX-YYYY、ポルトガルは、XXXXYYY → XXXX-YYY に登録時に自動補正されるってことですね(つまりハイフンありなし関係なく、ハイフンありに補正されて登録される)。

下記は左が 2.6.1 、右が 2.6.2 の includes/wc-formatting-functions.php のソースの該当部分です。




ちょっと動作について調べてみた

2016年6月29日水曜日

【備忘録】WordPressサイトを常時SSL化(http:// → https://)したときのメモ(nginx / http2.0編)

常時SSL化そのものはいろいろ情報がでているので割愛。
ここでは自分でやってみて引っかかった点を備忘録メモしておきます。

自分用なので、次の前提があるとします。

  • サーバーにログインでき、ファイルへの書き込み権限があること
  • WP-CLIが使えること
  • find / grep / sed / egrep コマンドが使えること

データベースの書き換え


  • wp search-replace  http://◯◯  https://◯◯  --skip-columns=guid

WP-CLIを使うと簡単ですね!
※ --skip-columns=guid は、GUIDを変更しないというものです。公開前サイトからURL変更する場合には不要ですが、それ以外は基本的に GUIDの置換はしないことが望まれています。詳しくは、WordPress のドメイン名やURLを変える際の GUID 問題のちゃんとした話(CAPITAL P)で詳しく解説されているので参考にしてみてください(2017.01.25追記)

テーマ内ファイルの書き換え

2016年6月27日月曜日

【備忘録】WordPressのログインパスワードリセットを制限する方法(メールアドレスだけOK)

単に使えないようにする情報は、結構掲載されています。
CSSで非表示にしたり、サーバー(htaccess含む)でリダイレクトしたり、WordPressのパスワード再発行のフック(allow_password_reset)で常に許可しない(false)を返すようにしたりと。

でも条件付きで許可する方法は探せませんでした。ので上記をヒントに、WordPressのコアコードを読んで検証してみました。その結果として、パスワードリセットを電子メールアドレスのみ有効にするという方法を紹介します。本件は、パスワード再発行について(WordPress.org 日本語版フォーラム)のやり取りにてうまくいったので備忘録を込めてここに纏めようと思いました。あとからわかったのですが、二通りのやり方がありましたし、コードももう少し洗練させたほうがいいなぁとも思いましたので。

以下のコードいずれかを「functions.php」 に追加することで、WordPressのパスワードリセットについてユーザー名に電子メールアドレスを使っている人だけ許可、それ以外は許可しないに設定できます。このコードの意味について順をおって説明します。

コード A(functions.php)

2016年6月13日月曜日

【備忘録】出ました!投稿・固定ページ編集データが表示できない(文字色が白)問題

表示できないのではなく、

  1. 文字色が「白」
  2. ビジュアルリッチエディタが動作しない
  3. ビジュアルリッチエディタとテキストエディタの切り替えができない

とまぁ上記の感じになるのです。
実際本文は白文字でテキスト形式(HTMLデータ)が入っています。
さらにビジュアルリッチエディタのアイコンが出ず、SafariやChrome(MacOS 10.10)、Windows7の端末でも問題がおきました。
WordPressのビジュアルリッチエディタとテキストエディタが表示・使用できないときの対処方法 (http://hi-linx.net/cannot-use-editer/) を参考に、キャッシュのクリア(サーバーやクライアント側両方)、WordPressの再インストールをしても解決せず。特にサーバー側のPHPログのエラーもなし。

参考情報

2016年6月3日金曜日

複数サイトのメンテナンスを WP-CLI でやろう!(サーバー管理者編)

いままで、WordPressをコマンドラインでメンテしようという情報をブログでいくつか書いてきました(関連情報参照)。ここで纏めということで、サーバー管理者向けに、

  • バックアップ > プラグイン更新 > WordPress 本体更新 > プラグイン更新
WP-CLI(コマンドラインツール)を使って、Linux cronに組み込んで WordPressのメンテナンスを自動化しようっていうのを紹介してみます。本体更新の後に再度プラグイン更新をしているのは、WordPressの新しいバージョンのみ対応のプラグインの場合、本体更新後しかアップデートが出てこないため、念押しでやっています。

この方法を使うためには
  • サーバーにログインできること
  • WP-CLIがインストールでき、動作すること
  • サーバーで cronが利用できること
が必要です。


関連情報



個別説明


1. バックアップ


2016年5月31日火曜日

【備忘録】複数サイトのプラグインバージョン調べ - WP-CLI編 -

JetPackに脆弱性が見つかったみたいですね。
更新をって簡単にいいますが、バックアップ > 更新 > 検証 という手順が必要で多数のサイトを管理している場合、全部マニュアルでやっていられません。特に現状のバージョンチェックのためだけにわざわざ WordPressにログインなどナンセンス!

WP-CLIを使う


1つや2つのサイトなら

cd WordPressインストールフォルダ
wp  plugin  list | grep jetpack 


cd WordPressインストールフォルダ
wp  plugin  get  jetpack  | grep version

とかで手動チェックできるでしょう。でも多数あったらそれも大変です。

一括バージョンチェックできる CSH スクリプトを作ってみる


こういう時、サーバー管理者ならちょちょいと一括チェックツールを作っちゃうでしょう。ここでは簡易のツールについて紹介しておきます。

2016年5月20日金曜日

【備忘録】nginx における WordPressのJetpackにより WordPress.com 対策

以前、Apacheのケースについては
で説明していました。
nginx についても説明しているところはありますが、まだApacheほど数も多くなく、後から探すのが面倒なので書き出しておきます。

一般的な設定(パスワード保護された WordPressも対応)


location ~* /xmlrpc\.php$ {
  access_log off; log_not_found off;
  satisfy any;
  allow 192.0.64.0/18;
  allow 使用中の端末IPアドレス;
  deny all;

  location ~ \.php$ {
     include /etc/nginx/php-fpm;
  }
}

サイトの構築によっては変わるので、一般的な設定の例示とします。

allow 使用中の端末IPアドレス;


まず最初に、自分の端末のIPアドレスを入れてください。
これは本当に xmlrpc.php へのアクセスをしていて、それがブロックされるかのチェックのためです。自分の今使っている(プロバイダの場合には動的なので変化します)IPアドレスを、「IPアドレスチェック」 とかで検索して調べてみてください。

nginx を reload して xmlrpc.php にアクセスしてみる


サイトURL/xmlrpc.php にアクセスして、
  • XML-RPC server accepts POST requests only.
と出ればアクセスOKです。
そして
# allow 使用中の端末IPアドレス;
として無効化して、nginx を reloadします。

サイトURL/xmlrpc.php にアクセスして、403 Forbidden とアクセス拒否されればOKです。

設定の個別説明


さてその他の設定について説明しておきます。

2016年5月4日水曜日

【お知らせ】自前 WordPress 公式プラグイン「WP DS FAQ PLUS」が動作しなくなっていた・・

いつのまにやら動作しなくなっていたようでした。
具体的には Ajax エラーで追加や変更ができず、項目の展開などもできなくなっていました。普段は項目は展開済みだったので気付かず...
に WordPress.org に投稿があって気づきました。
まぁあの頃は、新サーバーの調整に没頭していたので全然他の作業を追えてなかったってこともあるんですけどね。

でなにをしても Ajax エラーになっていたのですがなんとか修正して 1.2.7をアップデートしたのでした。

原因:PHP7上で「mysql_real_escape_string」が動かない


もうご承知のようにその関数が PHP7 から廃止されたからですね。
それ以外はエラーが出ていなかったので、おそらくはPHP7環境で動作させたのだろうなぁと思います。のでエラー吐いて動かなかったと...今回は esc_sql 関数へ置き換えました。


ボツボツと WordPress を PHP7 を使う環境が増えてきたってことなんでしょうねぇ。

ふ〜休みだからガッツリとチェックできました...

2016年5月4日 @kimipooh

【お知らせ】自前公式 WordPress プラグイン「WP ADD MIME TYPES」をマルチサイト対応に!#plugins

結構いろいろハマったところもあったけど、なんとか対応!


マルチサイト対応!


何故マルチサイト対応にしたかというと、


という質問を頂いたから。
それからずいぶんたってしまったけれど、ようやく対応できました。

マルチサイト対応って?


2016年4月28日木曜日

未承認を含む GlotPress での翻訳データを POファイルとしてダウンロードする方法

WordSlask でのやり取りで分かりました。

1. Filter で「 Current/waiting/fuzzy + untranslated (All)」


デフォルトでチェックされているはずですが、念のため確認。




2.  only matching the filter を選択し Export




これでダウンロードした POファイルを Poeditで開くと、未承認のものも反映されています。これでチェックしながら翻訳すると捗ること間違いなしですよ!

2016年4月28日 @kimipooh

2016年4月27日水曜日

【備忘録】nginx + fastcgi のアップロード容量サイズと WordPress Download Monitor の rewrite 設定について

2点結構悩んだので纏めておきます。

nginx + fastcgi のアップロード容量サイズ


デフォルトは 4MBになっています。
これを32MBに拡張しようとすると、

nginx.conf(nginx 設定)

 client_max_body_size 32M;

php.ini(PHP設定)
  post_max_size = 32M
  upload_max_filesize = 32M

php-fpm (FastCGI設定)
  php_admin_value[upload_max_filesize] = 32M
  php_admin_value[post_max_size] = 32M

の3つをチェックしてみてください。特にphp-fpm は忘れていたので盲点でした。

PHP7 で破棄された関数によるWordPressの問題編(1)mysql_real_escape_string / set_magic_quotes_runtime #wordpress

1つの WordPress を nginx + PHP7 な環境に移行しました。
ここでは PHP7 周りでおっとっと、、という事例について備忘録ついでに紹介していきます。今回は、「mysql_real_escape_string」です。


mysql_real_escape_string は PHP7から廃止された!

のでこの関数をつかっている場合にはエラーが出ます。
この関数は、MySQLデータベースにSQLクエリを渡すときに特殊文字をエスケープする関数です。esc_html などと同じような感じですね!

ログには
  • 2016/04/27 11:33:38 [error] 23763#0: *1 FastCGI sent in stderr: "PHP message: PHP Fatal error:  Uncaught Error: Call to undefined function mysql_real_escape_string() in 使っているPHP(パス含む)

という感じで出ます。

mysqli_real_escape_string に変更せよ!

2016年4月24日日曜日

【WordBench京都4月号】管理画面再入門 & Global WordPress Translation Day に参加して(2016/4/24) #wordbench #wbkyoto

今日は、久しぶりに WordBench 京都に参加です!

祝!今年もらんちゅうが卵を産みました!


全然、WordBench と関係がないのですが、昨日大潮だったからか、今朝出かける直前に産んでいるのを発見。可能なかぎり隔離しました。また明日も継続せねば!




会場入り!


さて気を取り直して、今日は WordBench 京都の前に、WordCamp Kansai 2016全体ミーティングがあり、筆者は初めて参加しました!筆者は広報チームに途中参加し、主に英語での発信を担当してます。英語は得意ではないのですが、英語のスキルを上げたい!ってことで頑張ってます!

会場は、WordBench 京都のメイン会場となっている コワーキングスペース coto。筆者が WordPress コミュニティ(WordBench 京都)に参画するきっかけとなった場所でもあります。サイトもいつの間にか洗練されており、入口の入りづらい雰囲気とは全く違って、使いやすくきれいな空間が用意されています。またベランダもあって、この時期だとちょっと暑いかもしれませんが、アイスクリーム食べながら読書でもしたい気分になりますね!




以下、筆者のコメントは「※」で、それ以外は発表者の発言内容を筆者なりに理解した文言に書き換えて載せています。そのため、意図しない理解をした場合には間違っている場合があるかもしれません。そのあたりはご容赦ください。

はじめての公式プラグイン開発のなかで気になった管理画面のイロイロ


2016年4月16日土曜日

第52回 WordBench 大阪に参加&発表して・・・ #wordpress #wbosaka

今回は翻訳するぜ!会です。
会場は、おなじみのファーストサーバ株式会社さんの会議室。



プログラム:https://wbosaka.doorkeeper.jp/events/41957
発表スライド:http://www.slideshare.net/kitanikimiya/52-wordbench-wordpress-glotpress
参考情報





冒頭、まず筆者の方から、WordPress の新しい翻訳システム「GlotPress」についての翻訳概要と、公式プラグインを GlotPress へ移行する手順について説明しました。

後は、WordPress codex 日本語版や、GlotPress を使った翻訳などをするもくもく会へとなだれ込みです。

質問1 GlotPress へ移行した後に、テーマ・プラグイン内に翻訳データを置いたままでよいのか

2016年4月14日木曜日

WordPress 4.5 日本語版がリリース

本日、2016年4月14日付で WordPress 4.5 “コールマン” (WordPress.org 日本語) においてアナウンスされています。
手持ちの多くのサイトも切り替わっていますが、まだ切り替わっていないサイトもあります。 WP-CLI で一括アップデート (wp core update)しているのですが、何故だろうと思ったら。。。Acunetix WP Security プラグインの設定問題だったか...


その中で、既知のバグがいくつか報告されていました。


上記で記載されている情報になりますが、もっとも影響がありそうなのは、

  • jQuery 問題
かなぁと思います。Divi バージョン 2.7.2以下、Themeforest のほかのテーマでも影響をけるものが多いとか。jQuery 1.12 以上を使っていないと、 不具合がでる可能性があるってことか...

2016年4月14日 @kimipooh

wp core update で WordPress 本体のアップデートができない場合には・・・

ようやく原因を見つけたのでメモ。

Acunetix WP Security プラグイン問題


Acunetix WP Security プラグインを入れて、下記の設定をオンにしていると、 wp core update をしても常に最新と出てしまう(wp core version で 4.4.2 と最新ではないのに)。あるいは、Segmentation fault という致命的なエラーがでる(手持ちの MAMP環境 on MacOS 10.10.5 , WordPress 4.5 ではこれが出た...)。
  • Remove core update notifications from back-end for all but administrators

回避策


  • Remove core update notifications from back-end for all but administrators
をオフにする。
すると wp core update は正常に動作しました。

Segmentation fault が出る原因は?


MacOS 10.10.5 で MAMP 3.5, WP 0.23.0 の環境での話です。
何故そのようなことになるのか。ちょっと追跡してみました。

wp-scan-security/res/inc/WsdSecurity.php
    public static function fix_removeCoreUpdateNotification()
       ...
       add_filter( 'pre_site_transient_update_core', create_function( '$a', "return null;" ) );
    }

この青文字の部分で問題が起こっていたのでした。
で、これ以上の追跡は時間切れなのでしません〜

User Access Manager プラグイン問題

2016年4月11日月曜日

手持ちの WordPress プラグインを 4.5対応 & GlotPressへ翻訳データ移行作業開始

現在、公式プラグインとして5つ公開しています。
  1. WP DS FAQ Plus(2012年7月9日公開)
  2. WP Add Mime Types(2013年8月16日公開)
  3. View Shortcodes(2014年1月18日公開)
  4. WP Floating Menu Framework(2014年9月19日公開) -- 停滞
  5. WP Hidden Password Protected Pages (2014年11月27日)
うち、WP Floating Menu Framework は今のところ更新する予定はないので、残り4つについて、4.5RC2での動作チェックをしました。ついでに、WP Add Mime Types 以外について、GlotPress へ移行すべく準備のためのコードを埋め込みました。

明日 WordPress 4.5が出るにあたってギリギリになりましたが、なんとか間に合った〜って感じです。

コードチェックは、GitHub + Travis CI でやってますが、今回 PHP 7.0を加えました。

2016年4月6日水曜日

Global WordPress Translation Day ってのが 4月24日に開催されますね!

いくつかの WordBench でも検討されているということですが、これは是非参加してみたいなと思います。とりあえず自前のまだ翻訳していないプラグインを GlotPressに移行して翻訳してやろうかな〜って思っています。

「Global WordPress Translation Day」に参加してみよう!


WordBench 男木島を立ち上げた額賀さんが、WordBench.org で本日、このイベントについての告知をされました。イベント当日は、WordSlackに翻訳関係の管理者がスタンバっていると思われるので、#translate チャネルへ翻訳したら「翻訳したぜ〜」ってつぶやいたり、自分のテーマやプラグインを翻訳したなら「モデレーション権限ちょうだい!」っていうと即時対応されるのかもしれませんねぇ。

WordBench 東京は参加予定みたいですね。京都と男木島は検討中ということ。開催されるなら、京都に参加してみようと思ってます。と書いていたら、京都の方はやりますね! 早速参加をポチッって押しておきました。

なお、現在 WordPress の翻訳といえば、GlotPress を使った翻訳主流になっています。従来のテーマやプラグイン内に翻訳ファイルを置くこともできますが、これを機会に 公式テーマやプラグインを作成されていて多言語対応にしているなら、GlotPress へ移行をしてみては〜って思います。

プラグイン移行については、ちょうど4月16日に開催される 第52回 WordBench 大阪 「WordPressの新しい翻訳システム「GlotPress」を使ってみよう!」で筆者がセッションでしゃべりますので参考になるかもしれません〜。

2016年4月4日 @kimipooh



2016年3月31日木曜日

【告知】WordCamp Kansai 2016は 7月9日-10日開催決定!!

ってことです。
WordCampの公式サイトに掲載されてました!!
そう遠くない時期にティザーサイトが立ち上がるはずです!(たぶん)楽しみですね!

筆者も、WordCamp Kansai 2016の広報チームとして今後活動していければと思っています。

ってそれだけじゃ寂しいので、過去を振り返ってみます。

WordCamp Kansai 2015

2016年3月25日金曜日

WP CLI 本体を自動アップデートをする方法

WP CLIを皆さん使ってますか。
サーバー管理者のひとりとして、WordPressのバックアップやアップデートをコマンドラインから管理できる WP CLI はなくてはならないツールです。なかったら、もう何十ものWordPressを管理できません。

で、このWP CLI君は結構頻繁にアップデートしています。

WP CLI 0.23.0 じゃないと 次期 WordPress 4.5はサポートされないよん


とまぁ、最新版じゃないと最新 WordPressに非対応になっちゃうんですよね。
となると、 WP CLI自体のアップデートも定期的にする必要があります。

そんなの手動でやってられないぜ!


まぁサーバー管理者であればそうつぶやいてしまうでしょう。皆さん多忙ですもんね。
そこのお悩みの方、朗報です。

wp cli update --yes


で自動アップデートできます。これをcronにいれておけばバッチリです。


以下は、 wp cli update で自動アップデートを試した結果です( --yes を入れ忘れていたので、アップデートするかの確認画面がでてます。)



いつから実装されたの?


0.18.0 で実装されました。
でも、http://wp-cli.org/ のupgradeには、この方法の記載がないのですよねぇ。だからいつもググッては見つけて、忘れるを繰り返していたので、纏めてみました。
これで自分のサイト内検索で思い出せるはず。

ふー

2016年3月25日 @kimipooh



2016年2月27日土曜日

第50回 WordBench大阪勉強会に参加して・・・(2/27)#wbosaka

記念すべき 50回目の勉強会は TAM Coworkingでの開催でした。
中のレイアウトについてWordCamp Kansai 2014の全体会合で見たことある!!って思うのですけど、どこか思い出せない... 篠原電気のときだったかなぁ(第32回 WordBench大阪勉強会)。近いから建屋的に似ているとか。。。まっ脱線するのはこのへんで・・・。



初めて行く所は少し早めにいって周囲を探索します。方向音痴には必須の作業です..
で扇町には扇町公園ってのがあるってことでみてきました。



広いですねぇ。



屋内プールもあるんですかね?うーむ、昼食は近場でチキン南蛮エビフライ定食ってのを食べました。なかなかおいしかったですね。

プログラム


今回は久々の座談会形式。

2016年2月10日水曜日

パスワード保護されたWordPressを WordPress.com で管理するためには

所有のWordPressを JetPackプラグインを介在し、WordPress.comでサイトの一元管理ができることは知っている方も多いと思います。これは2014年12月に実装されて随分経っているので今更なのですが、ようやく重い腰をあげて対応してみました。

まぁ通常だとそんなに躓かないのですが、BASIC認証などによってパスワード保護されたWordPressについてはちょろっとしたコツがいるので合わせて備忘録としてメモしておきます。

XMLRPC対策をしている場合


現在WordPressで標準搭載されているxmlrpc機能(/xmlrpc.php)は、WordPressから直接ログインせずにWordPressを管理できる機能を有しています。たとえば Microsoft WordからWordPressの記事を更新できますし、それ以外の対応ソフトからもxmlrpc.phpを介在してコンテンツを閲覧したりテーマ変更したりなどが可能です。

しかしながら、ここへの総当たり攻撃をされるとサイト全体がとても重くなったり、xmlrpc.php 自体に脆弱性があった場合には不正アクセスされる恐れもあります。

従って外部からのアクセスを遮断しているケースも多いかと思います。

そういう場合には、サーバーの設定で(.htaccess等)

<Files ~ "xmlrpc.php$">
  allow from 192.0.64.0/18
  deny from all
</Files>

をしているケースも多いと思います。
192.0.64.0/18 は、Automattic社が管理するIPアドレス全体。

xmlrpc.php は基本拒否するけれども、JetPackと連携するために WordPress.comからのアクセスのみは許可したいということです。どの範囲か分からないので、JetPackやWordPress.com提供元のAutomattic社のIPアドレスまるごと許可しているというわけです。

しかーし、サイト丸ごとパスワードロックしている場合にはダメで・・・

通常はそれでいけるのですが、このケースが厄介です。
サイトを見られたくないけど、xmlrpc.php のみ アクセスして欲しいという要望はあるわけです。そういう場合には、Satisfy設定を使いましょう。

<Files ~ "xmlrpc.php$">
  allow from 192.0.64.0/18
  deny from all
  Satisfy Any
</Files>

とまぁ一行追加するだけです。
これで、BASIC等認証をかけていた場合、OR判定になります。

つまりBASIC認証をかけていたとしても、xmlrpc.phpへのアクセスだけ、 192.0.64.0/18 からはBASIC認証を迂回して普通にアクセスできるようになります。

間違っても、サイト丸ごとのBASIC認証に対して、 192.0.64.0/18をSatisfy Anyに設定することはしないようにしましょう。それやっちゃうと、Automattic社のネットワークからローカルなサイトが丸ごと閲覧されちゃいますよ〜。

付録:あれ?JetPackプラグインいれたら画像が表示されなくなったけど?

とりあえず、JetPack設定より、Photonを無効にしてみてください。

を見ると、キャッシュが適応されるまで時間がかかるからってことですね。
しかしならばデフォルトでONにしている以上、そのことの注意喚起がないと困りますねぇ。またサイト丸ごとパスワードロックしているサイトで、有効にして2日経っても画像が表示されませんでした。もしかしたらサイトまるごとパスワードロックしている場合には、キャッシュできないのかもしれませんね。

2016年2月10日 @kimipooh
2016年2月12日 付録を追加

2016年1月23日土曜日

WordBash Kyotoに初参加して・・・ #wordbash

WordBenchじゃないですよ、BashですBash。何故Bashなのか聞いてみたらBeerBashからとったとのこと。WordPressとしては少なくても国内では初の試みだと思う。

さてさていきなりモデレータの方が始まる前から顔が赤いという状況です。初参加なのでどうやることやら・・・




プログラム


今日は13時〜20時と長時間懇親しながらセッションもあるという異色なWordPress関連のイベントです。登壇者も9名と多いですね!

  1. 更新作業で消耗しない!Web製作者のためのWordPerss公式ディレクトリ活用術(Mignon Style
  2. トークセッション(テーマ系)
  3. とあるフリーランスのWebデザインの自社サイトのお仕事受注術(おおはらかずき
  4. トークセッション(運用・働き方系)
  5. トークセッション(コントリビューション系)
  6. Hello Dollyのここがクソ!? Hello Kushimoto から学ぶモダンなプラグイン制作術(Toro_Unit
  7. トークセッション(プラグイン系)
  8. Habakiri Advent Calendar 2015総まとめ!(キタジマタカシ
  9. Lightning ✕ ExUnit の開発背景と設計思想(石川栄和
  10. トークセッション(対談系)

※以下、筆者が理解した内容を筆者の感性で纏めています。
ですので必ずしも発表者の意図通りに書かれているわけではありません。