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

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

前回はココナラヘルパーに画面遷移の機能を実装しました。

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

今回はこの機能を使いブログを編集する画面に遷移したいと思います。

ブログの種類選択

「ブログを投稿する」リンクをクリックしたあと、記事の種類選択画面が出現します。
こちらも画面遷移機能で処理してしまいましょう!

    /**
     * 投稿する
     * @param string $title タイトル
     * @param string $contents コンテンツ
     * @return bool 投稿成功・失敗
     */
    public function post(string $title, string $contents) : bool {
        $result = false;

        // ログイン
        if($this->login()) {
            // ブログ画面に遷移(ブログを投稿する→記事の種類選択で編集画面に遷移)
            if($this->moveAndWait('document.querySelector("a.c-subLink_item-blog").click()')
                && $this->moveAndWait('document.querySelector("button.button.is-primary").click()', waitTime:10000)) { // ★ここを追加
                $result = true;
            } else {
                $result = false;
            }
        } else {
            $result = false;
        }

        if($this->debug) {
            // screenshot(10秒待機)
            $this->page->screenshot()->saveToFile('/var/www/html/post.png', 10000);
        }
        return $result;
    }

すごく簡単ですね!
ショートサーキット演算子をしようしたので「ブログを投稿する」に失敗した場合は今回追加した実装は実行されません。
引数の「待ち時間」の設定はPHP8で実装されたNamed Argumentsを使用しています。

【PHP8.0】PHPに名前付き引数が実装される – Qiita

なんの値の設定なのかわかりやすくていいですよね🤗

確認

確認しておきましょう。

http://localhost:8099/index.php

あれ?なぜかエラー・・・

Uncaught HeadlessChromium\Exception\OperationTimedOut: Operation timed out (10sec) in /var/www/html/vendor/chrome-php/chrome/src/Utils.php:69

変ですね。画面遷移の機能はtry~catchでExceptionを拾っているので今回の例外も拾って何もなかったかのように進むはず・・・。
と思って調査していると以下のような記事がありました。

【PHP】try catchで全てのエラーを拾う方法 – IT技術総合Wiki | CWiki (itlibra.com)

Javaと同じようにExceptionではすべての例外を拾うことはできないようです。
ということでThrowableで例外を拾うように修正します。すると・・・。

来ました!

やれやれ😅

 

まとめ

ココナラヘルパーを使ってブログの編集画面まで行くことができました。
例外処理がなんだかJavaに似ていて安心しました😇

次回は記事を入力→投稿まで進めたらいいなと思っています。

今日はここまで!