
WPML for WooCommerce 5.5.2.2 – إصلاح حرج لـ WooCommerce 10.3
توجد مشكلة توافق حرجة في إصدار WooCommerce 10.3 القادم تتسبب في حساب خاطئ لأسعار متغيرات المنتج.
باستخدام Docker Compose وXdebug وPhpStorm، يمكنك إنشاء بيئة تطوير محلية قابلة لإعادة الإنتاج ومعزولة وسهلة الإدارة تحاكي الخادم المباشر، مما يعزز جودة مشاريع WordPress الخاصة بك.
مرحباً بزملائي من مطوري WordPress والمستخدمين المتقدمين! يسعدني اليوم أن أشارككم درساً تعليمياً شاملاً ومباشراً حول إعداد بيئة تطوير محلية لـ WordPress باستخدام Docker Compose. بعد انضمامي مؤخراً إلى الفريق الديناميكي في OnTheGoSystems، قررت أن أجلب معي بيئة العمل التي أعتاد عليها، وهذا هو الهدف الأساسي من هذا الإعداد.
كان الهدف بسيطاً: تطوير إعداد يتيح لي تحكماً دقيقاً في أدوات التطوير الخاصة بي، مع دمج Xdebug وWP-CLI مع صورة Docker الرسمية لـ WordPress. لا يهدف هذا الإعداد إلى إعادة اختراع العجلة، بل إلى تخصيصها لتتوافق مع التفضيلات الفردية وأساليب العمل. آمل أن يكون هذا الدليل مفيداً لك في تكوين بيئة مشابهة، مما يعزز رحلتك في تطوير WordPress.
لتحقيق أقصى استفادة من هذا الدرس التعليمي، ستحتاج إلى تثبيت التبعيات التالية:
هدفنا هو إنشاء بيئة تطوير محلية لـ WordPress معزولة وقابلة لإعادة الإنتاج وسهلة الإدارة. يشكل Docker العمود الفقري لهذا الإعداد، حيث يوفر البنية التحتية لاحتواء تطبيقنا وإدارته. بينما يُعد Xdebug وPhpStorm الجزأين المكملين لهذه المنظومة، حيث يقدمان إمكانات محسّنة لتطوير وتصحيح أخطاء التعليمات البرمجية في PHP.
ستبدأ رحلتنا بإنشاء ملف Dockerfile يوسع صورة Docker الرسمية لـ WordPress. سنعزز هذه الصورة من خلال دمج Xdebug وWP-CLI، وهما أداتان أساسيتان في مهام تطوير وتصحيح أخطاء WordPress.
بعد ذلك، سنقوم بصياغة ملف Docker Compose لتنسيق خدمتين رئيسيتين: WordPress وMySQL. وصدق أو لا تصدق، هذا كل شيء تقريباً!
يكمن جمال هذا الإعداد في أنه ينتج بيئة تطوير محلية لا تحاكي الخادم المباشر فحسب، بل يسهل تكرارها أيضاً. هذا يعني أنه يمكننا تكرار الإعداد الدقيق عبر بيئات أو أجهزة متعددة بسهولة، مما يضمن التناسق ويقلل من المشكلات المتعلقة بالإعداد.
تبدأ رحلتنا بإنشاء ملف Dockerfile جديد. يوجه هذا الملف Docker حول كيفية بناء صورتنا. إليك الإعداد الأساسي الذي أبدأ به عادةً:
# Use the official WordPress image as a parent image
FROM wordpress:latest
# Install Xdebug
RUN pecl install xdebug
# Install WP-CLI
RUN curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar && \
chmod +x wp-cli.phar && \
mv wp-cli.phar /usr/local/bin/wp
# Copy xdebug.ini into the container
COPY xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini
في ملف Dockerfile هذا، نبدأ من صورة WordPress الرسمية. ثم نقوم بتثبيت Xdebug وWP-CLI بشكل منفصل من أجل الوضوح وسهولة الصيانة. يتم نسخ ملف تكوين Xdebug (xdebug.ini) إلى الدليل المناسب في الحاوية. يشكل هذا أساس الإعداد المفضل لدي لبيئة تطوير محلية لـ WordPress.
الآن بعد أن قمنا بتثبيت Xdebug في صورة Docker الخاصة بنا، نحتاج إلى تكوينه للعمل في بيئة التطوير المحلية. يتضمن ذلك إنشاء ملف xdebug.ini بالإعدادات التالية:
ini zend_extension=xdebug xdebug.mode=debug xdebug.client_port=9003 xdebug.start_with_request=yes
تُمكّن هذه الإعدادات إضافة Xdebug، وتضبطها لبدء تصحيح الأخطاء مع كل طلب، وتحدد منفذ العميل الذي يجب أن تتصل به (في هذه الحالة، 9003). ربما لاحظت أننا لم نحدد client_host بعد، ولكن لا تقلق، سيأتي دوره قريباً جداً في عملية الإعداد الخاصة بنا.
بعد ذلك، سنقوم بإنشاء ملف docker-compose.yml الذي يعد خدمات WordPress وMySQL الخاصة بنا:
yaml
version: '3'
services:
# MySQL Service
mysql:
image: mysql:latest
container_name: mysql_container
restart: always
volumes:
- db_data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
MYSQL_DATABASE: wordpress
# WordPress Service
wordpress:
depends_on:
- mysql
image: wordpress:latest
container_name: wp_container
volumes:
- ./wp_data:/var/www/html
environment:
WORDPRESS_DB_HOST: mysql
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
WORDPRESS_DEBUG: 1
XDEBUG_CONFIG: client_host=host.docker.internal
ports:
- "8000:8000"
volumes:
db_data:
في هذا الملف، قمنا بتعريف خدمتين – MySQL وWordPress. تحتوي كلتا الخدمتين على أسماء حاويات فريدة، لتسهيل الرجوع إليها وإدارتها.
يضمن التوجيه restart: always إعادة تشغيل الخدمة دائماً في حالة توقفها بشكل غير متوقع. وإذا تم إيقافها يدوياً، فلن يتم إعادة تشغيلها إلا عند إعادة تشغيل الحاوية يدوياً.
تقوم خدمة MySQL بتركيب وحدة تخزين Docker (db_data)، مما يضمن تخزيناً دائماً حتى إذا تم حذف الحاوية. بالنسبة لخدمة WordPress، نقوم بتركيب دليل محلي (./wp_data) في الحاوية. هذا يعني أن أي تغييرات في ملفات WordPress على نظامنا المحلي ستنعكس في الحاوية.
لقد أضفنا متغيري بيئة إضافيين لخدمة WordPress – وهما WORDPRESS_DEBUG لتمكين تصحيح أخطاء WordPress، وXDEBUG_CONFIG لتحديد المضيف العميل لـ Xdebug. تم تعيين client_host إلى host.docker.internal، وهو اسم DNS خاص يوجه إلى عنوان IP الداخلي للمضيف، مما يسمح لـ Xdebug بالتواصل مع بيئة التطوير المتكاملة (IDE) الخاصة بنا على المضيف.
يُرجى ملاحظة أن إعداد client_host مصمم خصيصاً لأنظمة Windows وmacOS. بالنسبة لنظام Linux، البديل الشائع هو استبدال host.docker.internal بعنوان IP الفعلي لجهازك، والذي يمكن الحصول عليه عبر أمر الجهاز الطرفي ip addr show.
بمجرد أن يصبح ملف Dockerfile وملف تكوين Xdebug وملف Docker Compose جاهزين، يحين الوقت لإطلاق بيئة تطوير WordPress المحلية الخاصة بك.
للقيام بذلك، ما عليك سوى الانتقال إلى الدليل الذي يحتوي على ملف Docker Compose في الجهاز الطرفي، وتشغيل الأمر التالي:
bash docker-compose up -d
سيوجه هذا الأمر Docker لبدء خدماتك في الخلفية.
عند التنفيذ الناجح، سيكون لديك موقع WordPress يعمل على جهازك المحلي، ويمكن الوصول إليه عبر http://localhost:8000. ستنعكس الآن أي تغييرات تجريها على ملفات PHP الخاصة بـ WordPress على هذا الموقع، مما يوفر طريقة سهلة وفعالة لتطوير وتصحيح أخطاء تطبيق WordPress الخاص بك.
بالإضافة إلى ذلك، ستعمل خدمة MySQL أيضاً، ويمكن الوصول إليها على المنفذ 3306. يوفر هذا قاعدة بيانات MySQL تعمل بكامل طاقتها لتطبيق WordPress الخاص بك، مما يحاكي بيئة واقعية لاحتياجات التطوير الخاصة بك.
بالنسبة لأولئك الذين يرغبون في التعمق قليلاً في تكوين PHP الخاص بهم، يمكننا إدخال ملف phpinfo.php في صورة Docker الخاصة بنا. عند الوصول إليه، سيعرض هذا الملف نظرة عامة شاملة على إعدادات PHP الخاصة بك.
لإضافة ملف phpinfo.php، ستحتاج أولاً إلى إنشائه في نفس الدليل الذي يوجد به Dockerfile. يجب أن يحتوي الملف على كود PHP التالي:
<?php phpinfo(); ?>
بعد ذلك، أضف السطر التالي إلى ملف Dockerfile الخاص بك:
# Bonus: Copy phpinfo.php into the container COPY phpinfo.php /var/www/html/phpinfo.php
سيقوم هذا الأمر بنسخ ملف phpinfo.php إلى الدليل الجذري لـ WordPress داخل صورة Docker.
لضمان سريان هذه التغييرات، ستحتاج إلى إعادة بناء صورة Docker وإعادة تشغيل خدمات Docker Compose. قم بتشغيل الأوامر التالية في الجهاز الطرفي:
bash docker-compose down docker-compose up -d --build
يوقف الأمر docker-compose down حاويات Docker الحالية ويزيلها. بعد ذلك، يعيد الأمر docker-compose up -d –build بناء صورة Docker مع ملف phpinfo.php المضاف حديثاً، ويعيد تشغيل خدمتي WordPress وMySQL في الخلفية.
يمكنك الآن الوصول إلى ملف phpinfo.php بالانتقال إلى http://localhost:8000/phpinfo.php في متصفح الويب الخاص بك. هنا، سترى صفحة مفصلة توضح تكوين PHP الخاص بك، والتي يمكن أن تكون مورداً قيماً لتصحيح الأخطاء والتحقق.
الآن بعد أن قمت بإعداد بيئة تطوير WordPress المحلية باستخدام Docker وXdebug وPhpStorm، يمكنك البدء في تصحيح أخطاء موقع WordPress الخاص بك. إليك ملخص سريع لكيفية البدء:
في ختام هذا الدرس التعليمي، آمل أن يصبح مورداً قيماً لك كما كان بالنسبة لي في رحلتي. إن القدرة على تخصيص هذا الإعداد – كما فعلنا بإضافة ملف phpinfo.php – تفتح عدداً لا يحصى من الاحتمالات، مما يجعل عملية التطوير لدينا أكثر قوة وكفاءة. جميع التعليمات البرمجية متاحة في مستودع GitHub هذا. لا تتردد في سحبها وتجربتها واقتراح تحسينات!
أنا شخصياً أستخدم نظام التشغيل Ubuntu، ولكن جمال هذا الإعداد يكمن في أنه بفضل Docker، لا يهم ذلك! بفضل حقيقة أن Docker يمكن أن يعمل على أي نظام تشغيل بشكل متساوٍ، سواء كنت تفضل macOS أو Windows أو Linux، فإن الإعداد والاستخدام هو نفسه!
شكراً لمرافقتي في هذا الشرح التفصيلي. آمل أن أسمع منك عن تجاربك أو أي اقتراحات قد تكون لديك لزيادة تحسين هذا الإعداد. تذكر أن النمو يزدهر بالمعرفة المشتركة وروح التعاون.
نتمنى لك برمجة ممتعة، ودعنا نواصل إنشاء تجارب WordPress مذهلة معاً!