在 WordPress 中使用 Composer
已發表: 2022-06-30WordPress 自 2003 年以來一直存在,並且已成為大多數希望創建網站的人的默認工具。 雖然它從作為一個博客引擎的根源已經走了很長一段路,但底層技術並沒有像用戶體驗那樣取得同樣的飛躍。
WordPress 開發仍然圍繞著 2003 年出現的許多標准進行。雖然由於所需的技術理解較低,這可以使人們更容易使用它,但這也意味著許多新的開發資源與 WordPress 開箱即用不兼容。
今天,我們將看看其中一種名為 Composer 的新工具。 讓我們看看它如何融入您的 WordPress 工作流程,並討論您可能想嘗試它的原因。
什麼是作曲家?
你寫的每一段代碼都有依賴關係。 如果您正在編寫 WordPress 插件,那麼您最大的依賴就是 WordPress 本身。 如果沒有 WordPress 提供的核心功能,您的插件很可能根本沒有用處。 在 WordPress 本身之外,您可能需要像 nusoap 這樣的現代 SOAP 客戶端來與基於 SOAP 的 API 交互。
過去,大多數人會簡單地將 nusoap 的存儲庫複製到其插件的目錄中,然後包含使用該庫所需的文件。 這就是 Composer 可以介入並簡化一些依賴項管理的地方。
Composer 是一個依賴管理器。 它專門設計用於輕鬆安裝和管理依賴項。 如果您在團隊中工作並希望確保團隊中的每個成員都使用與他們的開發工作相同的庫,這可能變得尤為重要。
Composer 的基礎是一個 JSON 文件,其中詳細說明了您已安裝的依賴項以及您要使用的依賴項的哪些版本。 您可以在下面看到一個包含 nusoap 依賴項的基本示例。
{
“要求”: {
“econea/nusoap”:“^0.9.10”
}
}
當我在我的插件中運行 composer require econea/nusoap 時,它會為我安裝 nusoap 並將其鎖定到指定的版本。 在這種情況下,我使用的是 0.9.10 並將繼續使用它,除非我告訴 Composer 升級依賴項。
與簡單地下載和包含 nusoap 相比,這具有優勢,因為我可以使用 composer update 來更新我的所有依賴項,而無需查看是否有更新並手動將它們下載到我的項目中。 Composer 接管此級別的資源管理。
開始使用作曲家
安裝 composer 相當簡單。
在 Windows 上
如果您使用的是 Windows,則提供了一個安裝程序來簡化該過程。 它將安裝最新版本的 Composer 並使您的項目可以在全球範圍內訪問它。
Linux/Unix/macOS
在任何這些平台上,您都需要幾個步驟來設置 Composer。 首先,運行下載 Composer 所需的命令並進行設置。
php -r “copy('https://getcomposer.org/installer', 'composer-setup.php');”
php -r “if (hash_file('sha384', 'composer-setup.php') === '756890a4488ce9024fc62c56153228907f1545c228516cbf63f885e036d37e9a59d27d63f46af1d4d07ee0f76181'c;d 驗證 7 } else { echo '安裝程序損壞'; unlink('composer-setup.php'); } 迴聲 PHP_EOL;”
php 作曲家-setup.php
php -r “unlink('composer-setup.php');”
接下來,您將希望全局運行 Composer 以進行本地開發,因此我們需要調整默認安裝以確保它在我們想要使用 Composer 的任何時候都可用。 您可以使用從剛剛下載 Composer 的同一目錄執行以下命令將 Composer 移動到全局可用。
mv composer.phar /usr/local/bin/composer
升級作曲家
在 Windows 和 macOS 上,升級到最新版本的 Composer 所需要做的就是運行 composer self-update。 如果您使用的是 Linux/Unix,那麼您需要運行 sudo apt update && upgrade 以便您的系統檢查最新版本,然後您可以運行 composer self-update 來獲取最新版本。
現在你已經設置好了,讓我們看看使用 Composer 安裝 WordPress。
使用 Composer 安裝 WordPress
如果您想使用 Composer 管理整個站點,該怎麼辦? 首先,你需要確定WordPress是項目的依賴還是項目的核心? 是的,有點腦筋急轉彎。
WordPress 可以被視為項目的依賴項,因為您的客戶的最終目標不是安裝 WordPress。 他們想要一個商店或一個博客,這取決於你安裝 WordPress。 這就是像 Roots 這樣的項目在其基於 Composer 的 Bedrock WordPress 設置中所採取的立場,稱為 Bedrock。
使用 Bedrock 意味著您不必告訴 Composer WPackagist,因為它已經設置好了。 如果您希望使用 Composer 管理整個站點,我建議您從這裡開始。
要安裝 Bedrock,請運行以下命令。
作曲家創建項目根/基岩
這將為您提供以下文件結構。
├── composer.json
├── .env
├── 配置
│ ├── application.php
│ └── 環境
│ ├── development.php
│ ├── staging.php
│ └── production.php
├── 供應商
└── 網絡
├── 應用
│ ├── mu-plugins
│ ├── 插件
│ ├── 主題
│ └── 上傳
├── wp-config.php
├── index.php
└── wp
這與標準的 WordPress 設置非常不同。 首先,您的 composer.json 文件位於安裝的根目錄。 這是您將看到您的 Composer 配置的地方。
您的 .env 文件是您可以存儲不同數據庫配置的地方。 這是必需的,因為您的本地站點和實時站點將具有不同的數據庫密碼和用戶名。 默認的 wp-config.php 文件將理解您放入 .env 文件中的變量,因為 Bedrock 使用這些變量而不是數據庫連接信息中的硬編碼。
你的 .env 文件應該在你的 Git 存儲庫中被忽略。 當您配置一個新站點時,您將使用所需的數據庫配置信息向其中添加一個新的 .env 文件。
您需要在此處設置一些其他變量才能啟動 Bedrock,這些變量都在其文檔中進行了詳細說明。
在 config 文件夾下是您將使用的環境的不同默認配置。 在開發中,這會打開錯誤報告,在您的生產環境中,它可以確保錯誤記錄不會干擾您網站的順利運行。
以 Bedrock 為基礎,您現在可以使用 Composer 通過 WPackagist 安裝您的 WordPress 插件。
WPackagist 是 WordPress 主題和插件存儲庫的鏡像。 這是必需的,因為默認情況下大多數插件和主題都不適用於 Composer 安裝。 鏡像為每個插件添加了所需的文件,以便可以使用 Composer 來管理插件。
如果你想在基於 Bedrock 的 WordPress 安裝中安裝 WooCommerce,你需要首先需要 WooCommerce,composer 需要 wpackagist-plugin/woocommerce,然後你需要告訴 Composer 安裝依賴項,composer install。
現在您可以轉到 WordPress 安裝的管理區域並激活 WooCommerce 並開始構建您的網站。 要在新版本發佈時更新 WooCommerce,或更新 WordPress,您需要運行 composer update。
這是基於 Composer 的項目可能會遇到一些麻煩的地方。 如果您通過 WordPress 管理員運行更新,那麼 Composer 期望的內容與 WordPress 安裝的內容不匹配。 如果您要使用 Composer,請堅持使用它作為您的更新工具,不要通過 WordPress 管理員工作。
什麼時候應該使用 Composer ?
我相信你們中的許多人都在問為什麼 Composer 是 WordPress 開發的如此出色的工具。 WordPress 在構建時並未考慮到 Composer,因此要使用它,您必須跳過一些障礙才能使其正常工作。
對於插件和主題開發人員來說,Composer 可以更輕鬆地處理需要從更廣泛的 PHP 生態系統引入的依賴項。 對於 WordPress 開發人員來說,這個論點不太清楚。 有些人喜歡像 Roots 一樣使用 Composer 來管理他們的整個站點。 這可以讓 Git 管理的文件更少,但這對我來說似乎從來都不是一個令人信服的案例。
我喜歡的情況是 Composer 可以很容易地為不同的環境建立不同的依賴關係。 然後,您可以使用您的部署過程在您的環境中部署這些依賴項,而不必手動管理它們。
作為開發人員,您還需要考慮客戶的需求。 如果他們沒有開發團隊來長期管理網站,那麼他們可能會遇到非標準 WordPress 安裝的問題。 在某些情況下,他們的主機可能會告訴他們支持不可用,因為他們沒有使用正常的方式安裝和使用 WordPress。 當您為客戶服務時,您總是需要平衡您使用的酷技術與客戶可以長期處理的技術。
僅出於這個原因,我不在我的全站點項目中使用 Composer。 我的客戶將多年來每天都在管理他們,我不想設置任何額外的障礙。 我們都希望他們的網站在未來幾年能夠順利運行。
如果您希望使用現代技術升級您的 PHP 技能,那麼您當然應該看看 Composer 如何適合您的 WordPress 工作流程。