領(lǐng)域:WordPress開(kāi)発への現(xiàn)代的なアプローチ
WordPressのもつれたコードベースに対する私の軽daはよく知られています。あなたが技術(shù)的に熟練していない限り、私はその使用に反対することをお?jiǎng)幛幛筏蓼?。しかし、私の批判は改善への欲求に由?lái)しています。これは、優(yōu)れた選択肢が現(xiàn)れ、より論理的で効率的な開(kāi)発プロセスを提供することを望んでいます。 WordPressを合理化しようとする試みは、私の見(jiàn)解では、肯定的なステップです。
最近、「WordPress開(kāi)発者のためのフレームワーク」として請(qǐng)求されたThemosisというプロジェクトが浮上しました。この記事では、テンミーとその使用法を調(diào)査し、その例プロジェクト、つまり書(shū)店アプリケーションを調(diào)べます。 キーハイライト:themosisは、WordPressの開(kāi)発者のフレームワークとして設(shè)計(jì)された新しいプロジェクトであり、WordPressの混oticとしたプラグインアーキテクチャに開(kāi)発を簡(jiǎn)素化し、構(gòu)造を課すことを目指しています。
- 従來(lái)のフレームワークとは異なり、脅威はWordPressと統(tǒng)合して開(kāi)発を強(qiáng)化するAPIとして機(jī)能します。開(kāi)発者は、最新のPHP機(jī)能(名前空間、クラス、匿名関數(shù))と作曲家を使用してWordPressコンポーネントを構(gòu)築できます。
- 領(lǐng)域のインストールは、作曲家とWordPressコマンドラインツールに依存しています。 Composerは、最新のWordPressバージョンを自動(dòng)的に組み込んだThemosisプロジェクトを作成します。 標(biāo)準(zhǔn)のWordPressインストールスクリプトがセットアップを完了します。
- テンミー癥はまだ初期段階にあります(バージョン1.0保留中)。その若さにもかかわらず、WordPressのコアの制約內(nèi)であっても、PHPエコシステム內(nèi)でより良い設(shè)計(jì)慣行を促進(jìn)することが有望です。
- テンミー癥の理解
「フレームワーク」という用語(yǔ)は、PHP開(kāi)発者にとって誤解を招く可能性があります。 WordPressには、すでに多數(shù)の不要なコンポーネントが含まれています。フレームワークは通常、ミニマリストの原則と分離されたコンポーネントを順守し、複雑なアプリケーションを構(gòu)築します。
領(lǐng)域は、伝統(tǒng)的な意味での枠組みではありません。 WordPressと統(tǒng)合して開(kāi)発を簡(jiǎn)素化するが、必ずしもそのサイズを縮小するとは限らないAPIです。テーマ癥は、名前空間、クラス、匿名関數(shù)、作曲家のサポートなど、最新のPHPを使用してWordPressコンポーネントを作成するためのAPIを提供します。本質(zhì)的に、テンミー癥は、他のプラグインを構(gòu)築するために使用されるMVC駆動(dòng)のLaravelにインスパイアされたWordPressプラグインです。 LaravelとPhalconに似た獨(dú)自のルーター(Laravelスタイルのルート定義)とテンプレートエンジン(スカウト)が含まれており、WordPressサポートが追加されています。 たとえば、テンプレートループ:
データ取得にWordPress APIを使用し、
クラスはWordPressコンテンツループ用に特別に設(shè)計(jì)されています。 インストール領(lǐng)域のインストールには、作曲家とWordPressコマンドラインツールが含まれます。 Composerとのテーマ癥プロジェクトの作成には、最新のWordPressバージョンが自動(dòng)的に含まれています。標(biāo)準(zhǔn)のWordPressインストールスクリプトがセットアップを完成させます。 公式のインストール手順を參照するか、最初にプロジェクトの例を試してください(以下で詳しく説明してください)。
の例プロジェクト:Bookstoreアプリ
themosisは、書(shū)店アプリケーションの例を提供します。
Bookstoreアプリのテスト
それをテストするには、Homesteadが改善されています。新しいサイトを登録してください:
@loop(array('post_type' => 'post', 'posts_per_page' => -1)) <h1>{{ Loop::title() }}</h1> <div> {{ Loop::content() }} </div> @endloopホストのファイルに
を追加することを忘れないでください(Homesteadによると、指示が改善されました)。
bookstore.local
リポジトリ(/etc/hosts
)をクローンし、
git clone http://ipnx.cn/link/7101e4daaff4511510bbd4e6a0862fb7 themosis_example
http://bookstore.local:8000
セットアップは非常に迅速かつ簡(jiǎn)単でした。
パフォーマンスは驚くほど速かった。
- コード試験
- 書(shū)店のコードはgithubに存在します:
。 Themosisはプラグインであるため、Bookstoreのコードはプラグインディレクトリ內(nèi)にあります。
3つの主要なサブフォルダーが存在します:(脅威駆動(dòng)のWordPressロジック)、(テンシスソースコード - 他のフレームワークを參照)、および
(作曲家の依存関係)。コードには最新のプラクティス(名前空間、クラス、包括的なドキュメント)が組み込まれていますが、マイナーな時(shí)代遅れの要素は殘っています(例:、PHPタグを閉じる)。
app
src
vendor
<?php defined('DS') or die('No direct script access.');
MVC構(gòu)造は明確に定義されていますが、2つの親フォルダーにわたる斷片化を改善できます。 routes
フォルダー(Laravelと同様)は、同等の構(gòu)文を使用します。コントローラーはビューから分離されており、モデルはコントローラーによって使用され、データをビューに渡します。 home.controller.php
:
@loop(array('post_type' => 'post', 'posts_per_page' => -1)) <h1>{{ Loop::title() }}</h1> <div> {{ Loop::content() }} </div> @endloop
ビューは、トラバーサルにドット表記を使用します(例:pages.home
マップへのマップ)。app/views/pages/home.scout.php
)。
パラメーターを使用した
ルーティング
ルーティングは簡(jiǎn)単です。 たとえば、検索ページでは、WordPressの検索機(jī)能を直接使用します。このアプローチは、WordPressの本質(zhì)的に欠陥のある検索機(jī)能を抽象化し、より簡(jiǎn)単な交換を促進(jìn)します。
- map: bookstore.local to: /home/vagrant/Code/themosis_example
カスタムページの作成
コントローラーとビューを使用してカスタムページを作成しましょう。
ルートを追加します:
-
routes.php
create
return View::make('pages.home')->with(array( 'promo' => Books::getPromoBook($this->page), 'books' => Books::getPopularBooks($this->bookId), 'news' => News::get(), 'newspage' => get_page_by_path('news') ));
-
pages/test.scout.php
コントローラーを追加( - これにより、ほとんどのフレームワークでは
controllers/Test_Controller.php
の「Hello World」がレンダリングされます。ただし、ThemosisはWordPressに依存しているため、システムにページを追加する必要があります。
// Search page Route::is('search', function(){ return View::make('search', array('search' => $_GET['s'])); });
Route::only('page', 'test', 'test@index');
「Hello World」メッセージは、リロード後にレンダリングします
/test
ページのコンテンツを含めるには、グローバル
およびビュー:
ページを正しくレンダリングします。$post
@include('header') Hello World @include('footer')やや複雑ですが、WordPressコンテンツをレンダリングするための強(qiáng)力なラッパーは構(gòu)造と明確さを提供し、WordPressの剛性を改善します。 結(jié)論
<?php class Test_Controller{ public function index(){ return View::make('pages.test'); } }
themosisは、WordPressプラグインの開(kāi)発にLaravelのような體験を提供します。 WordPressのプラグインアーキテクチャに非常に必要な構(gòu)造とカプセル化を?qū)毪筏蓼埂?
まだ初期段階(バージョン0.8)ですが、脅威は有望なプロジェクトです。 優(yōu)れた設(shè)計(jì)慣行の採(cǎi)用はPHPコミュニティにとって重要であり、WordPressのコアの制限の範(fàn)囲內(nèi)であっても、Themosisは貴重な貢獻(xiàn)を提供します。
以上がまず、WordPress開(kāi)発者のフレームワークであるThemosisを見(jiàn)てくださいの詳細(xì)內(nèi)容です。詳細(xì)については、PHP 中國(guó)語(yǔ) Web サイトの他の関連記事を參照してください。

ホットAIツール

Undress AI Tool
脫衣畫(huà)像を無(wú)料で

Undresser.AI Undress
リアルなヌード寫(xiě)真を作成する AI 搭載アプリ

AI Clothes Remover
寫(xiě)真から衣服を削除するオンライン AI ツール。

Clothoff.io
AI衣類(lèi)リムーバー

Video Face Swap
完全無(wú)料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡(jiǎn)単に交換できます。

人気の記事

ホットツール

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

SublimeText3 中國(guó)語(yǔ)版
中國(guó)語(yǔ)版、とても使いやすい

ゼンドスタジオ 13.0.1
強(qiáng)力な PHP 統(tǒng)合開(kāi)発環(huán)境

ドリームウィーバー CS6
ビジュアル Web 開(kāi)発ツール

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

WordPressがサーバーCPU使用の急増を引き起こす主な理由には、プラグインの問(wèn)題、非効率的なデータベースクエリ、テーマコードの品質(zhì)の低さ、またはトラフィックの急増が含まれます。 1.最初に、トップ、HTOP、またはコントロールパネルツールを介したWordPressによって引き起こされる高い負(fù)荷であるかどうかを確認(rèn)します。 2.トラブルシューティングモードを入力して、プラグインを徐々に有効にしてパフォーマンスのボトルネックをトラブルシューティングし、QueryMonitorを使用してプラグインの実行を分析し、非効率的なプラグインを削除または交換します。 3.キャッシュプラグインをインストールし、冗長(zhǎng)データをクリーンアップし、スロークエリログを分析してデータベースを最適化します。 4.トピックには、コンテンツの過(guò)負(fù)荷、複雑なクエリ、キャッシングメカニズムの欠如などの問(wèn)題があるかどうかを確認(rèn)します。標(biāo)準(zhǔn)のトピックテストを使用して、コードロジックを比較および最適化することをお?jiǎng)幛幛筏蓼?。上記の手順に従って、?chǎng)所を確認(rèn)して解決し、問(wèn)題を1つずつ解決します。

JavaScriptファイルをマイニングすると、ブランク、コメント、役に立たないコードを削除することにより、WordPress Webサイトの読み込み速度を向上させることができます。 1。W3TOTALCACHEなどの圧縮をサポートするキャッシュプラグインを使用し、「MINIFY」オプションで圧縮モードを有効にし、選択します。 2。FastVelocityMinifyなどの専用圧縮プラグインを使用して、より細(xì)かい制御を提供します。 3. JSファイルを手動(dòng)で圧縮し、FTPを介してアップロードします。これは、開(kāi)発ツールに精通しているユーザーに適しています。一部のテーマまたはプラグインスクリプトは圧縮関數(shù)と競(jìng)合する可能性があり、アクティベーション後にWebサイト機(jī)能を徹底的にテストする必要があることに注意してください。

プラグインに依存しないWordPressサイトを最適化する方法は次のとおりです。1。積み重なったテーマを避けるために、AstraやGeneratePressなどの軽量テーマを使用します。 2. CSSおよびJSファイルを手動(dòng)で圧縮およびマージして、HTTP要求を削減します。 3.アップロードする前に畫(huà)像を最適化し、WebP形式を使用し、ファイルサイズを制御します。 4. configure.htaccessブラウザキャッシュを有効にし、CDNに接続して靜的リソースの負(fù)荷速度を向上させます。 5.記事の改訂を制限し、定期的にデータベース冗長(zhǎng)データをクリーンにします。

Transientapiは、自動(dòng)有効期限データを一時(shí)的に保存するためのWordPressの組み込みツールです。そのコア関數(shù)は、set_transient、get_transient、delete_transientです。 OptionsAPIと比較して、Transimentsは、Cache API要求の結(jié)果や複雑なコンピューティングデータなどのシナリオに適した、生存時(shí)間(TTL)の設(shè)定をサポートしています。それを使用する場(chǎng)合、キーネーミングと名前空間の獨(dú)自性、キャッシュ「怠zyな削除」メカニズム、およびオブジェクトキャッシュ環(huán)境では続かない問(wèn)題に注意を払う必要があります。一般的なアプリケーションシナリオには、外部要求頻度の削減、コード実行リズムの制御、ページの読み込みパフォーマンスの改善が含まれます。

コメントスパムを防ぐ最も効果的な方法は、プログラマティックな手段を介して自動(dòng)的に識(shí)別して傍受することです。 1.検証コードメカニズム(Googler CaptchaやHcaptchaなど)を使用して、特に公共のWebサイトに適した人間とロボットを効果的に區(qū)別します。 2.隠しフィールド(ハニーポットテクノロジー)を設(shè)定し、ロボットを使用して機(jī)能を自動(dòng)的に埋めて、ユーザーエクスペリエンスに影響を與えることなくスパムコメントを識(shí)別します。 3.コメントコンテンツのブラックリストを確認(rèn)し、敏感な単語(yǔ)の一致を通じてスパム情報(bào)をフィルタリングし、誤判斷を避けるために注意を払ってください。 4.コメントの頻度とソースIPを判斷し、単位時(shí)間あたりの提出數(shù)を制限し、ブラックリストを確立します。 5.サードパーティのスパムサービス(Akismet、CloudFlareなど)を使用して、識(shí)別の精度を向上させます。ウェブサイトに基づいていることができます

Gutenbergブロックを開(kāi)発する場(chǎng)合、エンキュー資産の正しい方法には次のものが含まれます。1。register_block_typeを使用して、editor_script、editor_style、およびstyleのパスを指定します。 2。functions.phpまたはプラグインでwp_register_scriptとwp_register_styleを介してリソースを登録し、正しい依存関係とバージョンを設(shè)定します。 3.適切なモジュール形式を出力し、パスが一貫していることを確認(rèn)するためのビルドツールを構(gòu)成します。 4. Add_Theme_SupportまたはEnqueue_Block_Assetsを介してフロントエンドスタイルの読み込みロジックを制御して、フロントエンドスタイルのロードロジックが確保されるようにします。

カスタムユーザーフィールドを追加するには、プラットフォームに従って拡張メソッドを選択し、データ検証と許可制御に注意を払う必要があります。一般的なプラクティスには次のものが含まれます。1。データベースの追加のテーブルまたはキー価値ペアを使用して情報(bào)を保存します。 2.フロントエンドに入力ボックスを追加し、バックエンドと統(tǒng)合します。 3。機(jī)密データのフォーマットチェックとアクセス許可を制約します。 4.モバイルの適応とユーザーエクスペリエンスを考慮しながら、新しいフィールド表示と編集をサポートするインターフェイスとテンプレートを更新します。

robots.txtは、WordPressのWebサイトのSEOにとって重要であり、検索エンジンを?qū)Г?、?dòng)作をクロールし、コンテンツの重複を避け、効率を向上させることができます。 1. /wp-admin /および /wp-includes /などのシステムパスをブロックしますが、誤って /uploads /directoryをブロックしないようにします。 2.サイトマップなどのサイトマップパスを追加:https://yourdomain.com/sitemap.xml検索エンジンがサイトマップをすばやく発見(jiàn)するのに役立ちます。 3.クローラー廃棄物を減らすためのパラメーターを備えた制限 /ページ /およびURL。しかし、重要なアーカイブページをブロックしないように注意してください。 4.サイト全體を誤ってブロックすること、更新に影響を與えるキャッシュプラグイン、モバイル端子とサブドメインの一致を無(wú)視するなど、一般的な間違いを避けてください。
