WordPressのプラグインで認証付きダウンローダー

S3に入れて置いたデータをwordpressのプラグインで認証付きのダウンローダを作れないかとの検討

プラグインは便利なので、Wordpressにログインした人のみがダウンロードできるようにしたい

こんな感じでできました

環境

    • s3にファイルを格納しておく
      wordpressはec2
      プラグインはショートコードでWordpressの固定ページなどに埋め込む
  • 仕様

    • img: S3のファイルパス
    • token: wordpressのセッションID
    • userid: wordpressのログインID(ログイン名ではなくWordpress内部でのログイン番号)

    データ

    以下に格納しておく
    s3://example/dir/file.png

    ショートコード

    固定ページをhttp://example.com/downloaderで作成し、以下を埋め込む

    プラグイン

    sample_downloaderディレクトリ以下にmain.phpで作成

    wordpressのエラー

    2,3日前に,以前作成したWordpressのサイトが,
    エラーで入れなくなったと連絡がありました。

    さくらインターネットで運用しているのですが,サポートに連絡しても
    埒が開かないので,こちらにヘルプ依頼が。

    確かに,Wordpressのログインができないようになっています。
    仕方がないので,SSHログインしてみたところ, dead.letter  が。

    こんなエラーが出てました。どうやらプラグインの自動アップデートでやられたようです。
    ContactForm7なのでたくさん使われているはずなのに,それほど大きな問題になっていないのはなぜ?

    調べたところどうやら,これが原因。

    さくっと,welcome-panel.phpを修正し

    動きました。

    どうやら,このサイトはphp5.6で運用していたのが原因かもしれません。
    このあとPHP7.4にアップデートしておきました。

    Day Of Yearカレンダープラグイン

    WordPressのプラグインでDayOfYearを表示するものを作成してみました

    プラグイン作成準備

    最初にディレクトリを作成します。今回は自分用に作成するので特に名前も気にしていないのですが、公開する場合には名前のかぶらないものにすることをお勧めします。

    このディレクトリにplugin.phpファイルを作成しヘッダを作成します。
    この辺りはお決まりですので、このあたりのサイトに書かれている通りにします

    こんな感じで十分でしょうか?

    ショートコード対応

    今回はWordpressのプラグインとしてショートコードをページに記入レバ表示できるような仕様にします。
    また、ページには1年間分のカレンダーを表示し、年をテキストボックスでフォーム入力し、Submitすることにより切り替えます。
    この際に、FormからはGetパラメタで送信し、プラグイン内でGetパラメタを取得して年を切り替えます。

    カレンダー作成

    最初から作ってもいいのですが、こちらを参考にさせていただきました。

    ソースコード

    で、完成したコードがこちら

    リリース

    できたコードをディレクトリごとZIPファイルにし、Wordpressのプラグインに追加します。
    また、ページにはこんな感じで書けば無事カレンダーが表示されます

    デモ

    作成したデモサイトはこちらになります