【WordPress】カミングスーンプラグインを使う(2020年)

ひさびさにWordPressでカミングスーンを利用します!

ではさっそくプラグインをどーしようかと…

 

WordPressのプラグインインストール画面で探してみるとカミングスーンいっぱいありますね…

 

今回は、一番最初に表示されたプラグインの「Coming Soon Page, Under Construction & Maintenance Mode by SeedProd」を使ってみたいと思います。

 

それでは、「Coming Soon Page, Under Construction & Maintenance Mode by SeedProd」の横の「今すぐインストール」ボタンをクリックし、有効化します。

 

 

インストールが完了すると設定画面が表示されます。

 

「General」欄で「Enable Coming Soon Mode」を選択する

 

「Page Settings」でロゴや「Headline」や「Message」を入力すればOK.

 

 

あとは、シークレットウィンドウなどで確認すれば

こんな感じで表示されます。

 

 

WordPressのセキュリティをもう一度見直そう!!

WordPressは、非常に便利なツールですが、悪意を持った攻撃も非常に多いので、今更ながらですがもう一度セキュリティ対策を見直したいと思います。

 

また、セキュリティ対策は1つで完了というわけではなく、1つ目、2つ目の多段にかけないと今の時代の攻撃は防ぎぎれないのが実情です。

 

 

サーバー側の対策

・WAFの有効化

→それぞれのレンタルサーバー会社が提供しています。

エックスサーバー

https://www.xserver.ne.jp/manual/man_server_waf.php

 

さくらインターネット

https://www.sakura.ne.jp/function/waf/

 

ロリポップ

https://lolipop.jp/manual/user/waf-set/

 

などの参照。WAFはいくつかの機能がありますが、プラグインによってはすべてを有効化できない場合がありますので利用環境に合わせて確認が必要です。

 

個人的には、SiteGuardを利用しているところが細かく調整が可能なので便利です。

 

・そのほかのセキュリティ

ざっくりとくくっていますが、サーバー会社によって用意されている内容がことなるのでそちらを参照してください。

 

例えばエックスサーバーの場合は、

・ダッシュボードアクセス制限

・XML-RPC APIアクセス制限

・REST API アクセス制限

・ログイン試行回数制限設定

https://www.xserver.ne.jp/manual/man_server_wpsecurity.php

があります。

 

ログイン試行回数制限設定は、利用者からログインできないってクレームが多いので有効化は悩みどころです。

 

WordPress側の対策

※DB接頭詞、wp-configの件は触れません。

・わかりやすいユーザー名を作らない。

例:admin、administrator,1234567..

・簡単なパスワードにしない

例:password,test,sample…

 

・不要なプラグイン、テーマは削除する

・XML-RPCを無効化する

スマートフォンやアプリから記事更新をしない場合には無効化をしましょう。

サーバー側でできる場合はサーバー側でブロックがベストです。

 

・REST APIを無効化する

 

・Akismetでスパムコメント対策を行う

コメントを受け付けてなければ導入しなくてもよいような。いちちwordpress.comアカウントが必要なので面倒です。

 

対策方法としては

 

サーバー側対策 ≫ WordPress側対策

上記の感じでで設定したほうがWordPress自体に負荷をかけることが少なくなるので、他の閲覧者に影響が少ないです。

 

WordPressのログをみていると「XML-RPC」でログインアタックしてくるのが多いです。

目に見えているログインフォームのセキュリティ強化もありますが、システム的な攻撃をブロックにも注意しましょう!!

現在は、海外からの攻撃が多いので、特に問題がなければ国内限定にするもの一つの手です。

 

VIMEO APIを試してみる

PHPからVIMEO APIの接続を試してみます。

 

VIMEO SDK

https://developer.vimeo.com/api/libraries

 

リファレンスの中を見るとテストができるのでそこで試してみてもいいかも

 

https://developer.vimeo.com/api/reference

APIでアクセスするためにアプリを作る

https://developer.vimeo.com/apps

※アップロードにはアプリを作った後に申請しないといけなくてこれが5日間程度かかると思ってよい。営業日ベースなら1週間って感じ。長いよ~~。

 

とりあえず、自分自身の情報を見てみる

<?php
require 'vimeo.php/autoload.php';
use Vimeo\Vimeo;
$client_id = 'xxxxxxxxxxxxxx';
$client_secret = 'xxxxxxxxxxxxxx';
$access_token = 'xxxxxxxxxxxxxx';

//Vimeoに接続
$lib = new \Vimeo\Vimeo($client_id, $client_secret, $access_token);

//自身の情報を取得
$user = $lib->request('/me');
echo '<pre>';
print_r($user);
echo '</pre>';
?>

 

って実行したらエラー「 syntax error, unexpected ‘?’ in /vimeo.php/src/Vimeo/Vimeo.php on line 163」およよ??

163行目の?stringは、PHP7.1以上で有効だったよ。?をとってみたらOK。まあ、PHP7.0でテストするのもどうなのかと思って、PHP7.1に変更してみた。

public function getToken(): ?string
↓
public function getToken(): string

 

とりあえず戻り値の最初は

Array
(
    [body] => Array
        (
            [uri] => /users/xxxxxx
            [name] => xxxxxx
            [link] => https://vimeo.com/userxxxxxxxxx
            [location] => 
            [bio] => 
            [short_bio] => 
            [created_time] => 2020-02-26T09:50:36+00:00

 

ってなところ。

 

自分自身のアカウント情報:$lib->request(‘/me’);

自分自身のビデオリストを取得:$lib->request(‘/me/videos’)

 

ってできる。

 

アップロードできるのかな?

APIのページを参考に…https://developer.vimeo.com/api/guides/videos/upload

 

APIをインストール。これでやらないと、必要なものを自分で集めるのが大変!!

composer require vimeo/vimeo-api

 

あとは、APIドキュメントページを参考に記述すればアップロードまで完了!!

 

以外とここまでは簡単だった。

 

操作として

1.アップロード

2.設定の変更

となるようだ。

 

 

プライバシー設定メモ

・VIMEO.COMで非公開

$client->request($uri, array(
  'privacy' => array(
'view' => 'disable',
  ),  
  
), 'PATCH');

 

コメント禁止

'comments'=>'nobody',

 

 

どこの動画に埋め込みを許可しますか?の設定メモ

 

リファレンスによると

$client->request($uri . '/privacy/domains/example.com', 'PUT');
$client->request($uri, array(
  'privacy' => array(
    'embed' => 'whitelist'
  )
), 'PATCH');

echo $uri . ' will only be embeddable on "http://example.com".';

 

って感じです。

 

PUTでドメインを追加して、この動画は、特定のドメインからだけだよ==って感じ。

 

えーと、このあたりは「https://developer.vimeo.com/api/reference/videos#embed-privacy」も参考にしておく必要がある。

 

で、ドキュメント通りに行っても動かん!!ってはまりました。

 

まず、1行目のドメインを追加する箇所を実行したときにレスポンスが「[status] => 405」」だと。ちなみに[Allow] => PUT,DELETE,OPTIONSって言われています。なのでPUTできていない。

 

APIのコードを読む限り、requestのパラメーターって3番目がMETHODの指定。おろ?ドキュメントは2番目。

request($url, $params = array(), $method = 'GET', $json_body = true, array $headers = array()): array

 

じゃあ、2番目のパラメーターをarray()で処理してみた。

 

 $client->request($uri . '/privacy/domains/example.com', array(),'PUT');

 

こんどは、[status] => 400 で戻ってきたぁ。

で、今度はエラーメッセージあり。[error] => The video\’s embed privacy isn’t set to specific domains.

whiteリスト対応になってないっぽい。それなので、順番を動画をwhitelistに対応にしてからドメインを追加してみた。

 

そしたら[status] => 200 でwhitelistに追加できた。めでたしめでたし。

 

 

 

プレイヤーを試してみる

特定のドメインだけをしている場合にWordPressの管理画面で動画を見ようとすると…

「大変申し訳ございません」って見れない…

 

VIMEO HELPを見ると

 

設定にドメインがリストされているにも関わらずエラーが引き続き表示される場合は、アドレスバーで指定されているドメインがVimeoプレーヤーに送信されたドメインと異なる場合があり、この場合プライバシーに関するエラーが表示されます。
リファラーがプレーヤーのiframeに到達できないよう、サイトのHTMLコードがブロックしている可能性がないかウェブデベロッパにお問い合わせください。

 

えーと、iframeを読み込むときにリファラーを送っていないんだと。。

 

では実際に…

 

・再生可能な場合

 

・再生不可能な場合

 

リファラーがいません。WordPressさん。。。

ということでmetaでリファラーすればきっと表示。

 

プレイヤー回りのカスタマイズ

「動画」>「プリセットを埋め込む」で新規作る。

PlayerのAPIで埋め込み指定するよりもこっちで指定したほうが良い。ロゴ削除や変更も可能だし