Auth0 試してみた。

 “Auth0”がなにか?というと「認証サービス」というもの。

 そもそも、一般に存在しているいろいろなサイトの中には認証処理が一般に公開された状態になっているものがある。Googleだったり開発系だとGithubだったり。
 そういうところにアカウントを持っている場合に、いちいち他のサイトで認証する時にサイトごとにユーザー名やパスワードを用意するのって億劫なわけです。
 なので、サイトによっては一般の認証システムを使って自サイトへのサインインを完了させる機能を用意していたりする。そういうサイトは、そのサイト用のユーザー名やパスワードを特別に作らなくても、Googleアカウントとかでサインインしてサイトのサービスを利用できるようになる。
 でもそういうサービスを提供するにも、認証システムを旨いこと実装してあげないといけないのでいろいろ大変です。

 単純に言えばAuth0はそういう認証処理を一元化して管理できる場(プラットフォーム)を用意しました~って感じのサービス。(このへん読むといろいろわかるかも⇒認証プラットフォーム Auth0 とは?

 WordPressのプラグインに“Auth0”って、そのまんまの名前のプラグインがあったので、利用してみた。

 基本的には、Auth0で自分のアカウント(テナントID)を作って、WordpressのプラグインにそのIDとあとアクセス用のTokenを作って渡してあげればいい感じ。
 Tokenは、Auth0のDashboardからAPI項目を選択。APIがなかったら作成(たぶん1つは作られてる?)して、その中のAPI Explorer項目を選択。そこにTokenが出てくる。(これも、なかったら作成。確かデフォルトでは作成されてない。)

 あと、Wordpress側のダッシュボード > 設定 > 一般 > メンバーシップ のチェックが入っていないと、初回サインイン時にユーザーが作成できない旨のエラーが出るので、はじめてAuth0でサインインする時は必ずチェックを入れておくこと。

カスタムフィールドを扱うには

 ”Custom Fields Suite”が便利。(前に”Advanced Custom Fields”を使ってたけど、ループは使えなかったと思う。)

 こことかここに、PHPで要素へのアクセス方法が書かれている。

場合により、オブジェクトを設定した変数名が“$cfs”から”CFS”に変更が必要な模様…
(自分は”$cfs”でないとエラーが出るが…どういうこと?)

 ループという概念があって、このページの解説のように一連の項目を複数連ねて書き込むことが可能。

ループの子階層に要素を設定するには、ループ追加後に一旦”公開ボタンを押す”必要がある。
投稿を標準の記事と分けたい場合

 自分で投稿タイプをコーディングするのは大変だと思うので、”Custom Post Type UI”や”Toolset Types”などを併用するのが得策。

いろいろ試してみると

 微妙に痒いところに手が届かない感じがしてきた。。

 ”Advanced Custom Fields”だと、タイトルなしでも登録できるが、これはタイトルを入力していない場合には”投稿した”ってステータスを出すわりに投稿リストになにも反映されない。(ID消費しているのでどこかに記録だけされているかもしれないけど、一覧にリストされない。)

 他にもちょっと困った部分があって、”Search Everything”を使っても、ループ内に入力した内容は検索対象にならない。
 …なので、ループ内を検索するには、独自に実装を追加するしか手がなさそう。

プラグイン “Advanced Custom Fields” で作った投稿が検索に掛からないのは何故?

 掲題の疑問で数時間ハマったので、メモ。

 結果としては、そもそも投稿のタイプ(post_type)が “post” じゃなかった…というオチだったことにようやく気づいて “wordpress not post type search” でググったら、答えが出てきた。。

>Exclude Custom Post Types from Search Query Results
https://wordpress.org/support/topic/exclude-custom-post-types-from-search-query-results

 この書き込みの最後に、 post 以外に含めたいタイプを入れればOKな関数が投稿されてた。

‘array’の中に、必要なタイプを列挙するだけ。

 それ以前に、カスタムフィールドの内容も検索したい場合には “Search Everything”を併用する必要がある。

やっていたのは…

 こういう系統のサイト作れるかな…的な話。

 合わせて使いたい “Custom Post Type UI” の使い方は、こっちを参照

絞り込み検索が欲しくなったら…

 ここを読むのがいいかもしれないので、メモしておく。

WordPressのマルチサイト運用の設定, データのお引越し方法

めも。

>WordPressのマルチサイトの設定方法|1つのWPで複数のブログを管理しよう(〜ver.4.0)

WordPressのマルチサイトの設定方法|1つのWPで複数のブログを管理しよう(〜ver.4.0)

>サイト移転時にWordPress記事をXML形式でエクスポート&インポートする手順
http://netaone.com/wp/wordpress-xml-import/#WordPressXML-2

OAuth1

WP REST APIの認証方式の1つ。知らないので調べてみた、めも。

>WordPress Plugin(OAuth1) docs/basics
https://github.com/WP-API/OAuth1/tree/master/docs/basics

>WP REST API: Setting Up and Using OAuth 1.0a Authentication
http://code.tutsplus.com/tutorials/wp-rest-api-setting-up-and-using-oauth-10a-authentication–cms-24797

>やる夫と Python で学ぶ Twitter の OAuth

>習うより慣れろ。WP API にリクエストをいっぱい投げる。& REST クライアント “Paw” が超便利。

習うより慣れろ。WP API にリクエストをいっぱい投げる。& REST クライアント “Paw” が超便利。

>OAuth step by step
http://www.lexev.org/en/2015/oauth-step-step/

>OAuth Python Tutorial
https://techrangers.cdl.ucf.edu/oauth-python-tutorial.php

>First step to Twitter OAuth and Streaming API using Python
http://blog.yjl.im/2010/04/first-step-to-twitter-oauth-streaming.html

 …しかし、WPCliやcomposerが定位置にインストールできないのが原因なのか、
 OAuth step by stepの3-leggedのコードでやってみるも、今のところシグネチャは取れてると思うんだけど最終的に401認証エラーがでる。
 何故だ…orz

 あと、OAuth step by stepのコードだと、認証とは関係ないけど73行目とかで

 「urllib2.urlopen(urllib2.Request(url, data=[]))」

 とかやってるけど、 data=[] が原因でリスト使えないっすよ。ってPythonがエラーを吐く。
 なのでとりあえず、下記みたいに書いておいた。。

 data=urlencode({})

 data指定がないとPOSTされないのがなぁ、、
 というか、単に空文字指定でもいいのかな?

結局…

 自分の使ってる契約だとWPCliやcomposerを定位置に設定できないので、想定している環境での動作確認が取れなくて、正しい動作すら判然としないままになってしまった。
 これは当分保留するしかなさそう、、、

REST APIでサイト情報も自由自在(に、なったらいいのに…)

 WordpressにもREST APIが開発されていて、既にバージョン2がβ版だったりする状況。

REST APIとは、なにか。という話は、置いておきたい…
基本的には、HTTPプロトコル(データのやり取りについての取り決め)で使う GET, HEAD, POST, PUT, DELETE.. といったコマンドベースのやりとりや、ステートレス性(やりとり1回毎に、手順は1から。繰り返しになっても、前の状態を持ち越さない。)という性質をもつWebAPIのこと。
WebAPIというのは、インターネット上でデータのやり取りを行うことを前提にしたアプリケーション開発用のインターフェース。

 …で、とりあえずインストールしてみたのですが、、、
 どうもマルチサイトサブディレクトリ運用しているコンテンツの場合、うまく動かない(もしくは、どこかに通常とは違う設定が必要っぽい…けどそれがなんなのか見当もつかず…)という結果に。。

 いろいろ設定をいじってみるも、返ってくるのは「rest_no_route」の一点張り…orz

 別のAPIでxmlrpcというのがあるのですが、こちらはRSSっぽくて最近の情報を大雑把に拾って返す感じのものでした。(投稿リストを取得しても、先頭1ページ分の情報しか返ってこなくて、そもそも基本全部欲しいという用途には向かない感じでした…)

で、ルートにWordpressをインストールしてみた。

 普通に動作することを確認。
 …マルチサイトサブディレクトリ運用って、そんなに特殊なんだろうか(T_T)

その後

 調べてみると、サブディレクトリに作るやり方は正確にはマルチサイトとは言わないらしい。
 ※そもそもそういう機能があるので…

 以前は、Wordpressのマルチサイト機能でうまく動かないようだったけど、今はそれも改善されたようなので、Wordpressで複数サイト運用する場合にはWordpressのマルチサイト機能を利用した方が良さげな感じですね〜(=_=;

子テーマ

めも。

子テーマ というのは、テーマのバージョンアップ時に毎回テーマ編集部分にパッチ当て作業をしなくても済むようにする機能と、それを利用した副次的なテーマファイルのこと。

とりあえずstyle.css, functions.php を作成してみたら、ほぼ前の状態を継承できた。。