カテゴリー: WordPress

  • お問い合わせフォームからのspam対策 – Contact Form 7

    昨年(2018)秋頃から、あるサイトでspamがたくさん届くようになったとのことで対処。

    方法としては、
    (1) reCAPTCHAによる自動送信の回避
    (2) Akismetによるメールアドレスチェック
    (3) 入力内容によるフィルタ
    など。

    で、(1)と(2)は適宜実施するとして、(3)について調べてみました。
    ちなみに、問題となっているサイトは日本語のみでの運用のため、日本語が入力されていない場合はエラーにする方向で考えています。

    参考にさせていただいた記事
    Contact Form 7で本文に日本語が含まれていない時は送信できないようにする方法
    Custom Validation | Contact Form 7

    textarea* は何らかのひらがなが含まれていること。
    text* your-address は半角英数が含まれていないこと。

    としてみました。

  • HTMLのヘッダについて – 勉強会の下調べ

    年明けの勉強会の予習というかメモ書き。
    クロコラボ #20 headタグの中を考えてみよう
    少しずつ書き足していきます。

    文書メタデータ(ヘッダー)要素
    文書レベルメタデータ要素
    Qiita:色々あるHTMLのmetaタグなど一覧

    JavaScriptはhead内で読み込みたい
    結論としてはhead内で良さそう。

    Document metadata – HTML 5.2
    W3C Recommendation, 14 December 2017

    headタグの短い例

    headタグの長い例

    文書レベルメタデータ要素

    エンコーディングを宣言する 要素は 要素の内部かつ
    HTML の始めから 1024 バイト以内に配置しなければなりません。
    これは、ページの文字集合を選択するまでに始めの部分しか確認しないブラウザーがあるためです。

    Document.title – タイトル

    What’s in the head? Metadata in HTML

    https://developer.mozilla.org/en-US/docs/Learn/HTML/Introduction_to_HTML/The_head_metadata_in_HTML

    タイトル

    <title>Page title</title>
    

    Document’s character encoding

    <meta charset="utf-8">
    

    charsetをISO-8859-1に変えて文字化けを確認してみる。

    Adding an author and description

    <meta name="author" content="name here...">
    <meta name="description" content="description here...">
    

    Googleで MDN Web Docs を検索してみる。
    descriptionの内容やtitleが検索結果に利用されていることを確認。

    その他のメタデータタイプ

    Open Graph Data: Facebookが作ったプロトコル。ウェブサイトの提供をリッチに。

    <meta property="og:image" content="ロゴデータのパス..."
    <meta property="og:description" content="サイトの説明..."
    <meta property="og:title" content="サイトのタイトル..."
    
    <meta name="twitter:title" content="サイトのタイトル..."
    

    カスタムアイコン

    <link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
    

    他に、iPadのホームスクリーン用の高解像度アイコンを定義するなど。

    CSSやJavaScriptファイルを組み込む。

    <link rel="stylesheet" href="my-css-file.css">
    <script src="my-js-file.js"></script>
    

    Primary Languageの設定

    <html lang="ja">
    

    The Open Graph protocol

    http://ogp.me/
    Basic Metadata
    – og:title
    – og:type
    – og:image
    – og:url
    Object Types
    – music
    – video
    – No Vertical(article, book, profile, website)

    Meta Tags in WordPress

    https://codex.wordpress.org/Meta_Tags_in_WordPress

    Markup Validation Service

    https://validator.w3.org/

  • reCAPTCHA for testing

    “I’d like to run automated tests with reCAPTCHA. What should I do?”
    https://developers.google.com/recaptcha/docs/faq

    There is a set of keys for testing purpose.
    On the first time, the reCAPTCHA widget will show a warning message. And verify with check “I’m not a robot”, completed message will appear.

  • JAWS-UG愛媛 第18回勉強会 に参加しました

    JAWS-UG愛媛 (日本 Amazon Web Serviceユーザ会愛媛)第18回勉強会
    昨日参加してきました。

    AWS初心者向けハンズオン!
    セキュアでスケーラブルなWordpressのサイトを構築してみよう。

    なかなかのボリュームで、途中で集中力が切れて心が折れそうになりましたが、ほぼ全員が完走という、ものすごく充実した勉強会でした。

    一部、トラップ?があって、その場しのぎの対応でなんとかやり過ごしたのですが、隣に座っていたOさんからのサーバープロセスに関する指摘があってモヤモヤしていたので、ec2インスタンスのみ作り直して確認してみました。

    /var/www/html 以下のファイルの所有が
    apache:apache
    となっている割に、nginx の worker process が nginx ユーザーなので wp-config.php が生成できない?

    と思ったのですが、nginx から php を動かすのに php-fpm を使っていて、



    とすることで wp-config.php の生成も含めて、WordPressの更新ができました。
    というのが本日(23日)午前中の作業。
    で、午後にもう一度ハンズオン用のイメージでインスタンスを作り直したところ、

    html が最初から apache:apache になっていて、難なくWordPressのインストールが完了しました。
    もしかして、この間(午前から午後)にハンズオン用のイメージが修正された?
    ちょっと様子がわからないのですが、今公開されているイメージであれば、WordPressのインストール(wp-config.phpの生成)で引っかかることはなさそうです。

    [追記:2018.12.29]
    自分が使っていたリージョンが間違っていたようです。東京リージョンにあるイメージを使えば問題なさそうです。

  • WordPress + AWS S3サイトを独自ドメインでHTTPS対応

    WordPressのメディアをAWSのS3で配信するウェブサイトで、
    HTTPSに対応してみました。(備忘録)

    参考にさせていただきました。感謝。m(..)m
    WordPressサイトをCloudFrontで配信する
    Dot TKで取得した無料ドメインをRoute 53でホストする
    【無料&超簡単】S3と独自ドメインで公開しているサイトをSSL(https)化する
    AWS CloudFrontを使ってWordPressのメディアファイルだけS3に配置する
    案外簡単なAWS上のWordPressのSSL化

    以下、AWSのEC2+RDS+S3でWordPressが動いている前提です。
    example.comを独自ドメインに読みかえてください。

    作業の途中でWordPressのサイトが見えなくなったり、ダッシュボードにログインできなくなったりすることがあります。sshでec2インスタンスにログインして、wp-config.phpが編集できる状態にしておくと良いと思います。

    Route 53の設定

    Route 53コンソールを開く。

    「Create Hosted Zone」
    Domain Name: example.com
    Comment: (適宜入力)
    Type: Public Hosted Zone(デフォルト)

    「Create」して表示されるNSレコードを、独自ドメイン(契約サービス)のDNSとして設定する。

    CloudFrontの設定

    CloudFrontコンソールを開く。

    「Create Distribution」
    Webで「Get Started」

    Alternate Domain Names(CNAMEs): example.com
    と入力して、
    「Request or Import a Certificate with ACM」をクリックすると、
    AWS Certificate Manager のページが開くので、
    「証明書のリクエスト」からドメイン名を追加します。

    ドメイン名: example.com
    と入力して「次へ」
    「DNSの検証」を選択して「確認」を押すと検証のページに遷移します。

    ドメインのDNS設定にCNAMEレコードを追加

    「Route 53 でのレコードの作成」をクリックするとCNAMEが追加されます。

    オリジンの設定 – 独自ドメイン

    Origin Settings
    Origin Domain Name: example.com
    Origin Protocol Policy: HTTPS Only

    オリジンの設定 – EC2

    Origin Settings
    Origin Domain Name: (EC2インスタンスのドメイン).compute.amazonaws.com
    Origin Protocol Policy: HTTP Only

    オリジンの設定 – S3

    Origin Settings
    Origin Domain Name: (バケット名).s3.amazonaws.com

    Behavior – デフォルト

    Path Pattern: Default(*)
    Origin: (EC2インスタンスのドメイン).compute.amazonaws.com
    Viewer Protocol Policy: Redirect HTTP to HTTPS
    Allowed Encryption Methods: GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE
    Cache Based on Selected Request Headers: All
    Forward Cookies: All
    Query String Forwarding and Caching: Forward all, cache based on all

    Behavior – /wp-admin/*

    Path Pattern: /wp-admin/*
    Origin: (EC2インスタンスのドメイン).compute.amazonaws.com
    Viewer Protocol Policy: Redirect HTTP to HTTPS
    Allowed Encryption Methods: GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE
    Cache Based on Selected Request Headers: All
    Forward Cookies: All
    Query String Forwarding and Caching: Forward all, cache based on all

    Behavior – /wp-login.php

    Path Pattern: /wp-login.php
    Origin: (EC2インスタンスのドメイン).compute.amazonaws.com
    Viewer Protocol Policy: Redirect HTTP to HTTPS
    Allowed Encryption Methods: GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE
    Cache Based on Selected Request Headers: All
    Forward Cookies: All
    Query String Forwarding and Caching: Forward all, cache based on all

    Behavior – S3

    Path Pattern: /wp-content/uploads/*
    Origin: S3バケットを選択

    SSL Insecure Content Fixer

    コンテンツのURLにHTTPが混在するとブラウザで警告が出て正しく表示されない場合。
    WordPressのプラグイン SSL Insecure Content Fixer で対処。

    非セキュアコンテンツの修正方法: シンプル
    HTTPS の検出方法: HTTP_CLOUDFRONT_FORWARDED_PROTO (Amazon CloudFront HTTPS キャッシュ済みコンテンツ)

    Offload S3

    WordPressでメディアをS3バケットで公開するためのプラグイン

    Copy Files to S3: ON
    Rewrite File URLs: ON
    CloudFront or Custom Domain: example.com
    Path: wp-content/uploads/
    Year/Month: ON
    Force HTTPS: ON

  • AtomのPHPCSでWarning – WordPress

    AtomエディタでWordPressのプラグインやテーマを編集する際に、
    PHPCSのエラーが表示されるようになったので環境を見直しました。

    macOS High Sierra 10.13.4
    Atom 1.25.0
    linter-phpcs 1.6.8

    こちらの記事に感謝。
    WordPressのコーディング規約をPHP CodeSnifferでチェックしてPhpStormでもチェックと自動整形する

    composer で phpcs をインストール

    $ composer global require "squizlabs/php_codesniffer=*"

    WordPress用のコーディング規約をインストール

    $ git clone git@github.com:WordPress-Coding-Standards/WordPress-Coding-Standards.git \
     ~/.composer/vendor/squizlabs/php_codesniffer/CodeSniffer/Standards/WordPress

    コーディング規約をWordPressに登録

    $ phpcs --config-set installed_paths ~/.composer/vendor/squizlabs/php_codesniffer/CodeSniffer/Standards/WordPress

    コーディング規約の確認

    phpcs -i

    Atomのlinter-phpcs設定(executable path)

    /Users/(username)/.composer/vendor/bin/phpcs
  • ローカル環境からのメール通知など – WordPress

    先日、macOSをHigh Sierraにアップデートしてそれに合わせてWordPressのテスト環境(VCCW)を作り直しました。
    ざっとですが、メモ書き。

    VirtualBox-5.1.30
    Download VirtualBox
    2017年10月19日時点で VirtualBox-5.2.0 がリリースされていますが、vagrant-2.0 は VirtualBox-5.2 には未対応なので、5.1系にしておきます。

    ちなみに VirtualBox-5.2 をインストールした状態で vagrant up とすると、下記のエラーメッセージが表示されて起動できません。

    The provider ‘virtualbox’ that was requested to back the machine ‘vccw.test’ is reporting that it isn’t usable on this system. Thereason is shown below:

    Vagrant has detected that you have a version of VirtualBox installed
    that is not supported by this version of Vagrant. Please install one of the supported versions listed below to use Vagrant:

    4.0, 4.1, 4.2, 4.3, 5.0, 5.1

    A Vagrant update may also be available that adds support for the version you specified. Please check www.vagrantup.com/downloads.html to download the latest version.


    $ vagrant --version
    Vagrant 2.0.0

    VCCWはこちら
    現時点で vccw-3.9.0.zip がダウンロードできます。
    zipファイルを展開して適当な場所に移動。

    vagrant up してブラウザで、
    http://vccw.test/
    を開いて WordPress が利用できることを確認します。

    welcome to the vccw
    welcome to the vccw

    次にテスト環境(PHPUnit)の確認。
    何らかのプラグインを開発する前提です。
    こちらの記事を参考にさせていただきました。m(__)m
    WP-CLI+PHPUnitを使ったWordPressプラグインのユニットテスト(2)


    $ vagrant ssh
    $ cd /var/www/
    $ wp scaffold plugin myplugin
    $ cd /var/www/html/wp-content/plugins/myplugin
    $ bash bin/install-wp-tests.sh wordpress_test root 'wordpress' localhost latest

    これで PHPUnit のテスト環境が整うので、

    $ phpunit
    ...
    OK (1 test, 1 assertion)

    となればOK。

    次に、ローカル環境でWordPressのユーザアカウントを登録する場合などの、
    メール通知が動くようにします。
    利用するプラグインは、
    Cimy Swift SMTP
    ロリポップレンタルサーバーのメールサーバーを利用する場合の設定です。

    Cimy Swift SMTP for Lolipop
    Cimy Swift SMTP for Lolipop

    SMTP Server: smtp.lolipop
    Port: 465(Use for SSL/GMAIL)
    メールアカウント、パスワードは適宜入力
    Use SSL or TLS?: SSL
    [Save Changes]ボタンをクリックして設定を保存。
    Test Connectionで自分のメールアドレスにメールが届くことを確認します。

  • WordBench愛媛 もくもく会 を開催しました。

    3月3日金曜日の夕方に WordBench愛媛 もくもく会 を開催しました。

    ブログで収益を上げる学生さんや、はるばる岡山からのデザイナーさんなど少人数ですが多彩な顔ぶれでした。
    きびだんごのお土産もありまして、みんなで美味しくいただきました。

    今回は、最初にみなさんの自己紹介の後、私が直前に作成した簡単な資料でローカル環境についてご紹介。

    その後は、WordPressに関係あることないこと、日常の関心事など、情報交換というよりはよもやま話でとても盛り上がりました。

    開催する前は、手を動かして何らかの成果を上げて、と形式にこだわって若干神経質になっていたのですが、開催してみると、あまりそういうことは気にせず、コミュニケーションを大切にすることでそれなりに充実したイベントになると感じました。要するに、参加者のみなさんのおかげですね。感謝。

    さて、今回(一応)用意したテーマのローカル環境について、もくもく会の当日、Local by Flywheel が良さそう、という話がありまして後日試してみました。
    ダウンロードしてインストールを実行するだけで Dockerベース の環境が簡単に構築できて、GUIで複数のサイトを作ることができます。
    私自身、普段はプラグイン開発やテーマのカスタマイズでVCCWを使っているのですが、コマンドラインが中心の操作になるので、デザイナーさんとのやりとりなど、この Local by Flywheel も活用してみたいと思います。

    追記(2017.03.15)
    参考:Local by Flywheelの紹介記事
    WordPressのローカル環境のためのGUIツール”Local by Flywheel”が便利

  • WordBench愛媛 秋のお茶会 を開催しました。

    WordBench愛媛 秋のお茶会 を開催しました。

    WordBench愛媛 – 秋のお茶会
    http://wbehime.connpass.com/event/41726/

    午前中ということもあってか、こじんまりと4名での開催となりました。
    当日の様子はこんな感じです。

    img_20161022_120818

    img_20161022_105009

    img_20161022_105031

    最近のローカル環境の充実ぶりなどを中心に、それぞれ手を動かしながらディスカッションしました。
    次回に向けて準備したいと思いますので、開催内容のご要望とか、プレゼンテーションのご希望などありましたら、
    http://wordbench.org/groups/ehime/
    こちらまでお寄せください。

  • OSunC 愛媛 2016 に参加しました。

    OSunC 愛媛 2016 に参加しました。

    10月8日に開催されたOSunC愛媛に、WordBench愛媛として参加しました。

    Open Source UN-Conference 愛媛2016
    http://connpass.com/event/40867/

    WordBench愛媛 at OSunC愛媛

    Open Source UN-Conference 愛媛2016 のツイートまとめ
    http://togetter.com/li/1034617