PHP 初心者が WordPress の プラグイン 作成 ! part51 ( コードを整理 07 )

この記事では PHP 初心者 が WordPress プラグイン を 作成 します。 part51 では引き続き今までのコードを少し整理してみます。

前回はココナラヘルパを用いてココナラのブログ編集画面まで進めることができました。

PHP 初心者が WordPress の プラグイン 作成 ! part50 ( コードを整理 06 )

今回はタイトルと本文を入力する実装を少し進めてみようと思います。

単純実行機能

タイトルと本文を入力したいと思います。

この処理は画面遷移は伴わない単純な実行だけなのでココナラヘルパに新たに「実行」機能を追加したいと思います。
といってもすごいことは何一つなく、画面遷移機能のほぼ流用(いわゆるコピペ)です😏

    /**
     * 処理を実行をする
     * @param string $query セレクタ
     */
    private function execute(string $query) : void {
        
        // 実行
        $this->page->evaluate($query);
        
        if($this->debug) {
            // 年月日_時分秒(YYYYMMDD_hhmmss)
            $t = date('Ymd_His');
            // screenshot(10秒待機)
            $this->page->screenshot()->saveToFile("/var/www/html/execute_{$t}.png", 10000);
        }
    }

ただもらったクエリ(JavaScript)を実行するだけのシンプルなメソッドです。
これを投稿の機能に組み込んでいくわけです。

投稿機能に組み込む

問題はここからです。
タイトルは素直な文字列なのですが本文のほうは厄介なルールがありました。

  • bodyとbodyTextプロパティに代入する必要がある
  • bodyのプロパティは1行を<div data-v-22617325="" class="c-blogBody_text">タグで括る必要がある
  • bodyTextは1行を\nで区切る必要がある。

投稿機能で引き受ける本文は単純な文字列です。
渡された本文を解析してbodyとbodyTextプロパティ用の値を生成してあげなくてはいけません。

改行コード毎に配列にしなければなりません。
改行コードは世界的には大きく3つあります。

  • CRLF(Windows)
  • CR(Mac)
  • LF(Linux)

これらをいったん統一してから配列に変換します。

よい記事がありました。

[PHP] 文字列を改行コードで分割して配列にする | IT女子のお気に入りフォルダIT女子のお気に入りフォルダ (byeto.jp)

これをそのままいただいちゃいましょう!

 

// 本文を分解する
$fixedRetuenCodeContents = str_replace(array("\r\n", "\r", "\n"), "\n", $contents);
$contentArray = explode("\n", $fixedRetuenCodeContents);

と、意気揚々と実装をしていたのですがこんな記事がありました。

PHP – 特定の文字列を<div>で囲みたい|teratail

パターンマッチングして置換するという手法です。

こっちのほうが簡単そう・・・。
いろいろ考えていたら時間が過ぎてしまいました。

まとめ

ココナラヘルパに簡単な実行機能をついかしました。
本文の生成は厄介そうですがすでに2つの方法があります。
時間となったのでまた次回検討したいと思います。

今日はここまで!