パーソナライズされた WordPress コミュニケーション プラットフォームの設計、パート 4
このシリーズでは、WordPress バックエンドの特定の管理ページに表示されるカスタム メッセージをプログラムで定義できるシステムを実装する方法を学びました。
これまでこのシリーズをご覧になっている方ならご存知でしょう:
- 私たちはこのシリーズで使用されるプラグインの基礎を築き、さらにそれを開発しました。
- セットアップ メッセージのレンダリングに使用できるカスタム フックを定義して使用しました。
- 特定の設定ページの上部に表示できる成功、警告、エラー メッセージのサポートが追加されました。
前のチュートリアルで述べたように:
しかし、私のこれまでのチュートリアルを読んだことがある方なら、私が重複したコードを好まないことをご存知でしょう。また、1 つのクラスで多くのことを行うのは好きではありません。残念ながら、それがまさに私たちがやっていることなのです。
この問題は最後のチュートリアルで解決します。最終的には、いくつかの中間オブジェクト指向原則 (継承など) を使用する完全なリファクタリング ソリューションが完成します。また、プログラムで使用できる方法、または WordPress フック システムに登録できる方法もいくつか紹介します。
最終スタート
この時点で、ローカル開発環境で何が必要なのかを正確に知る必要があります。具体的には、次のものが必要です:
- PHP 5.6.25 および MySQL 5.6.28
- Apache または Nginx
- WordPress 4.6.1
- お好みの IDE またはエディタ
今後行われるすべての変更を段階的に実行できるため、ソース コードの最新バージョンもお勧めします。お持ちでない場合でも問題ありませんが、続行する前に前のチュートリアルを読むことをお勧めします。
前のチュートリアルで
覚えているかもしれません (または上記のコメントからわかるように)、前のチュートリアルでは、作業が多すぎるクラスが残されました。
これを理解する 1 つの方法は、クラスが何を行っているかを説明しようとすると、1 つの答えを与えることはできないということです。代わりに、成功メッセージ、警告メッセージ、エラー メッセージを処理し、すべてのメッセージを互いに独立して表示する責任があると言わなければなりません。
「カスタム メッセージを管理する」と言っても、そのクラスがどれほど冗長であるかは必ずしも説明できません。これがこのチュートリアルで解決したいことです。
最後のチュートリアルで
具体的には、次のことを検討します:
- 古い設定メッセンジャー クラスを削除します
- 新しい、より一般的な設定メッセージ クラスを追加します
- 通信用のセットアップメッセンジャークラスを追加
- WordPress に依存せずに使用できる方法を紹介します
- WordPress がメッセージをレンダリングする方法を簡素化する
作業は完了したので、上記のすべての実行を開始しましょう。
私たちの仕事を再構築する
作業をリファクタリングするとき、何をしたいのかを正確に知ることが役立ちます。私たちの場合、圧縮できる重複コードが多数あることに気付きました。
さらに、3 つの異なるタイプのメッセージを、表示方法を除いてまったく同じ方法で管理します。この場合、HTML クラスの属性に問題があります。
したがって、特定の タイプ に焦点を当てるようにこのコードを一般化することができ、その を識別する方法を一般化することで、成功メッセージを追加したりエラー メッセージを取得したりするメソッドの多くを統合できます。 「メソッド」>「」と入力します。
最終的にはこれをやります。しかし、その前に、いくつかのハウスキーピングを行う必要があります。
###1。古い設定を削除します。前のチュートリアルでは、
Settings_Messenger というクラスを使用してきました。これまでのところ、その目的は果たしていますが、チュートリアルの残りの部分でこのクラスをリファクタリングします。
このタイプのリファクタリングになると、クラスを削除して最初からやり直したくなりがちです。それが適切な場合もありますが、これはそうではありません。代わりに、コースを受講して、すでにあるものをリファクタリングします。
これはすべて説明のためです。ファイルを削除せずに、新しいファイルを使用し始めてください。代わりに、このチュートリアルで行ったことを記録してください。
###2。新しい設定メッセージ クラス最初に、
Settings_Message
クラスを紹介します。これは、書き込みたい 任意の タイプのセットアップ メッセージを表します。つまり、成功メッセージ、エラー メッセージ、警告メッセージを管理します。
これを行うには、クラスを定義し、プロパティを導入し、コンストラクターでそれをインスタンス化します。このコードをチェックしてください。以下で詳しく説明します:
リーリー
$messages
を作成したことに注意してください。このクラスをインスタンス化するときに、多次元配列を作成します。success、
error、または
warning で識別される各インデックスは、対応するメッセージを保存する独自の配列を参照します。
接下来,我们需要能够添加消息、获取消息以及获取所有消息。我将立即更详细地讨论其中的每一个。
添加消息
首先,让我们看看如何添加消息:
<?php public function add_message( $type, $message ) { $message = sanitize_text_field( $message ); if ( in_array( $message, $this->messages[ $type ] ) ) { return; } array_push( $this->messages[ $type ], $message ); }
该消息首先获取传入的字符串并清理数据。然后它检查它是否已存在于成功消息中。如果是这样,它就会返回。毕竟,我们不想要重复的消息。
否则,它会将消息添加到集合中。
获取消息
检索消息有两种形式:
- 按类型呈现单条消息
- 在管理页面的显示中呈现消息(完成 HTML 清理等)
请记住,有时我们可能只想显示警告消息。其他时候,我们可能想要显示所有消息。由于有两种方法可以做到这一点,我们可以利用其中一种方法,然后在其他函数中利用它。
听起来很混乱?请耐心等待,我会解释这一切。我们要关注的第一部分是如何按类型呈现消息(例如成功、错误或警告)。这是执行此操作的代码(看起来应该很熟悉):
<?php public function get_messages( $type ) { if ( empty( $this->messages[ $type ] ) ) { return; } $html = "<div class='notice notice-$type is-dismissible'>"; $html .= '<ul>'; foreach ( $this->messages[ $type ] as $message ) { $html .= "<li>$message</li>"; } $html .= '</ul>'; $html .= '</div><!-- .notice-$type -->'; $allowed_html = array( 'div' => array( 'class' => array(), ), 'ul' => array(), 'li' => array(), ); echo wp_kses( $html, $allowed_html ); }
请注意,我们使用了上一教程中大部分相同的代码;但是,我们对其进行了概括,以便它查看传入的 $type
并将其动态应用到标记。
这使我们能够使用单个函数来呈现消息。但这还不是全部。有时我们想要获取所有消息怎么办?这可能是在页面上呈现或以编程方式获取它们以进行其他处理。
为此,我们可以引入另一个函数:
<?php public function get_all_messages() { foreach ( $this->messages as $type => $message ) { $this->get_messages( $type ); } }
此消息应该很容易理解。它只是循环遍历我们集合中的所有消息,并调用我们上面概述的 get_messages
函数。
它仍然将它们全部渲染在一起(我们很快就会在自定义钩子的实现中看到它们的一种使用)。如果您想将它们用于其他目的,您可以将结果附加到字符串中并将其返回给调用者,或者执行一些其他编程功能。
这只是一个实现。
3。设置信使
这适用于实际的 Settings_Message
类。但我们如何与它沟通呢?当然,我们可以直接与它对话,但是如果有一个中间类,我们可以对返回给我们的内容进行一些控制,而无需向 Settings_Message
类添加更多责任,对吗?
输入Settings_Messenger
。这个类负责允许我们读取和写入设置消息。我认为您可以根据其职责将其分为两个类,因为它既可以读取也可以写入,但是就像发送和接收的信使一样,这就是此类的目的。
该类的初始设置很简单。
- 构造函数创建
Settings_Message
类的实例,我们可以使用它来发送和接收消息。 - 它将一个方法与我们在上一个教程中定义的自定义
tutsplus_settings_messages
挂钩关联起来。
看一下前几个方法:
<?php class Settings_Messenger { private $message; public function __construct() { $this->message = new Settings_Message(); } public function init() { add_action( 'tutsplus_settings_messages', array( $this, 'get_all_messages' ) ); } }
请记住,在本教程的前面,我们在视图中定义了钩子,可以在 settings.php
中找到。为了完整起见,将其列在这里:
<div class="wrap"> <h1><?php echo esc_html( get_admin_page_title() ); ?></h1> <?php do_action( 'tutsplus_settings_messages' ); ?> <p class="description"> We aren't actually going to display options on this page. Instead, we're going to use this page to demonstration how to hook into our custom messenger. </p><!-- .description --> </div><!-- .wrap -->
但是请注意,这个特定的钩子利用了 get_all_messages
方法,我们稍后会回顾一下。不一定非要用这个方法。相反,它可以用于简单地呈现成功消息或您想要使用的任何其他方法。
添加消息
创建添加消息的函数很简单,因为这些函数需要类型和消息本身。请记住,Settings_Message
负责清理信息,以便我们可以简单地传入传入消息。
请参阅下面我们添加成功、警告和错误消息的位置:
<?php public function add_success_message( $message ) { $this->add_message( 'success', $message ); } public function add_warning_message( $message ) { $this->add_message( 'warning', $message ); } public function add_error_message( $message ) { $this->add_message( 'error', $message ); }
很简单,不是吗?
获取消息
检索消息没有太大不同,只是我们只需要提供要检索的消息类型:
<?php public function get_success_messages() { echo $this->get_messages( 'success' ); } public function get_warning_messages() { echo $this->get_messages( 'warning' ); } public function get_error_messages() { echo $this->get_messages( 'error' ); }
完成了,对吧?
但是你明白了吗?
请注意,上面的消息均引用了我们尚未实际介绍的另外两种方法。这些私人消息可以帮助我们简化上述通话。
查看以下私有方法,它们负责直接从信使对象上维护的 Settings_Message
实例添加和检索消息:
<?php private function add_message( $type, $message ) { $this->message->add_message( $type, $message ); } private function get_messages( $type ) { return $this->message->get_messages( $type ); }
完成了新的 Settings_Messenger
类。所有这些都简单得多,不是吗?
启动插件
不过,它确实提出了一个问题:既然我们已经完成了所有这些更改,我们如何启动插件?
查看下面的整个函数:
<?php add_action( 'plugins_loaded', 'tutsplus_custom_messaging_start' ); /** * Starts the plugin. * * @since 1.0.0 */ function tutsplus_custom_messaging_start() { $plugin = new Submenu( new Submenu_Page() ); $plugin->init(); $messenger = new Settings_Messenger(); $messenger->init(); $messenger->add_success_message( 'Nice shot kid, that was one in a million!' ); $messenger->add_warning_message( 'Do not go gently into that good night.' ); $messenger->add_error_message( 'Danger Will Robinson.' ); }
就是这样。
需要注意的几点:
- #Settings_Messenger
で init を呼び出さない場合は、設定ページにメッセージが表示されることを心配する必要はありません。
このコードは、メッセージを - Settings_Messenger
に追加しますが、init メソッドを使用しているため、実際にはメッセージを取得しません。
李> メッセージを取得したい場合は、上で概説した方法を使用できます。
###結論は###
すぐに使える完全なソース コードを含むこのチュートリアルの完全な動作バージョンを入手するには、右側のサイドバーでこの記事に添付されているソース コードをダウンロードしてください。この資料を学習することで、WordPress 開発のための新しいスキルと方法を習得できることを願っています。シリーズを通じて多くのことを取り上げてきました:
カスタムメニュー
- 管理ページ紹介
- さまざまなメッセージの種類
- カスタムフックを定義して利用する
- そしてオブジェクト指向コードをリファクタリングする
- いつものように、コメントでの質問にも喜んでお答えします。また、私のブログをチェックしたり、Twitter で私をフォローしたりすることもできます。私は通常、WordPress でのソフトウェア開発とそれとは関係のないトピックについて話します。さらに WordPress 開発に興味がある場合は、Envato Tuts で提供している他の WordPress 資料だけでなく、私の以前のシリーズやチュートリアルも忘れずにチェックしてください。 ###リソース###
WordPress を使用してカスタム管理ページを作成する
WordPress 設定 API
- WordPress を始める方法
- 操作の追加
- 操作の実行
- wp_kses
- テキストフィールドをきれいにする
以上がパーソナライズされた WordPress コミュニケーション プラットフォームの設計、パート 4の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











多くの場合、キーワードと追跡パラメーターで散らかった長いURLは、訪問者を阻止できます。 URL短縮スクリプトはソリューションを提供し、ソーシャルメディアやその他のプラットフォームに最適な簡潔なリンクを作成します。 これらのスクリプトは、個々のWebサイトにとって価値があります

Laravelは、直感的なフラッシュメソッドを使用して、一時的なセッションデータの処理を簡素化します。これは、アプリケーション内に簡単なメッセージ、アラート、または通知を表示するのに最適です。 データは、デフォルトで次の要求のためにのみ持続します。 $リクエスト -

これは、LaravelバックエンドとのReactアプリケーションの構築に関するシリーズの2番目と最終部分です。シリーズの最初の部分では、基本的な製品上場アプリケーションのためにLaravelを使用してRESTFUL APIを作成しました。このチュートリアルでは、開発者になります

Laravelは簡潔なHTTP応答シミュレーション構文を提供し、HTTP相互作用テストを簡素化します。このアプローチは、テストシミュレーションをより直感的にしながら、コード冗長性を大幅に削減します。 基本的な実装は、さまざまな応答タイプのショートカットを提供します。 Illuminate \ support \ facades \ httpを使用します。 http :: fake([[ 'google.com' => 'hello world'、 'github.com' => ['foo' => 'bar']、 'forge.laravel.com' =>

PHPクライアントURL(CURL)拡張機能は、開発者にとって強力なツールであり、リモートサーバーやREST APIとのシームレスな対話を可能にします。尊敬されるマルチプロトコルファイル転送ライブラリであるLibcurlを活用することにより、PHP Curlは効率的なexecuを促進します

顧客の最も差し迫った問題にリアルタイムでインスタントソリューションを提供したいですか? ライブチャットを使用すると、顧客とのリアルタイムな会話を行い、すぐに問題を解決できます。それはあなたがあなたのカスタムにより速いサービスを提供することを可能にします

2025 PHP Landscape Surveyは、現在のPHP開発動向を調査しています。 開発者や企業に洞察を提供することを目的とした、フレームワークの使用、展開方法、および課題を調査します。 この調査では、現代のPHP Versioの成長が予想されています

この記事では、Laravel Webフレームワークの通知システムを検討します。 Laravelの通知システムを使用すると、さまざまなチャネルでユーザーに通知を送信できます。今日は、通知ovを送信する方法について説明します
