2017年2月14日火曜日

【備忘録】JetPackプラグインの「タイルギャラリー」の落とし穴に注意!

WordPress の JetPackプラグイン内にある「タイルギャラリー」について、ちょっと特殊な問題が起こって解決したのでメモっておきます。

制限サイトではギャラリーが表示できない


制限サイトとは、IPアドレス制限やパスワード制限されたサイトのことです。
よく準備中のサイトって一部メンバーのみチェックのために、そういった設定にしていることはありませんか。

どうやらその場合には、タイルギャラリーのギャラリーデータの画像が表示できないようです。このタイルギャラリーは、WordPress.com の CDNを通じて提供されており、画像としては ***.wp.com で生成された画像を表示することになります。制限されたサイトでは、生成された画像が GETできない(400エラー)となります。制限を解除して、キャッシュ系プラグインやシステムがあるなら、キャッシュをクリアすると問題なくでます。

以上から、WordPress.com 側がサイトの画像から直接データを取得してコンバートして CDN として提供しているのじゃないかなーと思います。なので、サイトへのアクセスが制限されていると画像が取得できなくて生成できないのかなぁと。

ただ一度サイトのアクセス制限を解除してタイルギャラリーができあがれば、再度サイトのアクセス制限をしてもギャラリーは残ります。

でも毎回やるの面倒だよ〜


その場合には、WordPress.com からのサイトへのアクセスを許可すればいけました。IPアドレスの細かい範囲は分からないので、パスワード保護されたWordPressを WordPress.com で管理するためには で以前調べた Automattic社の IPアドレス群をまるごと許可しました。
  • 192.0.64.0/18
ですね。実際に CDNは、 i0.wp.com とか i1.wp.com とかいくつかあるようで、それらはカバーしてそうです。BASIC認証をしているなら

Nginx
     satisfy any;
     auth_basic  "Hogehoge---";
     auth_basic_user_file /hogegegege/.htpasswd;
     allow 192.0.64.0/18;

Apache
   Order Deny,Allow
   Deny from all
   Allow from 192.0.64.0/18;
   AutoType Basic
   AutoUserFile  /hogegege/.htpasswd
   require valid-user
   Satisfy Any;

のように、Satisfy Any で OR条件にした上で、IPアドレス許可を追加すればいけまーす。

2017年2月14日 @kimipooh

2017年2月9日木曜日

【備忘録】WordPress の古いバージョンもセキュリティメンテナンスリリースされているけど、安全なのか

ちょっと内輪で質問されたことを受けて、調べてみても情報がなかなか見つからなかったので、フォーラムで質問してみました。皆さんからいろいろ回答頂いてやりとりしていたのですが、調べていくうちに、Make WordPress Core の Handbook に回答を見つけました。忘れない内にメモっておきます。

最新版以外は非推奨


つまりは結論的にはそうだったのでした。
確かに WordPress バージョン一覧(WordPress Codex 日本語版)をみると、WordPress 4.7.2 がリリースされた 2017年1月26日付で、WordPress 3.7以降のすべてのバージョンのマイナーバージョンがリリースされています。過去バージョンも、https://wordpress.org/download/release-archive/ よりダウンロード可能です。
WordPress.org フォーラムのモデレーターも、フォーラムにて、WordPress 4.6.2は 4.7.1(同時にリリース)のセキュリティフィックスをすべて含んでいるよという発言をされてます。

しかしながら、上記ダウンロードサイトの冒頭にも書かれていますが、
のSecurity項目の冒頭を抜粋すると

== 抜粋 ==
In the case of a purely security release, all patches should be created well ahead of time. Different patches may be necessary for trunk and stable branches. Currently, we make an effort to back port patches to all versions of WordPress that support autoupdates (3.7+). However, back porting patches is not always possible and those versions of WordPress are not officially supported as a result.
========
のように、自動更新を実装した WordPress 3.7以降のすべてのバージョンについて、可能な限りセキュリティリリースをするよう務めるけれど、すべてをフィックスできるわけではないし、公式にサポートいません。

と書かれているではないですか。
となると公式にサポートされている最新版以外は非推奨。ってことなのですよね。
確かに 一つ前のバージョンぐらいは全部フィックスされる可能性は高いですが、しかし保証されているわけではないのでアップグレードして対応するのが推奨ってことですねぇ。



なるほど〜って思った今日この頃でした。

P. S.
いろいろな事情でメジャーバージョンアップできないケースも多々あると思います。WordPressでは 3.7というかなり古いバージョンも、できる範囲でしょうが頑張ってセキュリティフィックスされている開発者の皆様には脱帽です。


2017年2月9日 @kimipooh

2017年1月13日金曜日

【備忘録】WordPress 4.7.1 よりメディアアップロード時のMIMEチェックにファイル本体のチェック機能が付与されていた・・・

あれ、PDFやPPTXがアップロードできなくなってる、、、って思って調べてみた所、つまりはそういうことだったのです。風邪引いてフラフラなのにマイナーバージョンアップで久々にデカイ変更されたなーという感じです。

wp-include/functions.php
2323行〜2333行 ( wp_check_filetype_and_ext 関数内)


のコードが、付与されていたってことです。

何が違うの?

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 にログインするためのプラグイン。

発表するはずが・・・