
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, מגדירות אותה להתחיל ניפוי שגיאות בכל בקשה, ומגדירות את יציאת הלקוח (port) שאליה היא צריכה להתחבר (במקרה זה, 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 טוען אמצעי אחסון (volume) של Docker (db_data), מה שמבטיח אחסון מתמיד גם אם הקונטיינר נמחק. עבור שירות ה־WordPress, אנו טוענים ספרייה מקומית (./wp_data) אל הקונטיינר. המשמעות היא שכל שינוי בקבצי ה־WordPress במערכת המקומית שלנו ישתקף בקונטיינר.
הוספנו שני משתני סביבה נוספים עבור שירות ה־WordPress – WORDPRESS_DEBUG כדי להפעיל את ניפוי השגיאות של WordPress ו־XDEBUG_CONFIG כדי לציין את המארח (client host) עבור 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 מדהימות ביחד!