PHP 初心者が WordPress の プラグイン 作成 ! part29 ( ヘッドレスブラウザでココナラのブログを公開設定)

この記事では PHP 初心者 が WordPress プラグイン を 作成 します。 part29 ではヘッドレスブラウザでココナラのブログを公開設定をしたいと思います。

前回までブログの記事を書くことに成功しました。

PHP 初心者が WordPress の プラグイン 作成 ! part28 ( ヘッドレスブラウザでココナラのブログを書く! その2 成功!)

気が付いてみればこのシリーズで1か月くらい投稿してますね(笑
SNSでいいねしてくれている方、フォローしてくれている方ありがとうございます。
温かい目で見届けてくださいませ。

公開するまえの確認

自動保存

ココナラのブログでは入力の際、細かく自動保存が行われています。

この時、「公開設定」ボタンはグレーアウト。つまり無効状態となっているのです。
この状態遷移が起きるきっかけというのは少し観察した感じでは

  • タイトルもしくは本文の部品に入力があり
  • 前回の入力と差異がある
  • フォーカスがタイトルおよび本文の部品以外にある

というときに発動しているように見えます。

今回はフォーカスを充てることなくPHPから入力(代入)なので気にしなくてもいいのかな?
億劫なことはスルーしておきます😏

公開設定ボタン

ブログを投稿するにはまず「公開設定」ボタンをクリックします。

要素を見てみましょう。
いつものごとく特徴的なものが・・・と思っているのですが。
(私が古いのか、こういうのってid属性付与するもんではないのでしょうかね。)

気を取り直して、実装はこんな感じにしました。
このボタンクリックでは「画面遷移」ではなく、モーダルウィンドウ表示ようなので特に待つことはしません。
ただこのモーダルが表示されるまでに時間がかかっているような気がしてて・・・モーダルが表示される前に処理が進んでしまうとどうなるんだろうとか考えています🤔

// 公開する
$evaluation = $page->evaluate(
    '(() => {
        document.querySelector("button.button.blogPost_triggerPublish").click();
    })()');

// screenshot(10秒待機)
$page->screenshot()->saveToFile('/var/www/html/bar06.png', 10000);

投稿する

次の画面(モーダル)では2つの必須項目を選択しなければいけません。
「カテゴリを選択」はドロップダウンリスト、ハッシュタグはテキストボックスのようです。

カテゴリを選択

要素を見てみましょう。
※試しに「コラム」を選択してしまい、少しDOMが変わってしまいました。

ここでは「IT・テクノロジー」を選びたいですね。

以下のような実装にしてみました。
なんか魔法の言葉みたいになっていますね。

// 公開する
$val = 9; 
$evaluation = $page->evaluate(
    '(() => {
        document.querySelector("button.button.blogPost_triggerPublish").click();
        document.querySelector("div.c-blogPublishing_parentCategory select[value=\"' + $val + '\"]).selected = true;
    })()');

ハッシュタグ

この項目はテキストボックスなので簡単そうです。
要素を確認しましょう。

ちょっとdiv要素多くないですか(笑

以下のように実装しました。

// 公開する
$val = 9; 
$evaluation = $page->evaluate(
    '(() => {
        document.querySelector("button.button.blogPost_triggerPublish").click();
        document.querySelector("div.c-blogPublishing_parentCategory select[value=\"' + $val + '\"]).selected = true;
        document.querySelector("div.taginput-container input").value = "WordPress 連携";
    })()');

確認

http://localhost:8099/index.php にアクセスしてみます。
ダメでした!!!!

Uncaught TypeError: Unsupported operand types: string + int in /var/www/html/index.php:105

なにやらstringとintを結合するな!みたいなエラーですね。
ちょっとかっこつけてカテゴリの部分を変数にしたのがダメでしたね😫

まとめ

ヘッドレスブラウザからココナラのブログの公開設定を行いました。
結構時間かかりますね。一気に公開まで行けたらよかったのですが残念です。\

またしても失敗。しかし今回の失敗は大したことなさそうです。
次回がんばります。

今日はここまで!