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

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

前回はココナラヘルパにココナラブログの編集機能を実装したところで終わっていました。

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

呼び出し側の実装

ココナラヘルパの呼び出し側であるindex.phpの実装は以下のようになります。
本文の文字列にはあえて改行を入力しています。
PHPではヒアドキュメントが使用できるようですね。

<?php
require_once 'class.coconara-helper.php';

// クラスをまとめてインポート(PHP7.0.0から)
use com\ik_genety\plugin\coconara\{Coconara_Helper};

$coconara = new Coconara_Helper(true);

$title = "ヘッドレスブラウザ順調に(?)実装中!";
$contents = <<<_EOS
WordPressからココナラブログへの書き込み計画・・・
なんとか進めています!
_EOS;

if($coconara->post("{$title}", "{$contents}",true)) {
    echo '投稿成功!';
} else {
    echo '投稿失敗!';
}

確認

さてどうなるか・・・
http://localhost:8099/index.php にアクセスしてみますね。

・・・ダメでした😐

Uncaught TypeError: Unsupported operand types: string + string in /var/www/html/class.coconara-helper.php:192

どうやらこの行らしいです。

$contentForBody += "<div data-v-22617325=\"\" class=\"c-blogBody_text\">".$item."</div>";

文字列結合の実装ミス

またしてもほかの言語の癖がでてしまったようです。
+=ではなく.=という演算子を使用するようです。

PHP: 文字列演算子 – Manual

しかもダブルクォーテーションで括っているので変数は自動展開されます。
なので$itemの前後で文字列結合する必要ありませんでした(´・ω・`)

下記のように類似問題も修正して再度確認!

foreach ($contentArray as $item) {
    // body用の値
    $contentForBody .= "<div data-v-22617325=\"\" class=\"c-blogBody_text\">{$item}</div>";

    // bodyText用の値
    $contentForBodyText .= "{$item}\n";
}

・・・今度は別の部分で問題発生です。

Uncaught Error: Call to undefined function com\ik_genety\plugin\coconara\execute() in /var/www/html/class.coconara-helper.php:209

記述漏れ

「そんな関数無い」・・・これは以前もひっかかったような気がしますね。
そうです。$this->を書き忘れているのです。
インスタンスメソッドでは必ず記述しなければならないのでしょうか。PHPはなかなか手ごわいですね。

ということで修正します。

$this->execute($titleAndContentsQuery);

今度こそ

ではもう一度!
今度は処理は正常に進んだようです。
以下のように出力されましたが・・・。

タイトルが入力されていません・・・。

失敗のようです!

まとめ

ココナラヘルパのブログ編集機能の動作確認を行いました。

またしてもタイトルと本文の部分でひっかかってます(笑

次回はまた調査から始めたいと思います。

今日はここまで!