<?xml version="1.0"?>
<rss version="2.0"><channel><title>&#x627;&#x644;&#x628;&#x631;&#x645;&#x62C;&#x629;: &#x628;&#x631;&#x645;&#x62C;&#x629; &#x648;&#x648;&#x631;&#x62F;&#x628;&#x631;&#x64A;&#x633;</title><link>https://academy.hsoub.com/programming/php/wordpress/?d=2</link><description>&#x627;&#x644;&#x628;&#x631;&#x645;&#x62C;&#x629;: &#x628;&#x631;&#x645;&#x62C;&#x629; &#x648;&#x648;&#x631;&#x62F;&#x628;&#x631;&#x64A;&#x633;</description><language>ar</language><item><title>&#x62A;&#x639;&#x631;&#x641; &#x639;&#x644;&#x649; 11 &#x637;&#x631;&#x64A;&#x642;&#x629; &#x64A;&#x633;&#x627;&#x639;&#x62F;&#x643; &#x641;&#x64A;&#x647;&#x627; ChatGPT &#x643;&#x645;&#x637;&#x648;&#x631; &#x648;&#x648;&#x631;&#x62F;&#x628;&#x631;&#x64A;&#x633;</title><link>https://academy.hsoub.com/programming/php/wordpress/%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-11-%D8%B7%D8%B1%D9%8A%D9%82%D8%A9-%D9%8A%D8%B3%D8%A7%D8%B9%D8%AF%D9%83-%D9%81%D9%8A%D9%87%D8%A7-chatgpt-%D9%83%D9%85%D8%B7%D9%88%D8%B1-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r2342/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2024_06/11-Ways-ChatGPT-Can-Help-You-As-a-WordPress-Developer.png.dc941e29d91cf45e1526a020c804633a.png" /></p>
<p>
	مع التطور الكبير لتقنيات الذكاء الاصطناعي وظهور روبوت الدردشة ChatGPT وغيره من النماذج اللغوية برزت أسئلة كبيرة حول مستقبل مطوري ووردبريس، وكيف يمكن للذكاء الاصطناعي أن يساعدك كمطور ووردبريس ولا يكون ضرراً عليك ويتسبب في خسارتك لوظيفتك.
</p>

<p>
	سنقدم لك في هذه المقالة بعض الطرق الحديثة التي يمكن للذكاء الاصطناعي وتحديدًا روبوت ChatGPT أن يساعدك بها مطوري ووردبريس. فبعد قراءتك لهذه المقالة وتجريب بعض التطبيقات المشروحة فيه ستدرك كيف يمكنك الاستفادة من الذكاء الاصطناعي في تسريع إنشاء تطبيقاتك ورفع إنتاجيتك.
</p>

<p>
	سنناقش في هذا المقال الأمور التالية:
</p>

<ul>
	<li>
		لمحة عامة عن <a href="https://academy.hsoub.com/apps/web/%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-%D8%A8%D9%88%D8%AA-%D8%A7%D9%84%D9%85%D8%AD%D8%A7%D8%AF%D8%AB%D8%A9-%D8%A7%D9%84%D8%B0%D9%83%D9%8A-%D8%B4%D8%A7%D8%AA-%D8%AC%D9%8A-%D8%A8%D9%8A-%D8%AA%D9%8A-chatgpt-r863/" rel="">بوت المحادثة الذكي شات جي بي تي ChatGPT</a>.
	</li>
	<li>
		الطرق المختلفة التي يمكن فيها لشات جي بي تيChatGPT مساعدتك كمطور ووردبريس.
	</li>
</ul>

<p>
	ولنبدأ بمناقشة هذه النقاط بالتفصيل في الفقرات التالية:
</p>

<h2 id="ghatgpt">
	لمحة عامة عن ChatGPT
</h2>

<p>
	إن مصطلح ChatGPT هو اختصار لعبارة Chat Generative Pretrained Transformer وهو عبارة عن أداة من أدوات الذكاء الاصطناعي طورتها شركة الأبحاث OpenAI لتكون أداة قوية جدًا تستخدم طريقة التعليم المعزز والتعليم الخاضع للإشراف للإجابة على الأسئلة المعقدة بفعالية كبيرة.
</p>

<p>
	يعد ChatGPT أحد تطبيقات <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D9%85%D9%82%D8%AF%D9%85%D8%A9-%D8%A5%D9%84%D9%89-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-%D8%A7%D9%84%D8%AA%D9%88%D9%84%D9%8A%D8%AF%D9%8A-generative-ai-r2234/" rel="">الذكاء الاصطناعي التوليدي Generative AI</a> وهذا يعني أنه عندما يتم تدريبه أو تعليمه فسيكون بإمكانه توليد مخرجات مشابهة للأمثلة التي تم تدريبه عليها، وبالتالي يمكنه مساعدتك في كثير من الأمور مثل كتابة الكود، وصياغة المقالات، وكتابة رسائل البريد الإلكتروني وغيرها من المهام.
</p>

<h2 id="chatgpt">
	الطرق التي يساعدك ChatGPT فيها كمطور ووردبريس
</h2>

<p>
	يقدم لك ChatGPT العديد من المميزات لمطوري ووردبريس ويساعدهم على تحسين بيئة العمل البرمجي، وفيما يلي نقدم لك أبرز هذه الميزات:
</p>

<ol>
	<li>
		توليد الكود البرمجي
	</li>
	<li>
		اختبار الكود
	</li>
	<li>
		التوثيق التقني
	</li>
	<li>
		تصحيح الأخطاء
	</li>
	<li>
		توليد التعليقات
	</li>
	<li>
		تبسيط الأكواد المعقدة
	</li>
	<li>
		معالجة البيانات
	</li>
	<li>
		هندسة المميزات
	</li>
	<li>
		توليد كود برمجي بديل
	</li>
	<li>
		تطوير عملية النمذجة
	</li>
	<li>
		إجراء عمليات البحث
	</li>
</ol>

<p>
	لنناقش كل ميزة من هذه الميزات بمزيد من التفصيل.
</p>

<h3 id="1">
	1. توليد الكود البرمجي
</h3>

<p>
	يعد روبوت الدردشة ChatGPT أداة مفيدة جدًا لمطوري ووردبريس، وخاصة عندما يتعلق الأمر بكتابة الأكواد البرمجية، فهو يزودك بشيفرات تفهم احتياجاتك وتلبيها ويوفر عليك الكثير من الوقت والجهد في كتابتها. ولا يتوقف الأمر على كتابة أكواد بسيطة فحسب، بل يمتلك ChatGPT القدرة على كتابة تعليمات برمجية للمهام المعقدة مثل إنشاء أصناف برمجية classes بالكامل، فحتى إن لم تكن على معرفة كاملة بكتابة كود معين فإن ChatGPT سيتولى الأمر بنفسه ويشرح لك الكود الذي قام بكتابته مما يجعله بمثابة دورة مرشد خاص يعلمك أساسيات كتابة هذا الكود.
</p>

<p>
	لتوضيح قدرات ChatGPT في كتابة الشيفرات البرمجية، طلبنا منه كتابة كود يستطيع الزبائن من خلاله اختيار نوع الطعام المفضل لهم من بين أنواع مختلفة، والمفاجأة أن ChatGPT كتب الكود اللازم في غضون لحظات.
</p>

<p>
	كان السؤال أو المطالبة الموجهة له بالضبط على النحو التالي: اكتب الكود البرمجي اللازم الذي يُمكّن الزبائن من اختيار عناصر متنوعة من الطعام. وهذا هو الجواب الذي حصلنا عليه:
</p>

<p>
	هنا ستجد مثال لكود برمجي مكتوب بلغة HTML يستطيع الزبائن من خلاله اختيار عناصر متنوعة من الطعام
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="150896" href="https://academy.hsoub.com/uploads/monthly_2024_06/codegenerating.png.e7c16ddd0f9eedfb51dda912c3d1f899.png" rel=""><img alt="code generating" class="ipsImage ipsImage_thumbnailed" data-fileid="150896" data-unique="xpzndgrqv" style="width: 600px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2024_06/codegenerating.png.e7c16ddd0f9eedfb51dda912c3d1f899.png"> </a>
</p>

<p>
	وفي حال عدم رضاك عن النتيجة التي حصلت عليها، يمكنك إعادة المطالبة مرة أخرى لتوليد كود آخر لنفس الموضوع، إذ سيقدم لك نتيجة أخرى ويوضح لك ما الذي قام به بالتحديد كما هو موضح بالصورة التالية:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="150897" href="https://academy.hsoub.com/uploads/monthly_2024_06/codegenerating1.png.d98b595b2d4818e632ac58ef7fb757bb.png" rel=""><img alt="code generating1" class="ipsImage ipsImage_thumbnailed" data-fileid="150897" data-unique="9g21bxq7d" style="width: 800px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2024_06/codegenerating1.thumb.png.474c4c9053770a36aeb3b4fd1e8d669f.png"> </a>
</p>

<p>
	ولن يكتفي بكتابة الكود كما ذكرنا بل سيشرح لك الخطوات التي قام بها على النحو التالي:
</p>

<blockquote class="ipsQuote" data-gramm="false" data-ipsquote="">
	<div class="ipsQuote_citation">
		اقتباس
	</div>

	<div class="ipsQuote_contents ipsClearfix" data-gramm="false">
		<p>
			يتضمن هذا النموذج حقول لاسم المستخدم وبريده الإلكتروني بالإضافة إلى مربعات اختيار من أجل تحديد عناصر الطعام المختلفة وهذا النموذج تم تنسيقه بواسطة لغة CSS لكي يظهر بشكل أجمل للمستخدم. عندما يقوم المستخدم بإرسال النموذج فإن البيانات ستتم معالجتها من قبل المخدم وهذا يتطلب كتابة كود بلغة PHP أو لغة JavaScript.
		</p>
	</div>
</blockquote>

<p>
	من خلال هذا المثال يمكن أن نخلص للتالي: يمكنك كمطور ووردبريس أن توفر وقتك في كتابة الأكواد التي تستغرق وقتاً طويلاً وتكلف ChatGpt بهذه المهمة وتتفرغ لحل المشكلات الأخرى التي تواجهك في بناء التطبيق.
</p>

<h3 id="2">
	2. اختبار الكود البرمجي
</h3>

<p>
	يعد أيضاً ChatGPT أداة مفيدة جدًا لمطوري ووردبريس فيما يخص اختبار الكود البرمجي، فهو يوفر عدة طرق للمساعدة في هذه العملية ويتمتع ChatGPT بقدرة عالية جدًا على فهم الكود الذي تدخله له وتحليله، وتوليد حالات اختبار تغطي الحالات المختلفة للكود مما يوفر وقتك وجهدك كمطور. كما يولد ChatGPT توثيقًا سهلًا وواضحًا لحالات الاختبار المختلفة، ويتضمن هذا التوثيق مدخلات الاختبار، والحالات المتوقعة للخرج، وشروط الاختبار، مما يؤدي إلى تبسيط عملية الاختبار إلى حد كبير.
</p>

<p>
	إن توفر هذه المعلومات القيّمة لك كمطور ووردبريس تساعدك على تحديث ومراجعة الكود بسهولة وسرعة أكبر، وتحديد المتغيرات المطلوبة بناءاً على نتائج هذا الاختبار، مما يؤدي إلى بناء تطبيق فعال وخالٍ من الأخطاء.
</p>

<h3 id="3">
	3. التوثيق التقني
</h3>

<p>
	قد تكون عملية التوثيق مهمة شاقة ومتعبة للمطورين، ولحسن الحظ يستطيع ChatGPT مساعدتك بشكل رائع في هذا الأمر بفضل المهارات اللغوية التي يمتلكها. فكل ما عليك القيام به ببساطة هو تزويد ChatGPT ببعض التعليمات البرمجية ثم تطلب منه أن ينشئ توثيقًا لهذه التعليمات وستجد أنه سيؤدي هذه المهمة على أكمل وجه وينشئ لك توثيقًا واضحًا وسهلًا ويشرح من خلاله الكود والمدخلات والمخرجات وأي معلومات مهمة أخرى.
</p>

<p>
	على سبيل المثال إذا زودنا ChatGPT بجزء من الكود الذي قام هو بتوليده في الفقرة السابقة، ثم طلبنا من أن ينشئ لنا توثيقًا لهذا الكود ستكون النتيجة مشابهة للتالي:
</p>

<blockquote class="ipsQuote" data-gramm="false" data-ipsquote="">
	<div class="ipsQuote_citation">
		اقتباس
	</div>

	<div class="ipsQuote_contents ipsClearfix" data-gramm="false">
		<p>
			ينشئ الكود نموذجًا عن طريق استخدام الوسم <code>&lt;form&gt;</code> وداخل هذا النموذج يوجد عنوان <code>&lt;h2&gt;</code> نصه "Food order form" وهذا النموذج يحتوي على ثلاثة حقول هي الاسم <code>name</code>، والبريد الإلكتروني <code>Email</code>، وعنصر <code>checkbox</code> لاختيار أنواع الطعام.
		</p>

		<p>
			حقل الاسم هو حقل نصي يسمح للمستخدم بإدخال اسمه وخاصيتين هما المعرف <code>id </code>والاسم <code>name</code> لمساعدة الخادم في إنجاز عمليات النموذج المختلفة، أما حقل البريد الالكتروني <code>Email </code>فهو حقل إدخال أيضاً يطلب من المستخدم أن يدخل بريده الإلكتروني وله خاصيتان هما المعرف <code>id </code>والاسم <code>name</code> أيضًا لمساعدة الخادم على معالجة البيانات.
		</p>
	</div>
</blockquote>

<p>
	كما يزودك ChatGPT بمعلومات أكثر تفصيلاً حول معاملات أو وسطاء كل دالة والخرج النتائج ويوفر اقتراحات للتعامل مع الأخطاء والكثير من الأمور الأخرى، وقد يكون استخدام ChatGPT في عملية التوثيق غير مثالي حاليًا من ناحية دقة المعلومات، ومع ذلك فإنه يستطيع أن يقدم تصورًا جيدًا عن الطريقة المتبعة في عملية التوثيق ويسرع بناء توثيقات البرمجيات ليريحك كمطور ووردبريس من هذه المهمة الممللة ويمكنك من التفرغ لتطوير تطبيقاتك بفعالية أكبر.
</p>

<h3 id="4">
	4. معالجة أو تصحيح الأخطاء
</h3>

<p>
	في حال كنت بحاجة إلى تعقب الأخطاء في برنامجك، وتريد تطبيق ممارسات عملية جيدة على الكود فسياعدك استخدام ChatGPT في العثور على الأخطاء البرمجية وفحص أجزاء معينة من الكود وتقديم اقتراحات مفيدة تساعدك في تشخصيص أي مشكلة وحلها بدلاً من أن تمضي ساعات طويلة من البحث المضني عن الأخطاء بنفسك.
</p>

<p>
	كما تستطيع أيضاً من خلال ChatGPT إعادة بناء الكود وذلك بفضل تقديم ChatGPT لاقتراحات تعديل لزيادة الوثوقية وقابلية صيانة الكود بحيث يكون هناك عدد أقل من الأخطاء في البرنامج، على سبيل المثال سنعطي ChatGPT كود جافاسكريبت التالي ونطلب منه اكتشاف الأخطاء الموجودة فيه:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="150895" href="https://academy.hsoub.com/uploads/monthly_2024_06/bug.png.39c238740ac9c0c2ad929b79b73a761c.png" rel=""><img alt="bug" class="ipsImage ipsImage_thumbnailed" data-fileid="150895" data-unique="qym8dxyfr" src="https://academy.hsoub.com/uploads/monthly_2024_06/bug.thumb.png.fbc07ece82a7a744b88f5d08f57f69c2.png"> </a>
</p>

<p>
	سيعطينا النتيجة التالية:
</p>

<blockquote class="ipsQuote" data-gramm="false" data-ipsquote="">
	<div class="ipsQuote_citation">
		اقتباس
	</div>

	<div class="ipsQuote_contents ipsClearfix" data-gramm="false">
		<p>
			يوجد هناك خطأ في هذا الكود بسبب طريقة عمل الإغلاق Closure في جافا سكريبت حيث ستظهر الرسالة "Button clicked" في كل مرة يتم فيها الضغط على أي زر من الأزرار حتى ولو كان للزر رسالة مختلفة.
		</p>

		<p>
			لحل هذا الخطأ أنت بحاجة لإنهاء قيمة المتغير <code>i</code> في نفس وقت إضافة مستمع الحدث event listener. ويمكن حل هذه المشكلة عن طريق استخدام دالة الطريقة الفورية (Immediately Invoked Function Expression - IIFE) للحفاظ على قيمة <code>i</code> في كل تكرار.
		</p>
	</div>
</blockquote>

<p>
	وسيعطي اقتراحًا للكود المصحح أيضًا:
</p>

<p>
	<img alt="كود مصحح.PNG" class="ipsImage ipsImage_thumbnailed" data-fileid="150909" data-ratio="39.65" data-unique="imf72jq2s" width="807" src="https://academy.hsoub.com/uploads/monthly_2024_06/569663498_.PNG.8e03dce2770a95477c3cda4542aa8baa.PNG">
</p>

<p>
	إن عملية تصحيح الأخطاء باستخدام ChatGPT يمكن أن توفر الكثير من الوقت والجهد خاصة في التطبيقات الكبيرة والمعقدة.
</p>

<h3 id="5">
	5. توليد التعليقات
</h3>

<p>
	يمكن أن يوفر ChatGPT ميزة كبيرة وقوية لمطوري ووردبريس وهي التعليق على الكود البرمجي، لتوفير فهم أكبر لما تقوم به التعليمات البرمجية من خلال وضع شرح واضح ومحدد لها. وستلاحظ أن ChatGPT يكتب تعليقات على الكود بصورة ذاتية، لكن يمكنك أن تطلب منه وضع تعليقات أوفى على تعليمات بعينها.
</p>

<p>
	ستساعد ميزة كتابة التعليقات هذه على فهم الكود الذي كتبته بشكل أكبر فالتعليقات تعد نوعًا من أنواع التوثيق المفيد الذي يوضح طبيعة الكود مما يجعل الأمر أكثر بساطة لك وللمطورين الآخرين لفهم وظائف الكود والعمل عليه بشكل جماعي.
</p>

<p>
	علاوة على ذلك يستطيع ChatGPT شرح وتوضيح جزء معين من الكود وهذه الميزة تكون مفيدة بشكل خاص عندما لا تحتاج أنت كمطور إلى كتابة توثيق كامل للمشروع بل لجزء محدد منه.
</p>

<p>
	على سبيل المثال عندما طلبنا من ChatGPT أن يضيف تعليقًا يشرح لنا الكود الموضح بالصورة:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="150898" href="https://academy.hsoub.com/uploads/monthly_2024_06/comment.png.a3136ae39f009f0e61981a6d9f999f3c.png" rel=""><img alt="comment" class="ipsImage ipsImage_thumbnailed" data-fileid="150898" data-unique="kiu3no6br" src="https://academy.hsoub.com/uploads/monthly_2024_06/comment.thumb.png.b5e1655d3f7a7f403c319c7ffb27680b.png"> </a>
</p>

<p>
	كان التعليق على النحو التالي:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_3520_13" style=""><span class="com">// الحصول على جميع العناصر في المستند التي تحتوي على الصنف "my-button"</span><span class="pln">
</span><span class="com">// وتخزينها في متغير يسمى "buttons".</span><span class="pln">
</span><span class="kwd">var</span><span class="pln"> buttons </span><span class="pun">=</span><span class="pln"> document</span><span class="pun">.</span><span class="pln">getElementsByClassName</span><span class="pun">(</span><span class="str">'my-button'</span><span class="pun">);</span></pre>

<h3 id="6">
	6. تبسيط الكود المعقد
</h3>

<p>
	يسمح ChatGPT للمطورين أن ينشؤوا شروحات بسيطة للكود المعقد، مما يسهل على المطورين الآخرين فهم وصيانة هذا الكود، فيمكن لـGhatGPT إنشاء توثيق وتعليقات للكود كما رأينا ثم يقوم الذكاء الاصطناعي بتبسيط هذا الكود وتوضيحه مما يوفر الكثير من الوقت والجهد على المطور.
</p>

<p>
	بالإضافة إلى ذلك ومع القدرة على تبسيط الكود المعقد غالباً ما يكون الكود الذي يكتبه ChatGPT أكثر دقة من الكود الذي يكتبه المطور نفسه.
</p>

<p>
	لهذا السبب تعد عملية شرح وتبسيط الكود المعقد في مقاطع صغيرة مفيدة جدًا للمطورين من أجل فهم الكود الصعب وشرحه بوضوح وبساطة لأن ChatGPT يستطيع فهم وتحليل كل سطر من أسطر الكود على حدة ويشرح آلية عمله بالتفصيل.
</p>

<h3 id="7">
	7. معالجة البيانات
</h3>

<p>
	إذا كنت بحاجة إلى مساعدة في عملية معالجة البيانات فيمكنك الاستعانة بـGhatGPT في توليد كود مهمته تنظيف وترتيب البيانات وتجهيزها من أجل نماذج الاختبار والتدريب، وهذا يتضمن إدارة المهام مثل تشفير المتغيرات والتعامل مع القيم المفقودة أو حسابها وذلك من خلال عدد من الاستراتيجيات.
</p>

<p>
	كما يمكن إنشاء ميزات جديدة من البيانات الموجودة مثل توليد كود يستخرج المعلومات من البيانات غير المهيكلة (مثل النصوص أو الصور) ثم يحول هذه المعلومات إلى بيانات مهيكلة تستخدم في عملية تعلم الآلة <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AA%D8%B9%D9%84%D9%85-%D8%A7%D9%84%D8%A2%D9%84%D8%A9/" rel="">machine learning</a> وهذا يجعل عملية المعالجة المسبقة أبسط وأكثر كفاءة ودقة.
</p>

<h3 id="8">
	8. هندسة المميزات Feature Engineering
</h3>

<p>
	يساعد ChatGPT في تحسين ميزات البيانات المستخدمة في تعلم الآلة. وتحسين الميزات يعني تحسين جودة وكفاءة البيانات التي تستخدمها النماذج لتحقيق نتائج أفضل. فعندما تمتلك نموذج للتعلم الآلي مع بيانات مختلفة يستطيع ChatGPT مساعدتك لدرجة كبيرة وتحسين الأداء. لذا تساعد هندسة المميزات التي يقدمها ChatGPT في تقليل أخطاء مجموعات البيانات وتحسين أداء النموذج وزيادة دقته وموثوقيته.
</p>

<h3 id="9">
	9. توليد الكود البديل
</h3>

<p>
	هذه الميزة مخصصة لمطوري ووردبريس الذين يرغبون في إنتاج كود بديل يعمل على تحسين الأداء إذ يمكن للمطور أن يأخذ أي جزء من الكود القديم ثم يطلب من ChatGPT اقتراح تحسينات على هذا الكود، وربما تكون أحد التحسينات المقترحة هي الحد من استخدام الذاكرة أو ربما تخفيض عدد العمليات الحسابية أو المنطقية في الكود.
</p>

<p>
	على سبيل المثال طلبنا من ChatGPT إنشاء كود بديل للكود الموضح بالصورة التالية:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="150902" href="https://academy.hsoub.com/uploads/monthly_2024_06/alternativecode.png.8a8d9a55ae2e986c2fa9aa106c35a392.png" rel=""><img alt="alternative code" class="ipsImage ipsImage_thumbnailed" data-fileid="150902" data-unique="42u1zobzz" style="width: 500px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2024_06/alternativecode.png.8a8d9a55ae2e986c2fa9aa106c35a392.png"> </a>
</p>

<p>
	فكان جوابه أن قدم لنا الكود الموضح بالصورة التالية:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="150894" href="https://academy.hsoub.com/uploads/monthly_2024_06/alternativecode1.png.76f3c625bd7a2b9dc3560a544534e9c7.png" rel=""><img alt="alternative code1" class="ipsImage ipsImage_thumbnailed" data-fileid="150894" data-unique="25aimoktm" style="width: 600px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2024_06/alternativecode1.png.76f3c625bd7a2b9dc3560a544534e9c7.png"> </a>
</p>

<p>
	ملاحظة: هذا جزء من الكود فقط
</p>

<p>
	ثم قدم الشرح التالي:
</p>

<blockquote class="ipsQuote" data-gramm="false" data-ipsquote="">
	<div class="ipsQuote_citation">
		اقتباس
	</div>

	<div class="ipsQuote_contents ipsClearfix" data-gramm="false">
		<p>
			في هذا التطبيق يمتلك الصنف <code>Client</code> متحول خاص يدعى <code>service</code> ومتحول خاص يدعى <code>name</code> يمكن الوصول إليه من خلال التابع <code>()getName</code> والتابع <code>()setName</code>. كما يهيئ التابع <code>()setName</code> اسم الكائن <code>Service</code> ويمتلك الصنف <code>Service</code> متحولًا خاصًا اسمه <code>name</code> يمكن الوصول إليه أيضاً من خلال التابعين <code>()getName</code> و <code>()setName</code>.
		</p>
	</div>
</blockquote>

<h3 id="10">
	10. تطوير عملية النمذجة ونشرها
</h3>

<p>
	يستطيع ChatGPT المساعدة في عملية إعداد البيانات النصية وتنظيفها، مما يؤدي إلى تحسين أداء النموذج وجعله ينشئ نصًا يشبه النص الذي ينتجه الإنسان، ويمكن استخدام هذا النص لمحاكاة عملية الاتصال بين الإنسان والحاسوب، وهذا مفيد جدًا عندما نريد تطوير أنظمة محادثة خاصة بالذكاء الاصطناعي مثل نظام رد آلي chatbot.
</p>

<p>
	كما يستطيع ChatGPT إنشاء شروحات باللغة الطبيعية لتنبؤات النموذج وهذا يساعد النموذج ليشرح الأمور بسهولة أكبر. ويمتلك ChatGPT قوة كبيرة لتوليد نص باللغة الطبيعية البشرية والتي تفيد في سياق العمل والتواصل مع الآخرين.
</p>

<h3 id="11">
	11. عمليات البحث
</h3>

<p>
	ستحتاج كمطور ووردبريس لبعض الأسئلة خاصة أسئلة البرمجة المعقدة وسيكون ChatGPT خير صديق لك في هذا المجال من خلال تقديم الإجابات على جميع أسئلتك حيث يمكنك استخدام ChatGPT كمحرك بحث حيث بإمكانك أن تطرح عليه الأسئلة المعقدة وأن تحصل منه على إجابات دقيقة بسرعة وسهولة بدلاً من البحث في العديد من المصادر كما أنه يقدم لك أمثلة تحتوي على تعليمات برمجية مع إجاباته حتى تتمكن من معرفة فيما إذا كانت تلك الإجابات كافية أم لا.
</p>

<p>
	على سبيل المثال طلبنا من ChatGPT إنشاء مكتبة تضيف ميزة منبثقة pop-up لموقع الويب فكان جوابه كما يلي:
</p>

<blockquote class="ipsQuote" data-gramm="false" data-ipsquote="">
	<div class="ipsQuote_citation">
		اقتباس
	</div>

	<div class="ipsQuote_contents ipsClearfix" data-gramm="false">
		<p>
			بالطبع أستطيع مساعدتك في ذلك،لكني كنموذج ذكاء اصطناعي خاص باللغة لا أستطيع توليد مكتبة تعمل بشكل كامل لكن أستطيع أن أعطيك بعض الإرشادات وبعض المقاطع البرمجية الصغيرة التي تساعدك في البداية.لإضافة ميزة منبثقة لموقع الويب الخاص بك تستطيع أن تستخدم لغة البرمجة <code>JavaScript</code> أو لغة البرمجة <code>JQuery</code> وهنا سأقوم بإرشادك خطوة بخطوة لتقوم بذلك. ستحتاج بداية إلى وجود مكتبة <code>JQuery</code> ضمن كود <code>HTML</code> لتستطيع استخدام <code>JQuery</code> وبإمكانك إضافة هذه المكتبة للقسم <code>&lt;head&gt;</code> ضمن ملف <code>HTML</code>.
		</p>
	</div>
</blockquote>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="150899" href="https://academy.hsoub.com/uploads/monthly_2024_06/generatelibrary.png.d5584ba63400cd7fb45c689bd704259f.png" rel=""><img alt="generate library" class="ipsImage ipsImage_thumbnailed" data-fileid="150899" data-unique="1bibdetpd" src="https://academy.hsoub.com/uploads/monthly_2024_06/generatelibrary.thumb.png.d30ac62f4d603b0dc1b35dcb73c3953a.png"> </a>
</p>

<p>
	ملاحظة: هذا جزء فقط من الإجابة التي قدمها ChatGPT لتوضيح الفكرة.
</p>

<p>
	وختامًا نذكرك أن الذكاء الاصطناعي ليس دقيقاً دائماً بنسبة 100% إلا أن بإمكانه في أغلب الأحيان توفير معلومات مفيدة ودقيقة فيما يتعلق بأسئلة البرمجة والتطوير، لذا من الضروي أن تتحقق دومًا من دقة وصحة الإجابات التي يوفرها لك، وهذا يقودنا إلى الأسئلة التالية.
</p>

<h2 id="ghatgpt-1">
	هل يمكننا الوثوق بأجوبة ChatGPT؟
</h2>

<p>
	يجب أن نعلم كمطورين ووردبريس أن ChatGPT أداة قوية ومفيدة ولكن يوجد فيها بعض العيوب التي يجب علينا فهمها والدراية بها وأولها أن ChatGPT ليس دقيقًا دائماً فهو يعتمد على الأسئلة الموجهة له فعندما تكون الأسئلة غير منطقية ستكون الإجابات غير منطقية كذلك!
</p>

<p>
	وتتكون بيانات التدريب الخاصة بالنموذج من مجموعة واسعة من المحتوى المكتوب من قبل البشر وبالتالي يمكن أن تكون أجوبة ChatGPT أحياناً غير دقيقة وغير موضوعية حسب المحتوى المكتوب وبمعنى آخر الدخل الخاطئ يؤدي إلى نتائج خاطئة.
</p>

<p>
	باختصار يجب توخي الحذر وعدم الوثوق بكل مخرجات أو أجوبة ChatGPT بشكل أعمى على أنها صحيحة والجيد في الأمر أنه يخضع لتحسينات مستمرة ليصل إلى مرحلة توفير إجابات دقيقة، ومع ذلك يمكنه حاليًا أن يقدم تصورات معينة تفيد المطورين ككل، ومطوري ووردبريس على وجه الخصوص.
</p>

<p>
	فلا يجب عليك كمطور الاعتماد على ChatGPT لكتابة الأكواد البرمجية بشكل كامل بالطبع، ولكن يمكنك الاستفادة منها في تسريع إنجاز بعض الأمور التي يتطلبها المشروع الذي تقوم به.
</p>

<h2 id="">
	لماذا نستخدم الذكاء الاصطناعي؟
</h2>

<p>
	مع استمرار تقدم تقنيات الذكاء الاصطناعي وأبرزها ChatGPT، بات من المهم جدًا البقاء على اطلاع كامل بالتغيرات المتسارعة التي تحصل في هذه التقنيات وهذا سيساعدك في فهم فوائد استخدام الذكاء الاصطناعي، واتخاذ القرارات المناسبة التي تخدم مسيرة عملك كمطور.
</p>

<p>
	ويمكن أن يكون ChatGPT أداة قيمة لمطوري ووردبريس (على الرغم من أنها ليست مثالية) من خلال الاستفادة من إمكانياتها المشروحة سابقًا لتوفير الوقت والتركيز على الجوانب الأخرى في بيئة تطوير ووردبريس الخاصة بك.
</p>

<p>
	في النهاية لا داعي للقلق بشأن استبدال الذكاء الاصطناعي لوظيفتك، على العكس يجب عليك اعتباره تقنية مفيدة لك تساعدك في عملك عند استخدامها بشكل جيد الأمر الذي يؤدي إلى زيادة إنتاجيتك، وخفض التكاليف، وتوفير الوقت، وضمان إنشاء تطبيقات ووردبريس عالية الجودة. نتمنى لكم الاستفادة الجيدة من هذا المقال، وفي حال كان لديك أي تساؤل حول ما ورد في المقال يمكن تركه في قسم التعليقات أسفل المقال أو كتابته في <a href="https://academy.hsoub.com/questions/" rel="">قسم الأسئلة والأجوبة</a> في الأكاديمية.
</p>

<p>
	ترجمة وبتصرف للمقال <a href="https://wpmudev.com/blog/wordpress-development-chatgpt/" rel="external nofollow">11Ways ChatGPT Can Help You As a WordPress Developer</a> لكاتبيه N. Fakes &amp; Martin Aranovitch
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
	<li>
		<a href="https://academy.hsoub.com/apps/web/%D8%AF%D9%84%D9%8A%D9%84-%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-chatgpt-api-%D9%84%D8%AA%D8%AD%D8%B3%D9%8A%D9%86-%D8%AE%D8%AF%D9%85%D8%A7%D8%AA%D9%83-%D8%B9%D8%A8%D8%B1-%D8%A7%D9%84%D8%A5%D9%86%D8%AA%D8%B1%D9%86%D8%AA-r909/" rel="">دليل استخدام ChatGPT <abbr title="Application Programming Interface | واجهة برمجية"><abbr title="Application Programming Interface | واجهة برمجية">API</abbr></abbr> لتحسين خدماتك عبر الإنترنت</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/javascript/nodejs/%D8%AA%D8%B7%D9%88%D9%8A%D8%B1-%D8%AA%D8%B7%D8%A8%D9%8A%D9%82-%D8%A7%D8%AE%D8%AA%D8%A8%D8%B1%D9%86%D9%8A-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-chatgpt-%D9%88%D9%84%D8%BA%D8%A9-%D8%AC%D8%A7%D9%81%D8%A7%D8%B3%D9%83%D8%B1%D8%A8%D8%AA-%D9%85%D8%B9-nodejs-r2018/" rel="">تطوير تطبيق 'اختبرني' باستخدام ChatGPT ولغة جافاسكربت مع Node.js</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/python/%D8%A8%D9%86%D8%A7%D8%A1-%D8%AA%D8%B7%D8%A8%D9%8A%D9%82-%D8%A8%D8%A7%D9%8A%D8%AB%D9%88%D9%86-%D9%8A%D8%AC%D9%8A%D8%A8-%D8%B9%D9%84%D9%89-%D8%A3%D8%B3%D8%A6%D9%84%D8%A9-%D9%85%D9%84%D9%81-pdf-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-r2265/" rel="">بناء تطبيق بايثون يجيب على أسئلة ملف PDF باستخدام الذكاء الاصطناعي</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/apps/general/%D8%AA%D8%AF%D8%B1%D9%8A%D8%A8-%D8%A8%D9%88%D8%AA-%D8%A7%D9%84%D9%85%D8%AD%D8%A7%D8%AF%D8%AB%D8%A9-chatgpt-%D9%88%D8%AA%D8%B9%D9%84%D9%8A%D9%85%D9%87-%D9%83%D9%8A%D9%81-%D9%8A%D8%AA%D8%AD%D8%AF%D8%AB-%D9%88%D9%8A%D8%AA%D8%B9%D9%84%D9%85-r897/" rel="">تدريب بوت المحادثة ChatGPT وتعليمه كيف يتحدث ويتعلم</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">2342</guid><pubDate>Tue, 11 Jun 2024 15:05:00 +0000</pubDate></item><item><title>&#x623;&#x647;&#x645; &#x623;&#x62F;&#x648;&#x627;&#x62A; &#x628;&#x646;&#x627;&#x621; &#x62A;&#x637;&#x628;&#x64A;&#x642;&#x627;&#x62A; &#x648;&#x648;&#x631;&#x62F;&#x628;&#x631;&#x633; &#x62F;&#x648;&#x646; &#x631;&#x623;&#x633; Headless WordPress</title><link>https://academy.hsoub.com/programming/php/wordpress/%D8%A3%D9%87%D9%85-%D8%A3%D8%AF%D9%88%D8%A7%D8%AA-%D8%A8%D9%86%D8%A7%D8%A1-%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D8%B3-%D8%AF%D9%88%D9%86-%D8%B1%D8%A3%D8%B3-headless-wordpress-r2338/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2024_06/------Headless-WordPress--REST-API.png.4b41e4a526f8a47fd57b96f84abfc2bf.png" /></p>
<p>
	يستخدم كل من ووردبريس بدون رأس Headless WordPress وواجهات برمجة التطبيقات REST <abbr title="Application Programming Interface | واجهة برمجية"><abbr title="Application Programming Interface | واجهة برمجية">API</abbr></abbr> ضمن بيئة تطوير ووردبريس بشكل كبير مؤخرًا، ويحتاج المطورون لامتلاك مجموعة من الأدوات القياسية التي يرغبون في استخدامها عند العمل على هذه النوع من المشاريع. سسنشرح في مقال اليوم طريقة التعامل مع مفهوم ووردبريس مقطوع الرأس (بلا رأس) باستخدام مجموعة من الأدوات وعلى الرغم أننا لا نؤكد أن مجموعة الأدوات التي سنستخدمها ينبغي أن تكون قياسية إلا أننا نرى أن هذه الادوات ستكون مناسبة للاستخدام عند بناء تطبيقاتنا باستخدام REST <abbr title="Application Programming Interface | واجهة برمجية"><abbr title="Application Programming Interface | واجهة برمجية">API</abbr></abbr>، وهذه الأدوات هي :
</p>

<ul>
	<li>
		MailHog: وهي أداة اختبار SMTP تعتمد على الويب وواجهة برمجة التطبيقات.
	</li>
	<li>
		Insomnia: هو عميل REST قوي متعدد الأنظمة يستخدم لاختبار واجهات برمجة التطبيقات.
	</li>
	<li>
		JWT Auth: هي أداة شائعة الاستخدام لتأمين واجهات برمجة التطبيقات.
	</li>
</ul>

<h2 id="headlesswordpressrestapi-1">
	تطبيقات ووردبرس بدون رأس Headless WordPress باستخدام REST <abbr title="Application Programming Interface | واجهة برمجية"><abbr title="Application Programming Interface | واجهة برمجية">API</abbr></abbr>
</h2>

<p>
	لنتعرف في الفقرات التالية على أهم المتطلبات والخطوات التي تحتاجها لتطور تطبيقات ووردبريس بدون رأس مع توضيح حالات الاستخدام المفيدة لهذا النوع من التطبيقات.
</p>

<h3 id="">
	المتطلبات
</h3>

<p>
	قبل النظر في استخدام هذه الأدوات في بناء مشروع فعلي يجب عليك تجهيز الحاسوب الذي سيستخدم هذه الأدوات. وعلى الرغم من أنك لن تقوم بذلك في مشاريع التطوير الفعلية لكن تجهيز بيئة تطوير محلية يفيدك في مرحلة التعلم واختبار التطبيق وإليك قائمة بأهم الأدوات التي ستحتاجها:
</p>

<ul>
	<li>
		خادم ويب يدعم لارافيل مثل Valet
	</li>
	<li>
		نظام إدارة قواعد البيانات مثل MariaDB
	</li>
	<li>
		لغة البرمجة PHP (أي إصدار أعلى من 7.4.33 حسب نوع الخادم الذي تشغل المشروع عليه) ولمزيد من المعلومات حول إعداد بيئة تطوير محلية يمكنك الاطلاع على مقال <a href="https://academy.hsoub.com/programming/php/laravel/%D8%AA%D8%AB%D8%A8%D9%8A%D8%AA-%D9%88%D8%B6%D8%A8%D8%B7-%D8%AA%D8%B7%D8%A8%D9%8A%D9%82-%D9%84%D8%A7%D8%B1%D8%A7%D9%81%D9%8A%D9%84-%D9%85%D8%B9-%D8%AE%D8%A7%D8%AF%D9%85-nginx-%D8%B9%D9%84%D9%89-%D8%AD%D8%B2%D9%85%D8%A9-lemp-%D9%85%D9%86-%D8%A3%D9%88%D8%A8%D9%86%D8%AA%D9%88-r1968/" rel="">تثبيت وضبط تطبيق لارافيل مع خادم Nginx على حزمة LEMP من أوبنتو</a> ومقال <a href="https://academy.hsoub.com/devops/servers/%D8%AF%D9%84%D9%8A%D9%84-%D8%A5%D8%B9%D8%AF%D8%A7%D8%AF-%D8%AE%D8%A7%D8%AF%D9%85-%D9%88%D9%8A%D8%A8-%D9%85%D8%AD%D9%84%D9%8A-%D8%AE%D8%B7%D9%88%D8%A9-%D8%A8%D8%AE%D8%B7%D9%88%D8%A9-r422/" rel="">دليل إعداد خادم ويب محلي خطوة بخطوة</a>
	</li>
</ul>

<p>
	سنستخدم أيضاً الأدوات التالية بالنسبة لبيئة التطوير الخاصة بنا:
</p>

<ul>
	<li>
		Visual Studio Code Insiders: لتحرير الأكواد.
	</li>
	<li>
		PHPDoc Comment: لتوثيق الأكواد.
	</li>
	<li>
		PHP Sniffer &amp; Beautifier مع PSR12: لتحليل وتنسيق كود PHP والتأكد من مطابقته للمعايير والقواعد البرمجية.
	</li>
	<li>
		PHP Debug: لمراقبة تطبيقات PHP وتتبع أخطائها.
	</li>
	<li>
		Ray: أداة تسهل تصحيح الأخطاء البرمجية. عملياً إذا كنت على معرفة بكل الأدوات والتقنيات السابقة وكان لديك الإعدادات الخاصة بك أو كنت معتاد على بناء التطبيقات أو الحلول باستخدام ووردبرس فقد يكون كل ما سبق لا يعنيك. وإلا يجب عليك أن تأخذ بعض الوقت لتتعرف على كل ما ورد أعلاه.
	</li>
</ul>

<h3 id="-1">
	دراسة حالة بسيطة:
</h3>

<p>
	بفرض طلب منك تطوير تطبيق ووردبرس بدون رأس Headless WordPress يوفر نقاط نهاية مخصصة endpoints ويمكن لتطبيق iOS الاتصال بها لتسجيل الدخول والقيام بالاستيثاق أو التأكد من صحة البيانات وإرسال واستقبال البيانات. سيقدم تطبيق ووردبريس الوظائف التالية بالتحديد:
</p>

<ol>
	<li>
		إنشاء حساب جديد للمستخدم.
	</li>
	<li>
		الحصول على معلومات المستخدم.
	</li>
	<li>
		طلب مفتاح التشفير المساعد token.
	</li>
	<li>
		التحقق من المفتاح المساعد token.
	</li>
	<li>
		ضبط بيانات المستخدم. إن هذه البنود ليست كاملة ولكنها كافية لتوضيح طريقة استخدام الأدوات المختلفة في بناء تطبيقات مماثلة.كما أن الوظائف المذكورة في التطبيق يمكنها أن توفر عبر نقاط الوصول endpoints التالية:
	</li>
	<li>
		<code>/acme/v1/getUser</code>
	</li>
	<li>
		<code>/acme/v1/createUser</code>
	</li>
	<li>
		<code>/jwt-auth/v1/token</code>
	</li>
	<li>
		<code>/jwt-auth/v1/token/validate</code>
	</li>
	<li>
		<code>/acme/v1/setData</code>
	</li>
</ol>

<p>
	<strong>ملاحظة</strong>: إن <code>acme</code> هنا عبارة عن قيمة مؤقتة placeholder تعبر عن اسم التطبيق. أما jwt-auth فهو اسم المكتبة الخاصة بعملية المصادقة (اسم المستخدم وكلمة المرور) التي نقوم باستخدامها وهذا ما سيتم مناقشته لاحقاً في هذه المقالة
</p>

<h3 id="api">
	توثيق واجهة برمجة التطبيقات <abbr title="Application Programming Interface | واجهة برمجية"><abbr title="Application Programming Interface | واجهة برمجية">API</abbr></abbr>:
</h3>

<p>
	يعد توثيق واجهة برمجة التطبيقات <abbr title="Application Programming Interface | واجهة برمجية"><abbr title="Application Programming Interface | واجهة برمجية">API</abbr></abbr> شرطاً أساسياً من شروط نجاحها، وبما أننا نعمل على إنجاز تطبيق بدون رأس Headless فمن المهم جداً تنفيذ واجهة جميلة موثقة جيدًا للتطبيق، وسننفذ واجهة تطبيقنا باستخدام REST <abbr title="Application Programming Interface | واجهة برمجية"><abbr title="Application Programming Interface | واجهة برمجية">API</abbr></abbr> ليتفاعل معها المستخدمون. لكن واجهة برمجة التطبيق <abbr title="Application Programming Interface | واجهة برمجية"><abbr title="Application Programming Interface | واجهة برمجية">API</abbr></abbr> لا ينبغي أن تكون كصندوق أسود نتفاعل معها دون الاهتمام بتوثيقها وتوضيح تفاصيلها الداخلية إذ يحتاج المطور لمعرفة رأي المستخدمين في التطبيق الذي أنشأه فربما يكتشف المستخدمون بعض الثغرات التي تجاهلها المطور عند بناء التطبيق. وهناك أسباب أخرى تدعونا إلى توثيق واجهة برمجة التطبيقات APIs حتى لو لم يكن التطبيق متداول على نطاق واسع. وهذه الأسباب هي:
</p>

<ul>
	<li>
		الاتصال الجيد بين نقاط الوصول والوسطاء والخرج المتوقع.
	</li>
	<li>
		سهولة تواصل المطورين الجدد مع الواجهة.
	</li>
	<li>
		سهولة العودة لتصحيح الأخطاء في حال ظهورها في التطبيق المقدم للعميل.
	</li>
	<li>
		وجود عدة إصدارات من واجهة برمجة التطبيق <abbr title="Application Programming Interface | واجهة برمجية"><abbr title="Application Programming Interface | واجهة برمجية">API</abbr></abbr> يمنح للمطورين المرونة باختيار الإصدار المناسب لتطبيقاتهم ومعرفة المميزات الموجودة في كل إصدار. لذا من المفيد أن تأخذ هذه الأسباب بعين الاعتبار عندما تقوم بإنشاء وتنفيذ أي تطبيق في المستقبل.
	</li>
</ul>

<h3 id="mailhog">
	الأداة MailHog
</h3>

<p>
	إذا قمت سابقاً بتثبيت برنامج ووردبريس فمن المؤكد أنك رأيت كمية رسائل البريد الإلكتروني المرسلة لك وذلك إما عبر واجهة التطبيق أو عبر <a href="https://academy.hsoub.com/devops/servers/%D9%85%D8%A7-%D9%87%D9%88-%D8%B3%D8%B7%D8%B1-%D8%A7%D9%84%D8%A3%D9%88%D8%A7%D9%85%D8%B1-%D8%9F-r353/" rel="">واجهة سطر الأوامر </a>Command Line Interface فعندما تعمل في بيئة التطوير الخاصة بك سيكون هناك اختلاف بسيط في التعامل وإدارة رسائل البريد الإلكتروني (سواء في طريقة استلامها أو تخصيصها) وهنا يمكنك استخدام تقنية MailHog وهي عبارة عن تطبيق ويب مفيد جداً عندما تصل إلى مراحل متقدمة في تطوير واختبار مشروعك حيث تقوم هذه التقنية بدور خادم SMTP وهمي وتقوم بشكل أساسي بدور خادم بريد إلكتروني وهمي لمساعدتك في اختبار وظائف البريد الإلكتروني وتصحيح الأخطاء.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="150590" href="https://academy.hsoub.com/uploads/monthly_2024_06/mailhog.png.0b0d5b5ca4fa0992ae85ea4b44a6ee19.png" rel=""><img alt="mailhog.png" class="ipsImage ipsImage_thumbnailed" data-fileid="150590" data-ratio="96.93" data-unique="1uvouy57m" width="619" src="https://academy.hsoub.com/uploads/monthly_2024_06/mailhog.thumb.png.e948f41da0e35df1e8f8e7311a59b7f5.png"></a>
</p>

<p>
	تقوم الأداة MailHog بشكل أساسي باعتراض وفحص رسائل البريد الإلكتروني الصادرة من تطبيقك بدلاً من إرسالها بشكل مباشر إلى المستلمين الحقيقيين ثم تقدم هذه الرسائل عبر واجهة التطبيق، وهذا يسهل قراءة وتحليل ومراجعة الرسائل الصادرة من ووردبريس. إذ تسمح لك هذه الأداة بإلقاء نظرة كاملة على رسائل البريد الإلكتروني وهذا يتضمن:
</p>

<ul>
	<li>
		الموضوع (عنوان الرسالة)
	</li>
	<li>
		المرسل
	</li>
	<li>
		المستقبل (مستلم الرسالة)
	</li>
	<li>
		الرسالة (نص الرسالة)
	</li>
</ul>

<p>
	كما تسهل هذه الأداة وظائف البريد الإلكتروني من خلال التأكد من تنسيق رسائل البريد الإلكتروني وتسليمها بشكل صحيح. وعلى الرغم من أن هذه الأداة تعد مفيدة نوعاً ما عند العمل ضمن برنامج ووردبريس إلا أنه يجب الأخذ بعين الاعتبار معرفة كيفية استجابة التطبيق عندما نستخدم بيئة ووردبريس بدون رأس Headless WordPress فكل الأوامر تشغل من خلال نقاط الوصول الخاصة بواجهة برمجة التطبيق <abbr title="Application Programming Interface | واجهة برمجية"><abbr title="Application Programming Interface | واجهة برمجية">API</abbr></abbr>
</p>

<h3 id="insomnia">
	الأداة Insomnia
</h3>

<p>
	الأداة Insomnia هي تطبيق عميل <abbr title="Application Programming Interface | واجهة برمجية"><abbr title="Application Programming Interface | واجهة برمجية">API</abbr></abbr> مفتوح المصدر متوافق مع مختلف الأنظمة، لكن إذا كنت معتادًا على التعامل مع تطبيقات REST <abbr title="Application Programming Interface | واجهة برمجية"><abbr title="Application Programming Interface | واجهة برمجية">API</abbr></abbr> مثل تطبيق Postman أو تطبيق Paw (المسمى حالياً RapidAPI) فإنك لن تكون مهتماً بالعمل على هذه التقنية بالرغم من أنها أبسط نوعاً ما من التطبيقات المذكورة أعلاه
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="150588" href="https://academy.hsoub.com/uploads/monthly_2024_06/insimnia.png.3d328d34173f208e4cc3b9467faeeef6.png" rel=""><img alt="insimnia.png" class="ipsImage ipsImage_thumbnailed" data-fileid="150588" data-ratio="96.93" data-unique="71ohdx1kc" width="619" src="https://academy.hsoub.com/uploads/monthly_2024_06/insimnia.thumb.png.66a3730249b6f7bf1edf6185cc5fd6dc.png"></a>
</p>

<p>
	بالنسبة للمطورين الذين لا يعملون على البرامج المذكورة أعلاه فإن هدفهم الأول هو تبسيط عملية التفاعل مع واجهة برمجة التطبيق REST <abbr title="Application Programming Interface | واجهة برمجية"><abbr title="Application Programming Interface | واجهة برمجية">API</abbr></abbr> واختبارها. تنشئ الأداة Insomnia طلبات بروتوكول <a href="https://academy.hsoub.com/programming/general/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-http-r73/" rel="">HTTP</a> وتحللها وترسلها إلى نقاط وصول واجهة برمجة التطبيق <abbr title="Application Programming Interface | واجهة برمجية"><abbr title="Application Programming Interface | واجهة برمجية">API</abbr></abbr> باستخدام الأوامر <code>GET</code> و <code>POST</code> و <code>PUT</code> و <code>DELETE</code> القياسية وتجعل التعامل معها أكثر سهولة.
</p>

<p>
	كما أنها تسهل التعامل مع ملفات JSON, XML وبيانات النماذج أو الاستمارات forms. وإن كان هذا الأمر غير مهم عند إنشاء التطبيقات لأنه يمكنك التحكم بنوع ملفات الخرج التي سيتم استرجاعها ولكنه أساسي عندما تتعامل <abbr title="Application Programming Interface | واجهة برمجية"><abbr title="Application Programming Interface | واجهة برمجية">API</abbr></abbr> آخر لأن تحتاج لتغيير تنسيق البيانات قبل إرسالها أو استقبالها.
</p>

<p>
	ومن أهم ميزات هذه الأداة هي قدرتها على تنظيم الطلبات requests في مجلدات ومساحات عمل workspaces وهذا يسمح للمطورين بتنظيم وإدارة مشاريع اختبار واجهة برمجة التطبيق <abbr title="Application Programming Interface | واجهة برمجية"><abbr title="Application Programming Interface | واجهة برمجية">API</abbr></abbr> الخاصة بهم ويسهل عملية التنقل والتبديل بين نقاط الوصول المختلفة. بالإضافة إلى ذلك فإن الطريقة التي يسمح لنا التطبيق بها في هذه الأداة بتوثيق وتنظيم كل نقطة وصول تجعل عملية مشاركة التطبيق مع المطورين الآخرين أسهل وبالتالي يمكنهم اختبار التطبيق على تطبيق واجهة برمجية <abbr title="Application Programming Interface | واجهة برمجية"><abbr title="Application Programming Interface | واجهة برمجية">API</abbr></abbr> آخر على سبيل المثال بمجرد إنشاء REST <abbr title="Application Programming Interface | واجهة برمجية"><abbr title="Application Programming Interface | واجهة برمجية">API</abbr></abbr> لموقع مبني بواسطة ووردبريس يمكنك مشاركته بواسطة الأداة Insomnia مع مطوري تطبيقات iOS ليتمكنوا من معرفة ما يلي:
</p>

<ul>
	<li>
		بنية نقطة الوصول
	</li>
	<li>
		الوسطاء المتوقعة
	</li>
	<li>
		الخرج الذي سيعيده التطبيق
	</li>
	<li>
		توثيق كل نقطة وصول في حال حدوث خطأ غير متوقع أخيراً فإن هذا النوع من الأدوات يسهل بناء وتطوير التطبيقات عند العمل مع مطورين يعملون على تطبيقات أخرى
	</li>
</ul>

<h3 id="jwtauth">
	الأداة JWT-Auth
</h3>

<p>
	قبل البدء في معرفة أهمية الأداة JWT-Auth فإنه من المفيد جداً معرفة ما هي JWT ومدى فائدتها في تطوير واجهة برمجة التطبيقات REST <abbr title="Application Programming Interface | واجهة برمجية"><abbr title="Application Programming Interface | واجهة برمجية">API</abbr></abbr> بشكل عام يمكن تعريف JWT على أنه طريقة آمنة لنقل المعلومات بين المطورين بصيغة JSON وبعبارة أبسط هي عبارة عن آلية مصادقة معتمدة على المفتاح المساعد token وتستخدم بشكل كبير في تطبيقات الويب ملاحظة: على الرغم من صحة ما سبق فإنك إن لم تكن على دراية بآلية عمل مصادقة REST <abbr title="Application Programming Interface | واجهة برمجية"><abbr title="Application Programming Interface | واجهة برمجية">API</abbr></abbr> لن تستطيع بناء المصادقة التي تحتاج إليها. عند إجراء مقارنة بين طريقة تفاعلنا مع الووردبريس من خلال المتصفح، وطريقة تفاعلنا مع الوورد بريس من خلال JWT فإنه يجب الانتباه إلى النقاط التالية:
</p>

<ul>
	<li>
		أولا نقوم بإرسال بيانات الاستيثاق (اسم المستخدم وكلمة السر) إلى المتصفح ومن ثم يطابق التطبيق تلك البيانات ويرسلها إلى المتصفح وبعد ذلك نكون قادرين على العمل والتنقل ضمن الوورد بريس (إدارة المستخدمين - كتابة وتحرير المنشورات وما إلى ذلك وأحياناً يكون عبارة عن مراجعة للمنشورات فقط) وهذه الأمور تتم فقط من خلال مدير نظام ووردبريس.
	</li>
	<li>
		أما عندما تتم المصادقة عبر واجهة برمجة التطبيقات REST APIs فيجب أن يكون هناك طريقة أخرى للمصادقة يستطيع التطبيق من خلالها معرفة بيانات استيثاق المستخدم وهنا يأتي دور المفتاح المساعد token حيث ستقوم آلية المصادقة المعتمدة على JWT بإنشاء مفتاح مساعد token ثم تقوم بتضمين هذا المفتاح المساعد token مع كل طلب وفي انتهاء صلاحية المفتاح المساعد token ستقوم واجهة برمجة التطبيق <abbr title="Application Programming Interface | واجهة برمجية"><abbr title="Application Programming Interface | واجهة برمجية">API</abbr></abbr> بإعلامك من أجل أن تقوم بتحديث المفتاح المساعد token من الواضح بأنك بحاجة إلى عمل كثير عند تطبيق JWT في ووردبريس ولكن عند استخدام إضافة JWT-Auth فإن ستصبح الأمور أسهل بكثير.
	</li>
</ul>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="150589" href="https://academy.hsoub.com/uploads/monthly_2024_06/jwt-auth.png.f139933c61aae8028f0004fb251e35e1.png" rel=""><img alt="jwt-auth.png" class="ipsImage ipsImage_thumbnailed" data-fileid="150589" data-ratio="96.93" data-unique="zihqegaci" width="619" src="https://academy.hsoub.com/uploads/monthly_2024_06/jwt-auth.thumb.png.5701a33831b06e7833c825e8a1895bfc.png"></a>
</p>

<p>
	وكما توضح الصورة أعلاه المأخوذة من توثيق الإضافة فإن استيثاق ووردبريس باستخدام JSON Web Token يسمح بإجراء مصادقة واجهة REST <abbr title="Application Programming Interface | واجهة برمجية"><abbr title="Application Programming Interface | واجهة برمجية">API</abbr></abbr> باستخدام المفتاح المساعد token وهي عملية بسيطة وغير معقدة وسهلة الاستخدام وهذه الإضافة مناسبة جداًَ لعمل مصادقة JWT ضمن ووردبريس.
</p>

<p>
	وللتعامل معها عليك القيام بما يلي:
</p>

<ol>
	<li>
		ضع مفتاح سري في الملف <code>wp-config.php</code>
	</li>
	<li>
		حدد فيما إذا كنت تريد من الإضافة أن تدعم خاصية CROS (وهو موضوع مهم إذا كنت تريد تمكين الاتصال الآمن بين تطبيقات الويب)
	</li>
	<li>
		بعد الانتهاء من تثبيت الإضافة يمكنك ان تقوم بعمل طلب request إلى <code>wp-json/jwt-auth/v1/token/</code> متضمنا اسم المستخدم وكلمة السر للحساب بتنسيق JSON كما في المثال التالي:
	</li>
</ol>

<pre class="ipsCode">{
  "username": "John@appleseed.com",
  "password": "kn6oLrcW0\/D1M"
}
</pre>

<p>
	وبعدها سوف تستقبل الرد التالي:
</p>

<pre class="ipsCode">{
  "success": true,
  "statusCode": 200,
  "code": "jwt_auth_valid_credential",
  "message": "Credential is valid",
  "data": {
    "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3NjYXJpZi50ZXN0IiwiaWF0IjoxNjg0MzU1MzA5LCJuYmYiOjE2ODQzNTUzMDksImV4cCI6MTY4NDk2MDEwOSwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoyNTksImRldmljZSI6IiIsInBhc3MiOiJiMWM3OTBhMmJhYzExNzNlYzI4ZTQxZGUxMDYyYzIwZiJ9fX0.q3-DRC_DQvezy1w-XV0CYNQYyKC3X8iSs7GKy86zjbg",
    "id": 259,
    "email": "John@appleseed.com",
    "nicename": "johnappleseed-com",
    "firstName": "John",
    "lastName": "Appleseed",
    "displayName": "John@appleseed.com"
}
</pre>

<p>
	وبعد ذلك ستقوم بتضمين المفتاح المساعد token مع كل طلب جديد، وإما أن يسمح لك الووردبريس مع إضافة JWT Auth بإرسال هذا الطلب request أو أن يمنعك من ذلك. هذا هو باختصار جوهر عمل الأداة JWT ضمن التطبيقات دون الرأس headless ولكن هذا ليس كل شيء إذ توفر هذه الأداة الكثير من المميزات الأخرى التي لن نتطرق لها حاليًا
</p>

<h2 id="-2">
	الخاتمة
</h2>

<p>
	تعرفنا في مقال اليوم على أهم الأدوات التي سنحتاجها لبناء تطبيقات ووردبريس بدون رأس Headless WordPress باستخدام واجهة برمجة التطبيق REST <abbr title="Application Programming Interface | واجهة برمجية"><abbr title="Application Programming Interface | واجهة برمجية">API</abbr></abbr> والتي يمكنك من خلالها الاستفادة من مرونة الووردبريس كنظام إدارة محتوى. نتمنى لكم الاستفادة الجيدة من هذا المقال وفي حال كان لديكم أي تساؤل حول ما ورد فيه فيمكن تركه في قسم التعليقات أسفل المقال أو كتابته في <a href="https://academy.hsoub.com/questions/" rel="">قسم الأسئلة والأجوبة</a> في أكاديمية حسوب.
</p>

<p>
	ترجمة وبتصرف للمقال <a href="https://tommcfarlin.com/headless-wordpress-applications-with-a-rest-api/" rel="external nofollow"> How To Build Headless WordPress Applications with a REST <abbr title="Application Programming Interface | واجهة برمجية"><abbr title="Application Programming Interface | واجهة برمجية">API</abbr></abbr></a> لكاتبه Tom McFarlin
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
	<li>
		<a href="https://academy.hsoub.com/programming/php/wordpress/%D9%85%D9%8F%D9%82%D8%AF%D9%91%D9%85%D8%A9-%D8%A5%D9%84%D9%89-%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D8%A5%D8%B6%D8%A7%D9%81%D8%A7%D8%AA-wordpress-r38/" rel="">مُقدّمة إلى برمجة إضافات Wordpress</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/php/wordpress/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D9%82%D9%88%D8%A7%D9%84%D8%A8-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r2017/" rel="">مدخل إلى برمجة قوالب ووردبريس</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/php/wordpress/%D8%A3%D9%81%D8%B6%D9%84-%D8%B7%D8%B1%D9%8A%D9%82%D8%A9-%D9%84%D9%84%D8%AA%D9%91%D8%B9%D8%AF%D9%8A%D9%84-%D8%B9%D9%84%D9%89-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-%D9%88%D8%A5%D8%B6%D8%A7%D9%81%D8%A9-%D9%86%D8%B5-%D8%A8%D8%B1%D9%85%D8%AC%D9%8A-%D8%A5%D9%84%D9%8A%D9%87-r109/" rel="">أفضل طريقة للتّعديل على ووردبريس وإضافة نص برمجي إليه</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/php/wordpress/%D8%A7%D8%B3%D8%AA%D9%82%D8%A8%D8%A7%D9%84-%D9%88%D8%AD%D9%81%D8%B8-%D8%AE%D9%8A%D8%A7%D8%B1%D8%A7%D8%AA-%D9%88%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA-%D8%A7%D9%84%D8%A5%D8%B6%D8%A7%D9%81%D8%A9-%D9%85%D9%86-%D8%AE%D9%84%D8%A7%D9%84-%D8%A7%D9%84%D8%AA%D8%B9%D8%A7%D9%85%D9%84-%D9%85%D8%B9-setting-api-%D9%88options-api-r43/" rel="">استقبال وحفظ خيارات الإضافة في ووردبريس من خلال التعامل مع Setting <abbr title="Application Programming Interface | واجهة برمجية"><abbr title="Application Programming Interface | واجهة برمجية">API</abbr></abbr> وOptions <abbr title="Application Programming Interface | واجهة برمجية"><abbr title="Application Programming Interface | واجهة برمجية">API</abbr></abbr></a>
	</li>
</ul>

<p>
	 
</p>
]]></description><guid isPermaLink="false">2338</guid><pubDate>Tue, 04 Jun 2024 15:00:00 +0000</pubDate></item><item><title>&#x625;&#x636;&#x627;&#x641;&#x629; &#x627;&#x644;&#x645;&#x645;&#x64A;&#x632;&#x627;&#x62A; &#x644;&#x642;&#x627;&#x644;&#x628; &#x648;&#x648;&#x631;&#x62F;&#x628;&#x631;&#x64A;&#x633; &#x628;&#x627;&#x633;&#x62A;&#x62E;&#x62F;&#x627;&#x645; &#x62C;&#x627;&#x641;&#x627; &#x633;&#x643;&#x631;&#x64A;&#x628;&#x62A;</title><link>https://academy.hsoub.com/programming/php/wordpress/%D8%A5%D8%B6%D8%A7%D9%81%D8%A9-%D8%A7%D9%84%D9%85%D9%85%D9%8A%D8%B2%D8%A7%D8%AA-%D9%84%D9%82%D8%A7%D9%84%D8%A8-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%AC%D8%A7%D9%81%D8%A7-%D8%B3%D9%83%D8%B1%D9%8A%D8%A8%D8%AA-r2035/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2023_07/---()----.png.914dda80f0cec8079caf01ad5aeb21a0.png" /></p>
<p>
	انتهينا في المقال السابق من <a href="https://academy.hsoub.com/programming/php/wordpress/%D8%A5%D8%B6%D8%A7%D9%81%D8%A9-%D8%AA%D9%86%D8%B3%D9%8A%D9%82%D8%A7%D8%AA-css-%D9%84%D9%82%D8%A7%D9%84%D8%A8-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r2032/" rel="">إضافة تنسيقات CSS إلى قالب ووردبريس</a> وفي مقال اليوم من سلسلة برمجة قوالب ووردبريس سنتعلم كيفية إضافة أكواد جافا سكريبت إلى قالبنا المخصص لتعزيزه بمميزات ووظائف إضافية وجعله أكثر ديناميكية.
</p>

<p>
	هذا المقال هو المقال الأخير من سلسلة المقالات التالية:
</p>

<ul>
	<li>
		<a href="https://academy.hsoub.com/programming/php/wordpress/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D9%82%D9%88%D8%A7%D9%84%D8%A8-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r2017/" rel="">مدخل إلى برمجة قوالب ووردبريس</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/php/wordpress/%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A7%D8%AA-%D8%AA%D8%B7%D9%88%D9%8A%D8%B1-%D9%82%D8%A7%D9%84%D8%A8-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r2027/" rel="">أساسيات تطوير قالب ووردبريس</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/php/wordpress/%D8%A5%D9%86%D8%B4%D8%A7%D8%A1-%D8%A7%D9%84%D9%85%D9%84%D9%81%D8%A7%D8%AA-%D8%A7%D9%84%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A9-%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D9%82%D8%A7%D9%84%D8%A8-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r2028/" rel="">إنشاء الملفات الأساسية لبرمجة قالب ووردبريس</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/php/wordpress/%D8%A5%D8%B6%D8%A7%D9%81%D8%A9-%D8%AA%D9%86%D8%B3%D9%8A%D9%82%D8%A7%D8%AA-css-%D9%84%D9%82%D8%A7%D9%84%D8%A8-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r2032/" rel="">إضافة تنسيقات CSS لقالب ووردبريس</a>
	</li>
	<li>
		<span ipsnoautolink="true">إضافة المميزات لقالب ووردبريس باستخدام جافا سكريبت</span>
	</li>
</ul>

<p>
	سنشرح اليوم ميزتين مهمتين، الأولى هي تحويل قائمة التنقل الرئيسية للقالب إلى قائمة ذات تصميم متجاوب ولتحقيق ذلك سنحولها إلى ما يعرف بقائمة الهمبرغر Hamburger Menu كي تناسب أحجام الشاشات الصغيرة وتسهل الانتقال السلس بين أقسام الموقع المختلفة عند تصفحه عن طريق الجوال. والميزة الثانية هي إضافة شريط صور منزلق Image Slider أعلى الصفحة الرئيسية للموقع ليعرض شرائح متحركة تضم العناوين والصور المصغرة لأشهر ثلاث مقالات في الموقع أو أكثر المقالات قراءة بشكل جذاب ومميز.
</p>

<p>
	فإذا كنت مهتمًا بتعلم الطريقة الصحيحة لإضافة مميزات إلى قالب ووردبريس الخاص بك من خلال لغة جافا سكريبت فتابع قراءة المقال للنهاية.
</p>

<h2>
	أولاً. ميزة عرض قائمة تنقل متجاوبة في قالب ووردبريس
</h2>

<p>
	أول ميزة نريد تحقيقها هي تحويل قائمة التنقل الرئيسية إلى قائمة ذات تصميم متجاوب <a href="https://academy.hsoub.com/design/user-experience/%D8%A7%D9%84%D8%AA%D8%B5%D9%85%D9%8A%D9%85-%D8%A7%D9%84%D9%85%D8%AA%D8%AC%D8%A7%D9%88%D8%A8-responsive-design-r751/" rel="">Responsive design</a> عند تغير حجم الشاشة حيث سنغير تصميم القائمة وطريقة عرض عناصرها بناءً على حجم شاشة العرض.
</p>

<p>
	فعندما يكون يكون حجم الشاشة كبيرًا تعرض عناصر القائمة بشكل أفقي بجانب بعضها البعض، وعندما يصبح عرض الشاشة صغيرًا (أصغر من أو يساوي 600 بكسل) ستختفي عناصر القائمة وتظهر على شكل ثلاث خطوط أفقية فوق بعضها البعض وهو ما يعرف بزر الهمبرغر Hamburger Button وسيؤدي النقر عليه إلى عرض عناصر القائمة بشكل عمودي كما هو موضح في الصورة التالية:
</p>

<p style="text-align: center;">
	<img alt="قائمة متجاوبة.png" class="ipsImage ipsImage_thumbnailed" data-fileid="131081" data-unique="a36351euu" style="width: 400px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2023_07/.thumb.png.c544713fe47cdfd824b91271174cc09e.png">
</p>

<p>
	لتحقيق هذه الميزة نحتاج للعمل على ثلاث ملفات الأول هو ملف ترويسة القالب <strong>header.php</strong> حيث سنضيف له الخطوة التالية هي أيقونة تمثل زر القائمة ثم سنربط حدث النقر فوق هذا الزر مع ربط دالة سنسميها hamFunction سنشرح وظيفتها بعد قليل.
</p>

<div class="banner-container ipsBox ipsPadding">
	<div class="inner-banner-container">
		<p class="banner-heading">
			دورة تطوير تطبيقات الويب باستخدام لغة PHP
		</p>

		<p class="banner-subtitle">
			احترف تطوير النظم الخلفية والووردبريس وتطبيقات الويب من الألف إلى الياء دون الحاجة لخبرة برمجية مسبقة
		</p>

		<div>
			<a class="ipsButton ipsButton_large ipsButton_primary ipsButton_important" href="https://academy.hsoub.com/learn/php-web-application-development/" rel="">اشترك الآن</a>
		</div>
	</div>

	<div class="banner-img">
		<img alt="دورة تطوير تطبيقات الويب باستخدام لغة PHP" src="https://academy.hsoub.com/learn/assets/images/courses/php-web-application-development.png">
	</div>
</div>

<p>
	<code>fa fa-bars</code> الذي يمثل أيقونة الهمبرغر وهي أحد أيقونات Font Awesome التي استوردناها لقالبنا في <a href="https://academy.hsoub.com/programming/php/wordpress/%D8%A5%D9%86%D8%B4%D8%A7%D8%A1-%D8%A7%D9%84%D9%85%D9%84%D9%81%D8%A7%D8%AA-%D8%A7%D9%84%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A9-%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D9%82%D8%A7%D9%84%D8%A8-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r2028/" rel="">مقال إنشاء الملفات الأساسية لبرمجة قالب ووردبريس</a> ضمن القسم <code>rtl-Primary-nav</code>، ستكون مخفية في الشاشات الكبيرة وظاهرة في الشاشات الصغيرة ثم نستدعي الدالة <code>hamFunction</code> عند وقوع حدث النقر فوق هذا الرابط كما يلي:
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_4859_6" style=""><span class="tag">&lt;section</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"rtl-Primary-nav"</span><span class="tag">&gt;</span><span class="pln">
  </span><span class="pun">&lt;?</span><span class="pln">php
  </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">has_custom_logo</span><span class="pun">())</span><span class="pln"> </span><span class="pun">:</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      $custom_logo_id </span><span class="pun">=</span><span class="pln"> get_theme_mod</span><span class="pun">(</span><span class="str">'custom_logo'</span><span class="pun">);</span><span class="pln">
      $image </span><span class="pun">=</span><span class="pln"> wp_get_attachment_image_src</span><span class="pun">(</span><span class="pln">$custom_logo_id</span><span class="pun">,</span><span class="pln"> </span><span class="str">'full'</span><span class="pun">);</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">  </span><span class="pun">?&gt;</span><span class="pln">
    </span><span class="tag">&lt;nav</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"myTopnav"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"topnav"</span><span class="tag">&gt;</span><span class="pln">
      </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"logo"</span><span class="tag">&gt;</span><span class="pln">
        &lt;a href="</span><span class="pun">&lt;?</span><span class="pln">php echo esc_url</span><span class="pun">(</span><span class="pln">home_url</span><span class="pun">(</span><span class="str">'/'</span><span class="pun">));</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">" class="logo-link"&gt;
          &lt;img src="</span><span class="pun">&lt;?</span><span class="pln">php echo $image</span><span class="pun">[</span><span class="lit">0</span><span class="pun">];</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">"&gt; </span><span class="tag">&lt;/a&gt;</span><span class="pln">
      </span><span class="tag">&lt;/div&gt;</span><span class="pln">

      </span><span class="pun">&lt;?</span><span class="pln">php wp_nav_menu</span><span class="pun">(</span><span class="pln">array</span><span class="pun">(</span><span class="str">'theme_location'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">'Primary'</span><span class="pun">));</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln"> </span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"javascript:void(0);"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"icon"</span><span class="pln"> </span><span class="atn">onclick</span><span class="pun">=</span><span class="atv">"</span><span class="pln">hamFunction</span><span class="pun">()</span><span class="atv">"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;i</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"fa fa-bars"</span><span class="tag">&gt;&lt;/i&gt;</span><span class="pln">
      </span><span class="tag">&lt;/a&gt;</span><span class="pln">
    </span><span class="tag">&lt;/nav&gt;</span><span class="pln">
  </span><span class="pun">&lt;?</span><span class="pln">php </span><span class="kwd">else</span><span class="pln"> </span><span class="pun">:</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">
    </span><span class="tag">&lt;nav</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"myTopnav"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"topnav"</span><span class="tag">&gt;</span><span class="pln">
      </span><span class="tag">&lt;h2&gt;</span><span class="pln"> &lt;a href="</span><span class="pun">&lt;?</span><span class="pln">php echo esc_url</span><span class="pun">(</span><span class="pln">home_url</span><span class="pun">(</span><span class="str">'/'</span><span class="pun">));</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">" rel="home" class="logo-link"&gt;</span><span class="pun">&lt;?</span><span class="pln">php bloginfo</span><span class="pun">(</span><span class="str">'name'</span><span class="pun">);</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="tag">&lt;/a&gt;</span><span class="pln"> </span><span class="tag">&lt;/h2&gt;</span><span class="pln">
      </span><span class="pun">&lt;?</span><span class="pln">php wp_nav_menu</span><span class="pun">(</span><span class="pln">array</span><span class="pun">(</span><span class="str">'theme_location'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">'Primary'</span><span class="pun">));</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln"> </span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"javascript:void(0);"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"icon"</span><span class="pln"> </span><span class="atn">onclick</span><span class="pun">=</span><span class="atv">"</span><span class="pln">hamFunction</span><span class="pun">()</span><span class="atv">"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;i</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"fa fa-bars"</span><span class="tag">&gt;&lt;/i&gt;</span><span class="pln">
      </span><span class="tag">&lt;/a&gt;</span><span class="pln">
    </span><span class="tag">&lt;/nav&gt;</span><span class="pln">
  </span><span class="pun">&lt;?</span><span class="pln">php endif</span><span class="pun">;</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">
</span><span class="tag">&lt;/section&gt;</span></pre>

<p>
	الخطوة التالية هي إضافة تنسيقات لملف <strong>style.css</strong> حيث سنضيف له <a href="https://academy.hsoub.com/programming/css/%D8%A7%D8%B3%D8%AA%D8%B9%D9%84%D8%A7%D9%85%D8%A7%D8%AA-%D8%A7%D9%84%D9%88%D8%B3%D8%A7%D8%A6%D8%B7-media-queries-%D9%81%D9%8A-css-r1059/" rel="">استعلام وسائط Media query</a> للتحقق من أن الجهاز الذي نتصفح من خلاله الموقع هو جوال ونطبق عليه تنسيقات عرض الأيقونة بالشكل المطلوب.
</p>

<p>
	المطلوب هو إخفاء أيقونة الهمبرغر عند العرض على شاشة كبيرة وتعديل تصميم عناصر القائمة وطريقة عرضها عندما يكون عرض شاشة الجهاز أقل من 600 بكسل لجعلها متجاوبة وذلك من خلال كتابة التنسيقات التالية:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_4859_8" style=""><span class="pun">.</span><span class="pln">topnav </span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">overflow</span><span class="pun">:</span><span class="pln"> hidden</span><span class="pun">;</span><span class="pln">
  </span><span class="kwd">z-index</span><span class="pun">:</span><span class="pln"> </span><span class="lit">10</span><span class="pun">;</span><span class="pln">
  </span><span class="kwd">position</span><span class="pun">:</span><span class="pln"> relative</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">


</span><span class="pun">.</span><span class="pln">topnav </span><span class="pun">.</span><span class="pln">icon </span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">display</span><span class="pun">:</span><span class="pln"> none</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">


</span><span class="kwd">@media</span><span class="pln"> screen and </span><span class="pun">(</span><span class="kwd">max-width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">600px</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  </span><span class="pun">.</span><span class="pln">topnav </span><span class="kwd">a</span><span class="pun">:</span><span class="pln">not</span><span class="pun">(.</span><span class="pln">logo-link</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">display</span><span class="pun">:</span><span class="pln"> none</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  nav</span><span class="pun">.</span><span class="pln">topnav ul </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">display</span><span class="pun">:</span><span class="pln"> block</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">background-color</span><span class="pun">:</span><span class="pln"> </span><span class="lit">#f6c86c</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  nav</span><span class="pun">.</span><span class="pln">dnnav ul </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">display</span><span class="pun">:</span><span class="pln"> block</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">float</span><span class="pun">:</span><span class="pln"> right</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">background-color</span><span class="pun">:</span><span class="pln"> </span><span class="lit">#F9B01B</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  nav</span><span class="pun">.</span><span class="pln">dnnav ul li </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">display</span><span class="pun">:</span><span class="pln"> inline-block</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">margin</span><span class="pun">:</span><span class="pln"> </span><span class="lit">5px</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">background</span><span class="pun">:</span><span class="pln"> </span><span class="lit">#f6c86c</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">padding</span><span class="pun">:</span><span class="pln"> </span><span class="lit">10px</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">

  </span><span class="pun">.</span><span class="pln">topnav a</span><span class="pun">.</span><span class="pln">icon </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">float</span><span class="pun">:</span><span class="pln"> left</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">display</span><span class="pun">:</span><span class="pln"> block</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  </span><span class="pun">.</span><span class="pln">post-qwe </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">90%</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">text-align</span><span class="pun">:</span><span class="pln"> center</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  </span><span class="pun">.</span><span class="pln">topnav </span><span class="pun">.</span><span class="pln">icon </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">position</span><span class="pun">:</span><span class="pln"> absolute</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">left</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">top</span><span class="pun">:</span><span class="pln"> </span><span class="lit">25px</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  </span><span class="pun">.</span><span class="pln">topnav</span><span class="pun">.</span><span class="pln">responsive </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">position</span><span class="pun">:</span><span class="pln"> relative</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">

  </span><span class="pun">.</span><span class="pln">topnav</span><span class="pun">.</span><span class="pln">responsive ul li a </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">float</span><span class="pun">:</span><span class="pln"> none</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">display</span><span class="pun">:</span><span class="pln"> block</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">text-align</span><span class="pun">:</span><span class="pln"> right</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	الآن سوف نكتب كود <a href="https://wiki.hsoub.com/JavaScript" rel="external">جافا سكريبت</a> للتبديل بين التنسيقات من خلال إنشاء ملف جافا سكريبت باسم<strong>hamburger-menu.js</strong> نضعه في في مجلد فرعي باسم js ننشؤه داخل مجلد القالب، ثم نربط هذا الملف مع قالب ووردبريس الخاص بنا.
</p>

<p>
	وهنا نذكر بأن لدينا عدة طرق من بينها الطريقة التقليدية من خلال إضافة الوسم <code>&lt;script&gt;</code> في تذييل الموقع أي قبل الوسم <code>&lt;‎/body&gt;</code> في الملف footer.php كما في الكود التالي:
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_4859_10" style=""><span class="pln">&lt;script type="text/javascript" src="</span><span class="pun">&lt;?</span><span class="pln">php echo get_template_directory_uri</span><span class="pun">();</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="str">/js/</span><span class="pln">hamburger</span><span class="pun">-</span><span class="pln">menu</span><span class="pun">.</span><span class="pln">js</span><span class="str">"&gt;</span><span class="tag">&lt;/script&gt;</span></pre>

<p>
	لكن الطريقة الأفضل لإضافة السكربتات في قالب ووردبريس والموصى بها من قبل نظام ووردبريس هي باستخدام الدالة <a href="https://developer.wordpress.org/reference/functions/wp_enqueue_script/" rel="external nofollow"><code>wp_enqueue_script()‎</code></a> لذا سنكتب الكود التالي في ملف وظائف القالب fumctions.php بدل الكود السابق لربط ملف hamburger-menu.js مع قالب ووردبريس الخاص بنا
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_4859_12" style=""><span class="kwd">function</span><span class="pln"> modawanaty_scripts</span><span class="pun">()</span><span class="pln">
</span><span class="pun">{</span><span class="pln">
</span><span class="com">//..</span><span class="pln">
    wp_enqueue_script</span><span class="pun">(</span><span class="pln"> </span><span class="str">'hamburger-menu'</span><span class="pun">,</span><span class="pln"> get_template_directory_uri</span><span class="pun">()</span><span class="pln"> </span><span class="pun">.</span><span class="pln"> </span><span class="str">'/js/hamburger-menu.js'</span><span class="pun">,</span><span class="pln"> array</span><span class="pun">(),</span><span class="pln"> </span><span class="str">'1.0'</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">true</span><span class="pln"> </span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="com">//..</span><span class="pln">
add_action</span><span class="pun">(</span><span class="str">'wp_enqueue_scripts'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'modawanaty_scripts'</span><span class="pun">);</span></pre>

<p>
	تأخذ الدالة <code>wp_enqueue_script</code> عدة وسطاء وهي:
</p>

<ol>
	<li>
		‎<code>$handle‎</code>: اسم فريد يمثل الملف الذي تريد تضمينه لتمييزه الملف عن غيره من الملفات.
	</li>
	<li>
		‎<code>$src</code>: مسار الملف الذي تريد تضمينه.
	</li>
	<li>
		‎<code>$deps</code>: dependencies التي يحتاج الملف إلى تحميلها قبل تحميل الملف. على سبيل المثال، إذا كنت تستخدم <a href="https://wiki.hsoub.com/jQuery" rel="external">مكتبة jQuery</a> في ملف جافا سكريبت الخاص بك فيجب أن تضيفها ضمن مصفوفة الاعتماديات.
	</li>
	<li>
		<code>‎$ver</code>: إصدار الملف يمكنك تحديد رقم الإصدار للملف الخاص بك للتحكم في التخزين المؤقت والتحديثات.
	</li>
	<li>
		‎<code>$in_footer</code>: قيمة بوليانية تأخذ بشكل افتراضي القيمة <code>true</code> وتحدد ما إذا كنت تريد تحميل الملف في تذييل الصفحة أي قبل الوسم <code>&lt;‎/body&gt;</code> ولاستدعائه في ترويسة الصفحة أي قبل الوسم <code>&lt;‎/head&gt;</code> يمكنك عندها تمرير القيمة <code>false</code> لهذا الوسيط.
	</li>
</ol>

<p>
	باستخدام هذه الطريقة ستضمن تحميل السكريبت الخاص بك بالترتيب الصحيح وتضمن أنك تتبع أفضل الممارسات لتضمينه في قالب ووردبريس الخاص بك.
</p>

<p>
	الآن نفتح الملف hamburger-menu.js في محرر الأكواد ونكتب بداخله الكود التالي الذي ينفذ عند النقر فوق أيقونة القائمة:
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_4859_14" style=""><span class="kwd">const</span><span class="pln"> hamFunction </span><span class="pun">=</span><span class="pln"> </span><span class="pun">()</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    </span><span class="com">// استهداف القائمة</span><span class="pln">
    </span><span class="kwd">var</span><span class="pln"> hamburger </span><span class="pun">=</span><span class="pln"> document</span><span class="pun">.</span><span class="pln">getElementById</span><span class="pun">(</span><span class="str">"myTopnav"</span><span class="pun">);</span><span class="pln">
    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">hamburger</span><span class="pun">.</span><span class="pln">className </span><span class="pun">===</span><span class="pln"> </span><span class="str">"topnav"</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      hamburger</span><span class="pun">.</span><span class="pln">className </span><span class="pun">+=</span><span class="pln"> </span><span class="str">" responsive"</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln"> </span><span class="kwd">else</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      hamburger</span><span class="pun">.</span><span class="pln">className </span><span class="pun">=</span><span class="pln"> </span><span class="str">"topnav"</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
  </span><span class="pun">};</span></pre>

<p>
	عرفنا في الكود أعلاه دالة باسم <code>()hamFunction</code> مهمتها التحكم بعرض وإخفاء عناصر القائمة، بداية عرفنا متغير باسم <code>hamburger</code> يستهدف القائمة ثم اختبرنا إن كان صنف التنسيق لها يساوي <code>topnav</code> وذلك يعني أن القائمة ليست مرئية حاليًا وفي هذه الحالة، يتم إضافة الصنف <code>responsive</code> ليصبح تنسيقها <code>topnav responsive</code> مما يؤدي لتطبيق تصميم مختلف للقائمة هو التصميم المتجاوب.
</p>

<p>
	أما إذا كانت القيمة المخزنة في الصنف لا تساوي <code>topnav</code> فإن ذلك يعني أن القائمة بالفعل مرئية وفي هذه الحالة يتم إعادة تعيين القيمة <code>topnav</code> لاستعادة التصميم الأصلي للقائمة وإخفائها.
</p>

<p>
	هذا كل شيء كل ما عليك هو الانتقال لموقع ووردبريس ومحاولة تصغير حجم الشاشة والتأكد من أن عناصر القائمة الرئيسية متجاوبة بشكل صحيح وأن عناصرها تختفي ويظهر بدلاً منها زر قائمة الهمبرغر. جرب النقر فوق الزر لتظهر لك عناصر القائمة كما توضح الصورة التالية:
</p>

<p style="text-align: center;">
	<img alt="ظهور قائمة الهمبرغر.gif" class="ipsImage ipsImage_thumbnailed" data-fileid="131080" data-unique="13boeapsu" style="width: 700px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2023_07/.thumb.gif.034dccba4ccfd872c324ea6abd357347.gif">
</p>

<h2>
	ثانيًا. تضمين ميزة عرض شريط منزلق للمقالات في قالب ووردبريس
</h2>

<p>
	الآن سننشئ شريط منزلق في ترويسة الموقع وتحديدًا أعلى الصفحة الرئيسية وتحت قائمة التنقل الرئيسية مهمته عرض عناوين وصور المقالات الثلاث الأكثر قراءة من قبل الزوار، وسنضيف بعض الخواص والتنسيقات المطلوبة لعرض هذا الشريط بشكل أنيق عن طريق أكواد CSS لكي نقوم بذلك نحتاج لعدة ملفات سنشرح كل واحد على حدا.
</p>

<h3>
	إنشاء ملف جافا سكريبت للتنقل بين الشرائح لعرض منزلق الصور
</h3>

<p>
	بداية سننشئ ملف جافا سكريبت نسميه slideshow.js ونضعه ضمن المجلد js في مجلد القالب ونكتب ضمنه كود جافا سكريبت اللازم لعرض مجموعة من الصور أو الشرائح بشكل منزلق.
</p>

<p>
	سننشئ الملف ونربطه مع قالبنا كما ربطنا الملف السابق من خلال استدعاء الدالة <code>wp_enqueue_script()‎</code> في ملف وظائف القالب functions.php
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_4859_18" style=""><span class="com">/**
 * Enqueue scripts and styles.
 */</span><span class="pln">
</span><span class="kwd">function</span><span class="pln"> modawanaty_scripts</span><span class="pun">()</span><span class="pln">
</span><span class="pun">{</span><span class="pln">
</span><span class="com">//..</span><span class="pln">
    wp_enqueue_script</span><span class="pun">(</span><span class="pln"> </span><span class="str">'hamburger-menu'</span><span class="pun">,</span><span class="pln"> get_template_directory_uri</span><span class="pun">()</span><span class="pln"> </span><span class="pun">.</span><span class="pln"> </span><span class="str">'/js/slideshow.js'</span><span class="pun">,</span><span class="pln"> array</span><span class="pun">(),</span><span class="pln"> </span><span class="str">'1.0'</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">true</span><span class="pln"> </span><span class="pun">);</span><span class="pln">

</span><span class="com">//..</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
add_action</span><span class="pun">(</span><span class="str">'wp_enqueue_scripts'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'modawanaty_scripts'</span><span class="pun">);</span></pre>

<p>
	ملاحظة: عند استدعاء أكثر من ملف جافا سكريبت ضمن الدالة <code>wp_enqueue_script()‎</code> يجب الانتباه لترتيب استدعاء الملفات ومراعاة أولوية تحميل وتنفيذ الملفات في صفحات قالب ووردبريس الخاصة بك، على سبيل المثال إذا كنت تعتمد على ملفات جافا سكريبت معينة في ملفات أخرى يجب أن يتم تحميل الملفات التي تعتمد عليها أولاً.
</p>

<p>
	بعد ربط الملف مع قالب ووردبريس الخاص بنا سنحرر ملف جافا سكريبت الذي أنشأناه ونكتب بداخله كود جافا سكريبت مهمته الحصول على العنصر الذي يملك الصنف <code>slides-qwe</code> وهو عنصر الحاوية التي تعرض منزلق الصور ونخزنه في متغير <code>slides</code>، كما نحصل على العنصر <code>dot</code> وهو عبارة عن عنصر يعرض ثلاث أيقونات دائرية تعبر عن الشريحة الحالية في المنزلق ونخزنه ضمن متغير <code>dots</code> ثم نعرف مجموعة من الدوال للتبديل بين الشرائح المختلفة.
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_4859_20" style=""><span class="kwd">let</span><span class="pln"> slideIndex </span><span class="pun">=</span><span class="pln"> </span><span class="lit">1</span><span class="pun">;</span><span class="pln">
showSlides</span><span class="pun">(</span><span class="pln">slideIndex</span><span class="pun">);</span><span class="pln">

</span><span class="kwd">function</span><span class="pln"> currentSlide</span><span class="pun">(</span><span class="pln">n</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  showSlides</span><span class="pun">((</span><span class="pln">slideIndex </span><span class="pun">=</span><span class="pln"> n</span><span class="pun">));</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="kwd">function</span><span class="pln"> showSlides</span><span class="pun">(</span><span class="pln">n</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">let</span><span class="pln"> i</span><span class="pun">;</span><span class="pln">
  </span><span class="kwd">let</span><span class="pln"> slides </span><span class="pun">=</span><span class="pln"> document</span><span class="pun">.</span><span class="pln">getElementsByClassName</span><span class="pun">(</span><span class="str">"Slides-qwe"</span><span class="pun">);</span><span class="pln">
  </span><span class="kwd">let</span><span class="pln"> dots </span><span class="pun">=</span><span class="pln"> document</span><span class="pun">.</span><span class="pln">getElementsByClassName</span><span class="pun">(</span><span class="str">"dot"</span><span class="pun">);</span><span class="pln">
  </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">n </span><span class="pun">&gt;</span><span class="pln"> slides</span><span class="pun">.</span><span class="pln">length</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    slideIndex </span><span class="pun">=</span><span class="pln"> </span><span class="lit">1</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">n </span><span class="pun">&lt;</span><span class="pln"> </span><span class="lit">1</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    slideIndex </span><span class="pun">=</span><span class="pln"> slides</span><span class="pun">.</span><span class="pln">length</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  </span><span class="kwd">for</span><span class="pln"> </span><span class="pun">(</span><span class="pln">i </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln"> i </span><span class="pun">&lt;</span><span class="pln"> slides</span><span class="pun">.</span><span class="pln">length</span><span class="pun">;</span><span class="pln"> i</span><span class="pun">++)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    slides</span><span class="pun">[</span><span class="pln">i</span><span class="pun">].</span><span class="pln">style</span><span class="pun">.</span><span class="pln">display </span><span class="pun">=</span><span class="pln"> </span><span class="str">"none"</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  </span><span class="kwd">for</span><span class="pln"> </span><span class="pun">(</span><span class="pln">i </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln"> i </span><span class="pun">&lt;</span><span class="pln"> dots</span><span class="pun">.</span><span class="pln">length</span><span class="pun">;</span><span class="pln"> i</span><span class="pun">++)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    dots</span><span class="pun">[</span><span class="pln">i</span><span class="pun">].</span><span class="pln">className </span><span class="pun">=</span><span class="pln"> dots</span><span class="pun">[</span><span class="pln">i</span><span class="pun">].</span><span class="pln">className</span><span class="pun">.</span><span class="pln">replace</span><span class="pun">(</span><span class="str">" active"</span><span class="pun">,</span><span class="pln"> </span><span class="str">""</span><span class="pun">);</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  slides</span><span class="pun">[</span><span class="pln">slideIndex </span><span class="pun">-</span><span class="pln"> </span><span class="lit">1</span><span class="pun">].</span><span class="pln">style</span><span class="pun">.</span><span class="pln">display </span><span class="pun">=</span><span class="pln"> </span><span class="str">"block"</span><span class="pun">;</span><span class="pln">
  dots</span><span class="pun">[</span><span class="pln">slideIndex </span><span class="pun">-</span><span class="pln"> </span><span class="lit">1</span><span class="pun">].</span><span class="pln">className </span><span class="pun">+=</span><span class="pln"> </span><span class="str">" active"</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	عرفنا في هذه الدالة متغير <code>slideIndex</code> قيمته 1 يشير للشريحة الأولى، ثم استدعينا الدالة <code>showSlides</code> مع الوسيط <code>n</code> لتعرض هذه الشريحة وتتحكم بعرض النقاط المرتبطة مع الشرائح.
</p>

<p>
	كما عرفنا الدالة <code>currentSlide(n)</code>‎ لتعيين الشريحة الحالية مباشرةً إلى القيمة <code>n</code> وعرضها من خلال الدالة <code>showSlides()</code>‎.
</p>

<h3>
	إنشاء ملف slideshow.php لعرض منزلق الصور
</h3>

<p>
	الخطوة التالية هي إنشاء ملف slideshow.php يجلب بيانات المقالات الثلاث الأكثر قراءة ثم يعرضها ويعرض نقطة موافقة لكل مقال ويربط حدث النقر على النقطة بالدالة <code>currentSlide()‎</code> لعرض الشريحة المرتبطة بها كما يلي:
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_4859_22" style=""><span class="com">&lt;!-- Slideshow container --&gt;</span><span class="pln">
</span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"slider-container"</span><span class="tag">&gt;</span><span class="pln">
  </span><span class="com">&lt;!-- Full-width images with number and caption text --&gt;</span><span class="pln">
  </span><span class="pun">&lt;?</span><span class="pln">php
  $county </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
  $popularpost_id </span><span class="pun">=</span><span class="pln"> array</span><span class="pun">();</span><span class="pln">

$popularpost </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> WP_Query</span><span class="pun">(</span><span class="pln"> array</span><span class="pun">(</span><span class="pln"> </span><span class="str">'posts_per_page'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="lit">3</span><span class="pun">,</span><span class="pln"> </span><span class="str">'meta_key'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">'wpb_post_views_count'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'orderby'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">'meta_value_num'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'order'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">'DESC'</span><span class="pln">  </span><span class="pun">)</span><span class="pln"> </span><span class="pun">);</span><span class="pln">
</span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln"> have_posts</span><span class="pun">()</span><span class="pln"> </span><span class="pun">)</span><span class="pln"> </span><span class="pun">:</span><span class="pln">
</span><span class="kwd">while</span><span class="pln"> </span><span class="pun">(</span><span class="pln"> $popularpost</span><span class="pun">-&gt;</span><span class="pln">have_posts</span><span class="pun">()</span><span class="pln"> </span><span class="pun">)</span><span class="pln"> </span><span class="pun">:</span><span class="pln"> $popularpost</span><span class="pun">-&gt;</span><span class="pln">the_post</span><span class="pun">();</span><span class="pln">
      $popularpost_id</span><span class="pun">[</span><span class="pln">$county</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> get_the_ID</span><span class="pun">();</span><span class="pln">
      $county</span><span class="pun">++;</span><span class="pln">
    endwhile</span><span class="pun">;</span><span class="pln">
  endif</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">?&gt;</span><span class="pln">
</span><span class="tag">&lt;p</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"mostpop"</span><span class="tag">&gt;</span><span class="pln"> الأكثر قراءة </span><span class="tag">&lt;/p&gt;</span><span class="pln">
  </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"Slides-qwe fade"</span><span class="tag">&gt;</span><span class="pln">
    </span><span class="pun">&lt;?</span><span class="pln">php $url </span><span class="pun">=</span><span class="pln"> wp_get_attachment_url</span><span class="pun">(</span><span class="pln"> get_post_thumbnail_id</span><span class="pun">(</span><span class="pln"> $popularpost_id</span><span class="pun">[</span><span class="lit">0</span><span class="pun">]</span><span class="pln"> </span><span class="pun">),</span><span class="pln"> </span><span class="str">'thumbnail'</span><span class="pln"> </span><span class="pun">);</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">
    &lt;img src="</span><span class="pun">&lt;?</span><span class="pln">php echo $url</span><span class="pun">;</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">" /&gt;
    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"text"</span><span class="tag">&gt;</span><span class="pln"> </span><span class="pun">&lt;?</span><span class="pln">php echo get_the_title</span><span class="pun">(</span><span class="pln"> $popularpost_id</span><span class="pun">[</span><span class="lit">0</span><span class="pun">]</span><span class="pln"> </span><span class="pun">);</span><span class="pln">  </span><span class="pun">?&gt;</span><span class="pln"> </span><span class="tag">&lt;/div&gt;</span><span class="pln">
  </span><span class="tag">&lt;/div&gt;</span><span class="pln">

  </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"Slides-qwe fade"</span><span class="tag">&gt;</span><span class="pln">
    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"numbertext"</span><span class="tag">&gt;</span><span class="pln">2 / 3</span><span class="tag">&lt;/div&gt;</span><span class="pln">
    </span><span class="pun">&lt;?</span><span class="pln">php $url </span><span class="pun">=</span><span class="pln"> wp_get_attachment_url</span><span class="pun">(</span><span class="pln"> get_post_thumbnail_id</span><span class="pun">(</span><span class="pln"> $popularpost_id</span><span class="pun">[</span><span class="lit">1</span><span class="pun">]</span><span class="pln"> </span><span class="pun">),</span><span class="pln"> </span><span class="str">'thumbnail'</span><span class="pln"> </span><span class="pun">);</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">
    &lt;img src="</span><span class="pun">&lt;?</span><span class="pln">php echo $url</span><span class="pun">;</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">"&gt;
    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"text"</span><span class="tag">&gt;</span><span class="pln"> </span><span class="pun">&lt;?</span><span class="pln">php echo get_the_title</span><span class="pun">(</span><span class="pln"> $popularpost_id</span><span class="pun">[</span><span class="lit">1</span><span class="pun">]</span><span class="pln"> </span><span class="pun">);</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln"> </span><span class="tag">&lt;/div&gt;</span><span class="pln">
  </span><span class="tag">&lt;/div&gt;</span><span class="pln">

  </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"Slides-qwe fade"</span><span class="tag">&gt;</span><span class="pln">
    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"numbertext"</span><span class="tag">&gt;</span><span class="pln">3 / 3</span><span class="tag">&lt;/div&gt;</span><span class="pln">
    </span><span class="pun">&lt;?</span><span class="pln">php $url </span><span class="pun">=</span><span class="pln"> wp_get_attachment_url</span><span class="pun">(</span><span class="pln"> get_post_thumbnail_id</span><span class="pun">(</span><span class="pln"> $popularpost_id</span><span class="pun">[</span><span class="lit">2</span><span class="pun">]</span><span class="pln"> </span><span class="pun">),</span><span class="pln"> </span><span class="str">'thumbnail'</span><span class="pln"> </span><span class="pun">);</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">
    &lt;img src="</span><span class="pun">&lt;?</span><span class="pln">php echo $url</span><span class="pun">;</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">"&gt;
    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"text"</span><span class="tag">&gt;</span><span class="pln"> </span><span class="pun">&lt;?</span><span class="pln">php echo get_the_title</span><span class="pun">(</span><span class="pln"> $popularpost_id</span><span class="pun">[</span><span class="lit">2</span><span class="pun">]</span><span class="pln"> </span><span class="pun">);</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln"> </span><span class="tag">&lt;/div&gt;</span><span class="pln">
  </span><span class="tag">&lt;/div&gt;</span><span class="pln">
</span><span class="tag">&lt;/div&gt;</span><span class="pln">

</span><span class="tag">&lt;br&gt;</span><span class="pln">
</span><span class="com">&lt;!-- The dots/circles --&gt;</span><span class="pln">
</span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"rel-qwe"</span><span class="pln"> </span><span class="tag">&gt;</span><span class="pln">
  </span><span class="tag">&lt;span</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"dot"</span><span class="pln"> </span><span class="atn">onclick</span><span class="pun">=</span><span class="atv">"</span><span class="pln">currentSlide</span><span class="pun">(</span><span class="lit">1</span><span class="pun">)</span><span class="atv">"</span><span class="tag">&gt;&lt;/span&gt;</span><span class="pln">
  </span><span class="tag">&lt;span</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"dot"</span><span class="pln"> </span><span class="atn">onclick</span><span class="pun">=</span><span class="atv">"</span><span class="pln">currentSlide</span><span class="pun">(</span><span class="lit">2</span><span class="pun">)</span><span class="atv">"</span><span class="tag">&gt;&lt;/span&gt;</span><span class="pln">
  </span><span class="tag">&lt;span</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"dot"</span><span class="pln"> </span><span class="atn">onclick</span><span class="pun">=</span><span class="atv">"</span><span class="pln">currentSlide</span><span class="pun">(</span><span class="lit">3</span><span class="pun">)</span><span class="atv">"</span><span class="tag">&gt;&lt;/span&gt;</span><span class="pln">
</span><span class="tag">&lt;/div&gt;</span></pre>

<p>
	نشئ الكود السابق كائن من الصنف <code>WP_Query</code> يستعلم من قاعدة البيانات ويحسب عدد مرات عرض كل مقال ويعيد أكثر 3 مقالات حصلت على زيارات في الموقع من الأكثر للأقل أي وفق الترتيب التنازلي ويخزن هذه المقالات في المتغير ‎<code>$popularpost_id</code> ثم يعرضها ضمن حاوية رئيسية <code>&lt;div&gt;</code> له الصنف <code>slider-container</code>
</p>

<p>
	إذا كان هناك مقالات متاحة سيعرض الكود عنوان وصورة كل مقال من هذه المقالات في حاوية <code>&lt;div&gt;</code> فرعية لها الصنف <code>Slides-qwe</code>، ستظهر العناصر واحدة تلو الأخرى بشكل متتالي كما ستعرض نقاط أو دوائر تمثل الشرائح أو المقالات المختلفة في المنزلق.
</p>

<p>
	وكما شرحنا من قبل سنربط حدث النقر على كل نقطة منها بالدالة <code>currentSlide()</code>‎ التي عرفناها في ملف جافا سكريبت slideshow.js لعرض الشريحة الموافقة.
</p>

<p>
	الخطوة التالية هي استدعاء الملف في ترويسة القالب ليعرض شريط المنزلق بعد عرض القائمة الرئيسية في الصفحة الأولى للموقع فقط كي لا يظهر في الصفحات الداخلية وصفحات المقالات المفردة.
</p>

<p>
	وفي حال عدم وجود مقالات منشورة في الموقع أو لم تتم قراءة أي منها سنعرض صورة ثابتة بدلًا منها وهنا اخترنا عرض الصورة المصغرة للقالب كما شرحنا في درس سابق ويمكنك بالطبع أن تعرض هنا أي صورة أخرى تختارها.
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_4859_24" style=""><span class="tag">&lt;section</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"slider"</span><span class="tag">&gt;</span><span class="pln">
                </span><span class="pun">&lt;?</span><span class="pln">php
                $args </span><span class="pun">=</span><span class="pln"> array</span><span class="pun">(</span><span class="pln">
                    </span><span class="str">'post_type'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">'post'</span><span class="pun">,</span><span class="pln"> </span><span class="com">// Adjust post type if needed</span><span class="pln">
                    </span><span class="str">'posts_per_page'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="lit">3</span><span class="pun">,</span><span class="pln"> </span><span class="com">// Number of posts to retrieve</span><span class="pln">
                    </span><span class="str">'meta_key'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">'wpb_post_views_count'</span><span class="pun">,</span><span class="pln"> </span><span class="com">// Replace 'post_reads' with the meta key storing the read count</span><span class="pln">
                    </span><span class="str">'orderby'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">'meta_value_num'</span><span class="pun">,</span><span class="pln"> </span><span class="com">// Sort by numeric value</span><span class="pln">
                    </span><span class="str">'order'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">'DESC'</span><span class="pln"> </span><span class="com">// Order in descending order (from most read to least read)</span><span class="pln">
                </span><span class="pun">);</span><span class="pln">
                $popularpost </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> WP_Query</span><span class="pun">(</span><span class="pln">$args</span><span class="pun">);</span><span class="pln">
                </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">$popularpost</span><span class="pun">-&gt;</span><span class="pln">have_posts</span><span class="pun">())</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
                    get_template_part</span><span class="pun">(</span><span class="str">'slideshow'</span><span class="pun">);</span><span class="pln">
                </span><span class="pun">}</span><span class="pln"> </span><span class="kwd">else</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
                </span><span class="pun">?&gt;</span><span class="pln">
                    &lt;img class="slidimg" src="</span><span class="pun">&lt;?</span><span class="pln">php bloginfo</span><span class="pun">(</span><span class="str">'template_url'</span><span class="pun">);</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">/screenshot.png" alt="slider"&gt;
                </span><span class="pun">&lt;?</span><span class="pln">php </span><span class="pun">}</span><span class="pln">

                </span><span class="com">// Restore original post data</span><span class="pln">
                wp_reset_postdata</span><span class="pun">();</span><span class="pln">
                </span><span class="pun">?&gt;</span></pre>

<p>
	لاحظ أننا أضفنا مجموعة من صفوف التنسيق لعناصر منزلق الصور ، والخطوة الأخيرة التي علينا القيام بها هي تنسيقها لتظهر بالشكل المطلوب.
</p>

<h3>
	إضافة أكواد CSS لتنسيق عناصر المنزلق
</h3>

<p style="text-align: center;">
	<img alt="المنزلق قبل التنسيق.PNG" class="ipsImage ipsImage_thumbnailed" data-fileid="131079" data-unique="3v1t71fs2" style="width: 300px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2023_07/.thumb.PNG.3e9ddfeec50d5db5d42543bee5be82f6.PNG">
</p>

<p>
	كما تلاحظ في الصورة أعلاه عند عرض المنزلق في الموقع ستظهر شرائح الصور الخاصة بالمقالات تحت بعضها البعض كما تظهر باقي عناصر المنزلق بشكل بدائي دون تنسيق لذا من الضروري التحكم في ظهورها وعرض شريحة واحدة فقط وجعل بقية الشرائح مخفية ليتم التحكم في إظهارها واحدة تلو الآخرى بواسطة جافا سكريبت وتنسيق عناصر منزلق الصور بالشكل المناسب، لهذا سنقوم بإضافة الكود التالي إلى ملف تنسيقات القالب style.css.
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_4859_26" style=""><span class="com">/* تنسيق إضافي للمنزلق */</span><span class="pln">
</span><span class="pun">.</span><span class="pln">slidedots</span><span class="pun">,</span><span class="pln">
</span><span class="pun">.</span><span class="pln">Slides-qwe </span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">text-align</span><span class="pun">:</span><span class="pln"> center</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

div</span><span class="pun">.</span><span class="kwd">caption-text</span><span class="pun">:</span><span class="pln">hover </span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">color</span><span class="pun">:</span><span class="pln"> </span><span class="lit">#F9B01B</span><span class="pun">;</span><span class="pln">
  </span><span class="kwd">font-weight</span><span class="pun">:</span><span class="pln"> bold</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="com">/* Caption text */</span><span class="pln">
</span><span class="pun">.</span><span class="pln">slide-title </span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">text-align</span><span class="pun">:</span><span class="pln"> center</span><span class="pun">;</span><span class="pln">
  </span><span class="kwd">padding-top</span><span class="pun">:</span><span class="pln"> </span><span class="lit">2rem</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

mark </span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">background</span><span class="pun">:</span><span class="pln"> linear-gradient</span><span class="pun">(</span><span class="lit">90deg</span><span class="pun">,</span><span class="pln"> rgba</span><span class="pun">(</span><span class="lit">249</span><span class="pun">,</span><span class="pln"> </span><span class="lit">176</span><span class="pun">,</span><span class="pln"> </span><span class="lit">27</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">)</span><span class="pln"> </span><span class="lit">0%</span><span class="pun">,</span><span class="pln"> rgba</span><span class="pun">(</span><span class="lit">246</span><span class="pun">,</span><span class="pln"> </span><span class="lit">200</span><span class="pun">,</span><span class="pln"> </span><span class="lit">108</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">)</span><span class="pln"> </span><span class="lit">51%</span><span class="pun">,</span><span class="pln"> rgba</span><span class="pun">(</span><span class="lit">249</span><span class="pun">,</span><span class="pln"> </span><span class="lit">176</span><span class="pun">,</span><span class="pln"> </span><span class="lit">27</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">)</span><span class="pln"> </span><span class="lit">100%</span><span class="pun">);</span><span class="pln">
  </span><span class="kwd">color</span><span class="pun">:</span><span class="pln"> </span><span class="lit">#000</span><span class="pun">;</span><span class="pln">

</span><span class="pun">}</span><span class="pln">

</span><span class="com">/* Caption text */</span><span class="pln">
div </span><span class="pun">.</span><span class="pln">caption-text </span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">font-weight</span><span class="pun">:</span><span class="pln"> bold</span><span class="pun">;</span><span class="pln">
  </span><span class="kwd">text-align</span><span class="pun">:</span><span class="pln"> center</span><span class="pun">;</span><span class="pln">
  </span><span class="kwd">padding-top</span><span class="pun">:</span><span class="pln"> </span><span class="lit">2rem</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">dot </span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">cursor</span><span class="pun">:</span><span class="pln"> pointer</span><span class="pun">;</span><span class="pln">
  </span><span class="kwd">height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">15px</span><span class="pun">;</span><span class="pln">
  </span><span class="kwd">width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">15px</span><span class="pun">;</span><span class="pln">
  </span><span class="kwd">margin</span><span class="pun">:</span><span class="pln"> </span><span class="lit">2px</span><span class="pln"> </span><span class="lit">4px</span><span class="pun">;</span><span class="pln">
  </span><span class="kwd">background-color</span><span class="pun">:</span><span class="pln"> </span><span class="lit">#bbb</span><span class="pun">;</span><span class="pln">
  </span><span class="kwd">border-radius</span><span class="pun">:</span><span class="pln"> </span><span class="lit">50%</span><span class="pun">;</span><span class="pln">
  </span><span class="kwd">display</span><span class="pun">:</span><span class="pln"> inline-block</span><span class="pun">;</span><span class="pln">
  </span><span class="kwd">transition</span><span class="pun">:</span><span class="pln"> background-color </span><span class="lit">0.6s</span><span class="pln"> ease</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="pun">.</span><span class="pln">active</span><span class="pun">,</span><span class="pln">
</span><span class="pun">.</span><span class="kwd">dot</span><span class="pun">:</span><span class="pln">hover </span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">background-color</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">rgb</span><span class="pun">(</span><span class="lit">255</span><span class="pun">,</span><span class="pln"> </span><span class="lit">145</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="com">/* Fading animation */</span><span class="pln">
</span><span class="pun">.</span><span class="pln">fade </span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">animation-name</span><span class="pun">:</span><span class="pln"> fade</span><span class="pun">;</span><span class="pln">
  </span><span class="kwd">animation-duration</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1.5s</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">@</span><span class="pln">keyframes fade </span><span class="pun">{</span><span class="pln">
  from </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">opacity</span><span class="pun">:</span><span class="pln"> </span><span class="lit">.4</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">

  to </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">opacity</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	الآن إذا استعرضنا الصفحة سيظهر المنزلق بالشكل التالي
</p>

<p style="text-align: center;">
	<img alt="المنزلق بعدالتسيق.gif" class="ipsImage ipsImage_thumbnailed" data-fileid="131078" data-unique="ntoccwhj0" style="width: 700px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2023_07/.thumb.gif.0c9e7211b41c9444f10d2d5c3f669a7a.gif">
</p>

<p>
	وبهذا نكون انتهينا من إضافة ميزة الشريط المنزلق للمقالات ويمكنك بنفس الطريقة يمكن أن تطبق ما شرحناه لبرمجة القالب المناسب له وإضافة أي ميزات ترغب بها من خلال شيفرات جافا سكريبت المناسبة.
</p>

<h2>
	الخلاصة
</h2>

<p>
	تعرفنا في مقال اليوم على طريقة إضافة ميزات مخصصة إلى قالب ووردبريس من خلال لغة جافا سكريبت ووضحنا الطريقة الأمثل الموصى بها من قبل موقع مطوري ووردبريس الرسمي لإضافة ملفات جافا سكريبت إلى قالب ووردبريس وأهمية ترتيب استدعاء الملفات التي نحتاجها، والآن دورك لتضيف الميزات التي تريدها إلى قالب ووردبريس الذي تطوره.
</p>

<p>
	وبهذا نكون وصلنا لنهاية سلسلة المقالات التي شرحنا فيها أهم خطوات برمجة قوالب ووردبريس من الصفر وكما وعدناكم سنتيح لكم الكود البرمجي للقالب للتحميل وتطويره وفق متطلباتك واحتياجاتك، وإذا كانت لديك أي أسئلة أو استفسارات حول برمجة قوالب ووردبريس لا تتردد في طرحها في قسم التعليقات أسفل المقال.
</p>

<p>
	كتب المسودة الأولية للمقال <a href="https://academy.hsoub.com/profile/3732499-hesham-hussain2/" rel="">هشام حسين</a>.
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
	<li>
		المقال السابق: <a href="https://academy.hsoub.com/programming/php/wordpress/%D8%A5%D8%B6%D8%A7%D9%81%D8%A9-%D8%AA%D9%86%D8%B3%D9%8A%D9%82%D8%A7%D8%AA-css-%D9%84%D9%82%D8%A7%D9%84%D8%A8-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r2032/" rel="">إضافة تنسيقات CSS لقالب ووردبريس</a>
	</li>
	<li>
		كل ما تحتاجه <a href="https://academy.hsoub.com/wordpress/" rel="">لتعلم الووردبريس</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/php/wordpress/%D8%AA%D8%B9%D9%84%D9%85-%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D9%88%D8%AA%D8%B7%D9%88%D9%8A%D8%B1-%D9%85%D9%88%D8%A7%D9%82%D8%B9-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r1461/" rel="">تعلم برمجة وتطوير مواقع ووردبريس</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/javascript/%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A7%D8%AA-%D9%84%D8%BA%D8%A9-%D8%AC%D8%A7%D9%81%D8%A7%D8%B3%D9%83%D8%B1%D8%A8%D8%AA-r1689/" rel="">أساسيات لغة جافا سكريبت</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/php/wordpress/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%A7%D9%84%D8%A8%D8%AF%D8%A1-%D9%81%D9%8A-%D8%AA%D8%B7%D9%88%D9%8A%D8%B1-%D9%82%D9%88%D8%A7%D9%84%D8%A8-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r1729/" rel="">كيفية البدء في تطوير قوالب ووردبريس</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">2035</guid><pubDate>Sun, 30 Jul 2023 13:06:00 +0000</pubDate></item><item><title>&#x625;&#x636;&#x627;&#x641;&#x629; &#x62A;&#x646;&#x633;&#x64A;&#x642;&#x627;&#x62A; CSS &#x644;&#x642;&#x627;&#x644;&#x628; &#x648;&#x648;&#x631;&#x62F;&#x628;&#x631;&#x64A;&#x633;</title><link>https://academy.hsoub.com/programming/php/wordpress/%D8%A5%D8%B6%D8%A7%D9%81%D8%A9-%D8%AA%D9%86%D8%B3%D9%8A%D9%82%D8%A7%D8%AA-css-%D9%84%D9%82%D8%A7%D9%84%D8%A8-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r2032/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2023_07/-----CSS-.png.98d34154e43264e37373adf6a1251219.png" /></p>
<p>
	انتهينا في المقال السابق <a href="https://academy.hsoub.com/programming/php/wordpress/%D8%A5%D9%86%D8%B4%D8%A7%D8%A1-%D8%A7%D9%84%D9%85%D9%84%D9%81%D8%A7%D8%AA-%D8%A7%D9%84%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A9-%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D9%82%D8%A7%D9%84%D8%A8-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r2028/" rel="">إنشاء الملفات الأساسية لبرمجة قالب ووردبريس</a> من سلسلة برمجة قالب ووردبريس من الصفر من مرحلة برمجة الملفات الأساسية لقالب ووردبريس المسؤولة عن تصميم الشكل العام للموقع وعرض المحتويات المطلوبة في ترويسة وتذييل وجسم الصفحات.
</p>

<p>
	هذا المقال هو المقال الرابع من سلسلة المقالات التالية:
</p>

<ul>
	<li>
		<a href="https://academy.hsoub.com/programming/php/wordpress/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D9%82%D9%88%D8%A7%D9%84%D8%A8-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r2017/" rel="">مدخل إلى برمجة قوالب ووردبريس</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/php/wordpress/%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A7%D8%AA-%D8%AA%D8%B7%D9%88%D9%8A%D8%B1-%D9%82%D8%A7%D9%84%D8%A8-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r2027/" rel="">أساسيات تطوير قالب ووردبريس</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/php/wordpress/%D8%A5%D9%86%D8%B4%D8%A7%D8%A1-%D8%A7%D9%84%D9%85%D9%84%D9%81%D8%A7%D8%AA-%D8%A7%D9%84%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A9-%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D9%82%D8%A7%D9%84%D8%A8-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r2028/" rel="">إنشاء الملفات الأساسية لبرمجة قالب ووردبريس</a>
	</li>
	<li>
		<span ipsnoautolink="true">إضافة تنسيقات CSS لقالب ووردبريس</span>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/php/wordpress/%D8%A5%D8%B6%D8%A7%D9%81%D8%A9-%D8%A7%D9%84%D9%85%D9%85%D9%8A%D8%B2%D8%A7%D8%AA-%D9%84%D9%82%D8%A7%D9%84%D8%A8-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%AC%D8%A7%D9%81%D8%A7-%D8%B3%D9%83%D8%B1%D9%8A%D8%A8%D8%AA-r2035/" rel="">إضافة المميزات لقالب ووردبريس باستخدام جافا سكريبت</a>
	</li>
</ul>

<p>
	إن ملفات القالب التي أنشأناها تعرض المحتوى المطلوب لكن دون أي تنسيقات وشكل الموقع بدائي للغاية، لذا حان الوقت الآن لجعل الأشياء أكثر جمالًا وكتابة كافة التنسيقات التي تجعل القالب يعرض محتوى موقع ووردبريس بشكل يشابه التصميم الذي أنجزناه على فيجما في <a href="https://academy.hsoub.com/programming/php/wordpress/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D9%82%D9%88%D8%A7%D9%84%D8%A8-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r2017/" rel="">المقال الأول</a> من هذه السلسلة.
</p>

<ul>
</ul>

<p>
	يمكن اعتبار هذه الخطوة من أهم خطوات برمجة قالب ووردبريس مخصص، فهي التي تميز قالبًا عن آخر، وتعكس براعة المصمم وذوقه في كتابة تنسيقات احترافية تستهدف عناصر HTML والأصناف والمعرفات الخاصة بها بشكل فعال وضبط عرض عناصر الموقع لتحقيق التصميم بالشكل المطلوب.
</p>

<h2>
	أين أكتب تنسيقات قالب ووردبريس؟
</h2>

<p>
	تكتب <a href="https://academy.hsoub.com/programming/html/html-%D9%88-css-%D9%84%D9%84%D9%85%D8%A8%D8%AA%D8%AF%D8%A6%D9%8A%D9%86-%D9%85%D9%82%D8%AF%D9%85%D8%A9-%D8%A5%D9%84%D9%89-%D8%AA%D9%86%D8%B3%D9%8A%D9%82%D8%A7%D8%AA-css-r272/" rel="">تنسيقات CSS</a> للقالب عادة في ملف تنسيق رئيسي باسم style.css وكنا قد أنشأنا هذا الملف داخل مجلد القالب في المقال السابق من السلسلة وكتبنا فيه بعض المعلومات الوصفية حول قالبنا مثل اسم القالب ووصفه وإصداره واسم المؤلف والموقع الخاص بالمؤلف والتي تظهر عند عرض تفاصيل القالب في لوحة تحكم موقع ووردبريس.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="PNG" data-fileid="130857" href="https://academy.hsoub.com/uploads/monthly_2023_07/1858000958_.PNG.213c7fca0c8e715c519652633d6f14a2.PNG" rel=""><img alt="المعلومات الوصفية لقالب ووردبريس.PNG" class="ipsImage ipsImage_thumbnailed" data-fileid="130857" data-ratio="43.63" data-unique="pvea7b0wh" style="width: 800px; height: auto;" width="800" src="https://academy.hsoub.com/uploads/monthly_2023_07/.thumb.PNG.038b977120bbb49131d1c7caa256a540.PNG"> </a>
</p>

<p>
	كما يمكنك كتابة التنسيقات ضمن عدة ملفات أخرى واستدعاء هذه الملفات الإضافية في قالبك عند الضرورة كما يمكنك بالطبع استيراد أي تنسيقات أو سكربتات خارجية أخرى عند الطلب، على سبيل المثال يمكنك أن تضيف ملفات <a href="https://academy.hsoub.com/programming/css/bootstrap/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%A5%D8%B7%D8%A7%D8%B1-%D8%A7%D9%84%D8%B9%D9%85%D9%84-%D8%A8%D9%88%D8%AA%D8%B3%D8%AA%D8%B1%D8%A7%D8%A8-5-r1315/" rel="">بوتستراب</a> لقالبك وهو إطار عمل CSS يساعدك على تطوير مواقع ويب متجاوبة مع الجوال والاستفادة من الأصناف التي يوفرها لتنسيق قالبك وفق التصميم المطلوب من خلال كتابة الكود التالي في ملف وظائف القالب functions.php
</p>

<div class="banner-container ipsBox ipsPadding">
	<div class="inner-banner-container">
		<p class="banner-heading">
			دورة تطوير تطبيقات الويب باستخدام لغة PHP
		</p>

		<p class="banner-subtitle">
			احترف تطوير النظم الخلفية والووردبريس وتطبيقات الويب من الألف إلى الياء دون الحاجة لخبرة برمجية مسبقة
		</p>

		<div>
			<a class="ipsButton ipsButton_large ipsButton_primary ipsButton_important" href="https://academy.hsoub.com/learn/php-web-application-development/" rel="">اشترك الآن</a>
		</div>
	</div>

	<div class="banner-img">
		<img alt="دورة تطوير تطبيقات الويب باستخدام لغة PHP" src="https://academy.hsoub.com/learn/assets/images/courses/php-web-application-development.png">
	</div>
</div>

<p>
	هناك عدة طرق لاستيراد التنسيقات للقالب لكن الطريقة الأفضل حسب توصيات ووردبريس هي استخدام الدالة <a href="https://developer.wordpress.org/reference/functions/wp_enqueue_style/" rel="external nofollow"><code>wp_enqueue_style</code></a> لربط ملفات التنسيقات في القالب لأنها فهي تنظم طريقة تحميل الملفات وتضمن تنفيذها بشكل صحيح في صفحات الموقع المختلفة.
</p>

<p>
	نمرر لهذه الدالة عدة وسطاء أهمها <code>‎</code>$handle وهو معرف فريد يساعدك على تمييز ملف التنسيقات و <code>‎$src</code> مسار الملف و <code>‎$dependencies</code> الذي يمثل الاعتماديات أو الملفات التي نحتاج لتحميلها قبل تحميل هذا الملف.
</p>

<p>
	على سبيل المثال لتحميل ملف <a href="https://academy.hsoub.com/programming/css/bootstrap/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%A5%D8%B7%D8%A7%D8%B1-%D8%A7%D9%84%D8%B9%D9%85%D9%84-%D8%A8%D9%88%D8%AA%D8%B3%D8%AA%D8%B1%D8%A7%D8%A8-5-r1315/" rel="">تنسيقات بوتستراب</a> في قالبنا واستخدامه لتنسيق عناصر الموقع نكتب الكود التالي:
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_5087_6" style=""><span class="kwd">function</span><span class="pln"> enqueue_bootstrap_styles</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    wp_enqueue_style</span><span class="pun">(</span><span class="pln"> </span><span class="str">'bootstrap'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'https://stackpath.bootstrapcdn.com/bootstrap/5.0.2/css/bootstrap.min.css'</span><span class="pun">,</span><span class="pln"> array</span><span class="pun">(),</span><span class="pln"> </span><span class="str">'5.0.2'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'all'</span><span class="pln"> </span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
add_action</span><span class="pun">(</span><span class="pln"> </span><span class="str">'wp_enqueue_scripts'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'enqueue_bootstrap_styles'</span><span class="pln"> </span><span class="pun">);</span><span class="pln">
</span><span class="pun">);</span></pre>

<p>
	كما تلاحظ يتم ربط استدعاء الدالة <code>wp_enqueue_style</code> مع الخطاف <code>wp_enqueue_scripts</code> الذي يقع عند تحميل ملفات التنسيقات والسكربتات في صفحات الموقع وبهذا نتمكن من استخدام تنسيقات بوتستراب في القالب مباشرة.
</p>

<p>
	لكننا في هذه السلسلة سنعتمد فقط على <a href="https://academy.hsoub.com/programming/css/%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A7%D8%AA-%D9%84%D8%BA%D8%A9-css-r1688/" rel="">تعليمات CSS</a> صرفة لتنسيق قالبنا الحالي بتنسيقات بسيطة لذا سنكتفي فقط بملف التنسيقات الأساسي style.css الذي ربطناه مع القالب في المقال السابق من السلسلة وسنكتب كافة التنسيقات المطلوبة للقالب ضمنه.
</p>

<h2>
	خطوات تنسيق قالب ووردبريس
</h2>

<p>
	بعد أن انتهينا من إنشاء كافة الملفات اللازمة للقالب وحددنا و وكتبنا الأكواد والدوال اللازمة لعرض المحتوى المطلوب، تأتي مرحلة تنسيق هذا المحتوى بواسطة أكواد CSS لنحوله من هذا الشكل:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="gif" data-fileid="130858" href="https://academy.hsoub.com/uploads/monthly_2023_07/wordpress_theme_whithout_css.gif.27404deafb80990e90fe97323ffa1aa1.gif" rel=""><img alt="wordpress_theme_whithout_css.gif" class="ipsImage ipsImage_thumbnailed" data-fileid="130858" data-ratio="52.88" data-unique="vjkhndms6" style="width: 800px; height: 423px;" width="800" src="https://academy.hsoub.com/uploads/monthly_2023_07/wordpress_theme_whithout_css.thumb.gif.42c47cc0e7ef2c4c8fa7233e9b053877.gif"> </a>
</p>

<p>
	إلى هذا الشكل:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="gif" data-fileid="130859" href="https://academy.hsoub.com/uploads/monthly_2023_07/wordpress_theme_custom_css.gif.eeb112e17b36eebef523a7a2fe53ce8b.gif" rel=""><img alt="wordpress _theme_custom_css.gif" class="ipsImage ipsImage_thumbnailed" data-fileid="130859" data-ratio="52.88" data-unique="e652udq1o" style="width: 800px; height: 423px;" width="800" src="https://academy.hsoub.com/uploads/monthly_2023_07/wordpress_theme_custom_css.thumb.gif.f4ed5e81584296e50fff1709c6fc1ad8.gif"> </a>
</p>

<p>
	يفضل أن ننسق العناصر من أعلى لأسفل كي نتمكن من تعيين الأولويات بشكل صحيح في الصفحة. كما يفضل أن نحدد أنماط عامة مشتركة للعناصر لجعل القالب أكثر تنظيمًا وسهولة في الصيانة.
</p>

<p>
	سنعمل في الفقرات التالية على تصميم الأقسام الثلاثة لقالبنا وهي الترويسة header وجسم الصفحة body والتذييل footer، وننسق كل العناصر التي تضمها هذه الأقسام لتظهر وفق الشكل المطلوب. لنبدأ بكل جزء على حدا ونشرح أبرز التنسيقات التي استخدمناها فيه.
</p>

<h2>
	تنسيقات عامة للقالب
</h2>

<p>
	بداية سنضع مجموعة تنسيقات عامة لكافة العناصر في المستند من خلال المحدد <code>*</code> ونمرر قيم عامة نريد استخدامها بشكل افتراضي في كامل الموقع مثل نوع الخط ولون الخط والمسافة بين الأسطر <a href="https://wiki.hsoub.com/CSS/line-height" rel="external"><code>line-height</code></a> وقيم الحواشي الداخلية <a href="https://wiki.hsoub.com/CSS/padding" rel="external"><code>padding</code></a> والهوامش الخارجية <a href="https://wiki.hsoub.com/CSS/margin" rel="external"><code>margin</code></a> للعناصر
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5087_10" style=""><span class="com">/**  تنسيق عام */</span><span class="pln">
</span><span class="pun">*</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">padding</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
  </span><span class="kwd">margin</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
  </span><span class="kwd">font-family</span><span class="pun">:</span><span class="pln"> </span><span class="str">'Cairo'</span><span class="pun">,</span><span class="pln"> sans-serif</span><span class="pun">;</span><span class="pln">
  </span><span class="kwd">color</span><span class="pun">:</span><span class="pln"> </span><span class="lit">#666571</span><span class="pun">;</span><span class="pln">
  </span><span class="kwd">line-height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">2</span><span class="pun">;</span><span class="pln">
  </span><span class="kwd">box-sizing</span><span class="pun">:</span><span class="pln"> border-box
</span><span class="pun">}</span></pre>

<p>
	ففي هذا الكود أزلنا الهوامش الداخلية بتعليمة <code>padding: 0</code> لجميع العناصر كما أزلنا الهوامش الخارجية بتعليمة <code>margin: 0</code> كما عينا نوع الخط لجميع العناصر إلى الخط Cairo والخط البديل sans-serif وحددنا لون النص رمادي داكن <code>‎#‎‎424149</code>.
</p>

<p>
	بعدها سننسق وسم العنصر الجذر <a href="https://wiki.hsoub.com/HTML/html" rel="external"><code>html</code></a> ووسم الحاوية العامة <a href="https://wiki.hsoub.com/HTML/div" rel="external"><code>div</code></a> التي عرفناها في ملف header.php لتضم المحتوى الأساسي للصفحات والتي كنا قد أسندنا لها الصنف <code>wrapper-container</code> وننسق الروابط العامة في الموقع كما يلي:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5087_12" style=""><span class="pln">html </span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">position</span><span class="pun">:</span><span class="pln"> relative</span><span class="pun">;</span><span class="pln">
  </span><span class="kwd">min-height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100%</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">wrapper-container </span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">max-width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100%</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

a </span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">text-decoration</span><span class="pun">:</span><span class="pln"> none</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	حددنا في الكود أعلاه قيمة الخاصية <a href="https://wiki.hsoub.com/CSS/position" rel="external"><code>position</code></a> للعنصر الجذر <code>html</code> لتكون <code>relative</code> أي نسبي كي نتمكن تحديد موضع العناصر الفرعية لهذا العنصر نسبة لوضعية العنصر الجذر كما حددنا قيمة <code>min-height</code> لتكون 100% كي نعين ارتفاع العنصر <code>html</code> ليكون على الأقل 100٪ من ارتفاع الشاشة لنضمن أن العناصر التي يحتويها لن تظهر خارج الشاشة.
</p>

<p>
	وبالنسبة للعنصر <code>div</code> الذي له الصنف <code>wrapper-container</code> فقد عينا له الخاصية <code>max-width</code> بالقيمة 100% لتحديد الحد الأقصى لعرض العنصر <code>div</code> بنسبة 100% من العنصر الأم الذي يحتوي عليه وهي تساعد في جعل التصميم مرن ومتجاوب Responsive فالعنصر لن يتجاوز في هذه الحالة عرض العنصر الذي يحتوي عليه وبالتالي عند تصغير حجم الشاشة سيتقلص عرض العنصر <code>div</code> ويتكيف مع الحجم الجديد ويمتد ضمن المساحة المتاحة دون أن يتجاوزها.
</p>

<p>
	أخيرًا أزلنا أي زخرفة نصية مطبقة على نصوص الروابط <a href="https://wiki.hsoub.com/HTML/a" rel="external"><code>a</code></a> في صفحات الموقع مثل خاصية التسطير من خلال إعطاء الخاصية <a href="https://wiki.hsoub.com/CSS/text-decoration" rel="external">text-decoration</a> القيمة <code>none</code> لتوحيد التنسيق بينها وتحسين تجربة المستخدم وبعدها يمكننا أن نطبق تنسيقات مخصصة أخرى على كل رابط في الصفحة حسب الحاجة.
</p>

<h2>
	تنسيق القائمة الثانوية والأساسية في ترويسة القالب
</h2>

<p>
	تتضمن ترويسة قالبنا كما تعرف ثلاثة أقسام وهي القائمة الثانوية ثم المنزلق ثم القائمة الرئيسية وسنبدأ بتنسيق القوائم والعناصر التي بداخلها واحدًا تلو الآخر.
</p>

<p>
	نبدأ بالقسم <code>section</code> الذي يضم القائمة الرئيسية العلوية ويملك الصنف <code>rtl-Primary-nav</code> والقسم الذي يضم القائمة الثانوية السفلية ويملك الصنف <code>rtl-Secondary-nav</code> ونحدد بعض الخصائص لكل قائمة بما يناسب التصميم.
</p>

<p>
	يلزمنا تخصيص لون الخلفية ليكون من درجات اللون الأصفر، وإلغاء التعداد النطقي أو النقاط الافتراضية التي تظهر بجانب عناصر القائمة من خلال الخاصية <code>list-style:none</code> وتخصيص تنسيقات روابط القوائم وقيم الهوامش والمحاذاة المناسبة ومن الضروري كذلك تحديد طريقة تموضع عناصر القوائم من خلال الخاصية <code>display: inline-flex</code> لجعلها تظهر بجانب بعضها على سطر واحد وللقيام بكل ما سبق نضيف كود التنسيق التالي:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5087_14" style=""><span class="pun">.</span><span class="pln">rtl-Primary-nav</span><span class="pun">,</span><span class="pln">
</span><span class="pun">.</span><span class="pln">rtl-Secondary-nav </span><span class="pun">{</span><span class="pln">
</span><span class="kwd">width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100%</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">rtl-Primary-nav </span><span class="pun">{</span><span class="pln">
</span><span class="kwd">background</span><span class="pun">:</span><span class="pln"> </span><span class="lit">#f6c86c</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">padding-top</span><span class="pun">:</span><span class="pln"> </span><span class="lit">20px</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">padding-left</span><span class="pun">:</span><span class="pln"> </span><span class="lit">5px</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">rtl-Primary-nav img </span><span class="pun">{</span><span class="pln">
</span><span class="kwd">max-width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100px</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">max-height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100px</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">width</span><span class="pun">:</span><span class="pln"> auto</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">height</span><span class="pun">:</span><span class="pln"> auto</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">padding-top</span><span class="pun">:</span><span class="pln"> </span><span class="lit">20px</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">logo-link </span><span class="pun">{</span><span class="pln">
</span><span class="kwd">margin</span><span class="pun">:</span><span class="pln"> </span><span class="lit">2%</span><span class="pln"> </span><span class="lit">4%</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">rtl-Secondary-nav </span><span class="pun">{</span><span class="pln">
</span><span class="kwd">background</span><span class="pun">:</span><span class="pln"> </span><span class="lit">#F9B01B</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

nav ul </span><span class="pun">{</span><span class="pln">
</span><span class="kwd">display</span><span class="pun">:</span><span class="pln"> inline-flex</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">list-style</span><span class="pun">:</span><span class="pln"> none</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

nav ul li </span><span class="pun">{</span><span class="pln">
</span><span class="kwd">padding</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="lit">5%</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

nav ul li a </span><span class="pun">{</span><span class="pln">
</span><span class="kwd">text-decoration</span><span class="pun">:</span><span class="pln"> none</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">color</span><span class="pun">:</span><span class="pln"> black</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">font-weight</span><span class="pun">:</span><span class="pln"> bold</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">font-size</span><span class="pun">:</span><span class="pln"> </span><span class="lit">14pt</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">white-space</span><span class="pun">:</span><span class="pln"> nowrap</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

nav ul li </span><span class="kwd">a</span><span class="pun">:</span><span class="pln">hover </span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">color</span><span class="pun">:</span><span class="pln"> </span><span class="lit">#fff</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<h2>
	تنسيق المنزلق Slider
</h2>

<p>
	بعد الانتهاء من القوائم سننسق القسم المخصص لعرض شريط المقالات المتحرك أو المنزلق وهو عبارة عن عنصر <code>section</code> له الصنف <code>slider</code> وبداخله حاوية <code>div</code> لها الصنف <code>slider-container</code> تتضمن حاليًا صورة واحدة ثابتة فقط واخترنا هنا نفس الصورة screenshot.png التي أضفناها في مجلد القالب.
</p>

<p>
	في المقال التالي من هذه السلسلة سنغير قليلًا في تنسيقات هذا القسم ونضيف له عناصر إضافية لنحوله إلى منزلق متحرك حيث سنستخدم <a href="https://academy.hsoub.com/programming/javascript/%D8%A7%D9%84%D8%AF%D9%84%D9%8A%D9%84-%D8%A7%D9%84%D8%B3%D8%B1%D9%8A%D8%B9-%D8%A5%D9%84%D9%89-%D9%84%D8%BA%D8%A9-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D8%AC%D8%A7%D9%81%D8%A7%D8%B3%D9%83%D8%B1%D9%8A%D8%A8%D8%AA-javascript-r550/" rel="">أكواد جافا سكريبت</a> لجعله يعمل بالشكل المطلوب:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5087_16" style=""><span class="com">/** تنسيق المنزلق */</span><span class="pln">

</span><span class="pun">.</span><span class="pln">slider </span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">background-color</span><span class="pun">:</span><span class="pln"> </span><span class="lit">#f1eef6</span><span class="pun">;</span><span class="pln">
  </span><span class="kwd">justify-content</span><span class="pun">:</span><span class="pln"> center</span><span class="pun">;</span><span class="pln">
  </span><span class="kwd">align-items</span><span class="pun">:</span><span class="pln"> center</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">slider img </span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">display</span><span class="pun">:</span><span class="pln"> block</span><span class="pun">;</span><span class="pln">
  </span><span class="kwd">margin</span><span class="pun">:</span><span class="pln"> auto</span><span class="pun">;</span><span class="pln">
  </span><span class="kwd">max-width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">60%</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	كما تلاحظ في هذا الكود فقد غيرنا لون خلفية القسم <code>section</code> الذي يعرض المنزلق للون الرمادي الفاتح ونسقنا محاذاة العناصر ضمنه لتكون في المركز أفقيًا وعموديًا كما نسقنا الصورة المعروضة ضمن القسم لتظهر بشكل كتلة مستقلة وجعلنا هوامشها <code>margin: auto</code> لتكون متساوية من جميع الجهات وجعلنا العرض الأقصى للصورة هو 80 بالمئة من العرض الكلي للقسم الذي يحتويها لتظهر بحجم مناسب.
</p>

<h2>
	تنسيق جسم الصفحة الخاصة بقالب ووردبريس
</h2>

<p>
	إذا استعرضنا الصفحة الرئيسية للموقع سنلاحظ أن المقالات تعرض فيها تحت بعضها البعض وأن الصور تظهر بحجم كبير والمحتوى ملاصق للهامش الأيمن للصفحة كما في الصورة التالية:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="131107" href="https://academy.hsoub.com/uploads/monthly_2023_07/246153241_.png.50306f3843fc276e9fcca6448a299b83.png" rel=""><img alt="مقالات  الصفحة الرئيسية قبل التنسيق.png" class="ipsImage ipsImage_thumbnailed" data-fileid="131107" data-ratio="116.00" data-unique="ftuf3s7xd" style="width: 400px; height: auto;" width="517" src="https://academy.hsoub.com/uploads/monthly_2023_07/.thumb.png.ba11bf93ae481e45819f3007f35651ca.png"></a>
</p>

<p>
	كذلك الأمر إذا استعرضنا صفحات الأرشيف أو صفحة المقال المفرد أو الصفحات الداخلية للموقع لذا نحتاج لتعديل تنسيق كافة العناصر التي تظهر في جسم الصفحة الرئيسية وبقية صفحات الموقع لتظهر وفق التصميم المقترح.
</p>

<p>
	نعرض جسم الصفحة كما وضحنا في المقال السابق في حاوية <code>div</code> لها الصنف <code>main</code> ورغم أن العناصر التي تضمها الحاوية قد تختلف من صفحة لأخرى إلا أنها تنسق بنفس الطريقة التي تنسق بها باقي العناصر، في قالبنا أضفنا التنسيقات التالية لعناصر جسم الصفحة:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5087_18" style=""><span class="com">/** تنسيق محتوى الصفحة */</span><span class="pln">
</span><span class="pun">.</span><span class="pln">main </span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100%</span><span class="pun">;</span><span class="pln">
  </span><span class="kwd">display</span><span class="pun">:</span><span class="pln"> inline-block</span><span class="pun">;</span><span class="pln">
  </span><span class="kwd">padding</span><span class="pun">:</span><span class="pln"> </span><span class="lit">30px</span><span class="pln"> </span><span class="lit">0px</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">main </span><span class="kwd">a</span><span class="pun">:</span><span class="pln">hover </span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">text-decoration</span><span class="pun">:</span><span class="pln"> underline</span><span class="pun">;</span><span class="pln">
  </span><span class="kwd">color</span><span class="pun">:</span><span class="pln"> </span><span class="lit">#F9B01B</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">post-qwe </span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">display</span><span class="pun">:</span><span class="pln"> inline-block</span><span class="pun">;</span><span class="pln">
  </span><span class="kwd">width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">30%</span><span class="pun">;</span><span class="pln">
  </span><span class="kwd">margin</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="lit">1.5%</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">page-title-qwe </span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">font-size</span><span class="pun">:</span><span class="pln"> </span><span class="lit">12pt</span><span class="pun">;</span><span class="pln">
  </span><span class="kwd">font-weight</span><span class="pun">:</span><span class="pln"> bold</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">post-qwe img </span><span class="pun">,</span><span class="pln"> </span><span class="pun">.</span><span class="pln">post_thumbnail img</span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">max-width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">90%</span><span class="pun">;</span><span class="pln">
  </span><span class="kwd">height</span><span class="pun">:</span><span class="pln"> auto</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">post-qwe p </span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">90%</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">post-qwe </span><span class="kwd">img</span><span class="pun">:</span><span class="pln">hover</span><span class="pun">,</span><span class="pln">
</span><span class="pun">.</span><span class="pln">slider </span><span class="kwd">img</span><span class="pun">:</span><span class="pln">hover </span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">border</span><span class="pun">:</span><span class="pln"> solid </span><span class="lit">2px</span><span class="pln"> </span><span class="lit">#F9B01B</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	حددنا عرض الحاوية 100% لتكون ممتدة على كامل عرض الصفحة وطريقة عرض العناصر داخلها <code>inline-block</code> لتظهر على نفس السطر واحد لكن كل مقال ضمن بلوك مستقل ثم حددنا الهامش الداخلي لها <code>padding</code> ليكون 30 بكسل في الأعلى والأسفل وصفر على اليمين واليسار اليمنى واليسرى، وأضفنا تأثيرًا على الروابط ليظهر لونها بالأصفر عند مرور الفأرة فوقها
</p>

<p>
	كما حددنا طريقة عرض الحاوية التي لها الصنف <code>post-qwe</code> والخاصة بعرض كل مقال لتكون كذلك <code>inline-block</code> لكن كل حاوية 30% من العرض الكلي للحاوية <code>main</code> وبهذا تظهر كل 3 مقالات على سطر مستقل. أضفنا كذلك تنسيقات للصور المصغرة والعناوين والمقتطفات الخاصة بالمقال لتكون النتيجة بعد إضافات التنسيقات كما يلي
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="130853" href="https://academy.hsoub.com/uploads/monthly_2023_07/1921094630_.png.33f7e8efc11bd270623b9192192ec833.png" rel=""><img alt="مقالات الصفحة الرئيسية بعد التنسيق.png" class="ipsImage ipsImage_thumbnailed" data-fileid="130853" data-unique="qf8ubutiq" src="https://academy.hsoub.com/uploads/monthly_2023_07/.thumb.png.889d63f911faa7a9bb6a946b4a148cc1.png"> </a>
</p>

<h2>
	تنسيق شريط التنقل
</h2>

<p>
	يعرض شريط التنقل رابط باسم الصفحة السابقة والصفحة التالية وهي تعرض عادة على صفحة المدونة وصفحات الأرشيف وأي صفحات تعرض مجموعة من المنشورات لتسمح لنا بالتنقل فيما بينها.
</p>

<p>
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="131068" href="https://academy.hsoub.com/uploads/monthly_2023_07/149714487_.png.70b5b9f1364d72fd706c44b33e096911.png" rel=""><img alt="قسم التنقل قبل التنسيق.png" class="ipsImage ipsImage_thumbnailed" data-fileid="131068" data-ratio="7.56" data-unique="pahn2ym67" width="900" src="https://academy.hsoub.com/uploads/monthly_2023_07/.thumb.png.713b41aecc11923a85d5903685e2d0fd.png"></a>
</p>

<p>
	في قالبنا عرضنا روابط شريط التنقل ضمن <code>div</code> لها الصنف <code>pagination</code> بعد عرض أحدث ست مقالات منشورة في المدونة وسوف ننسقها ونغير طريقة عرضها بما يناسب تصميم قالبنا كما يلي:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5087_20" style=""><span class="com">/* تنسيق قسم التننقل  */</span><span class="pln">

</span><span class="pun">.</span><span class="pln">pagination </span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">text-align</span><span class="pun">:</span><span class="pln"> center</span><span class="pun">;</span><span class="pln">
  </span><span class="kwd">line-height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">5</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">pagination a </span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">color</span><span class="pun">:</span><span class="pln"> </span><span class="lit">#000</span><span class="pun">;</span><span class="pln">
  </span><span class="kwd">margin</span><span class="pun">:</span><span class="pln"> </span><span class="lit">10px</span><span class="pln"> </span><span class="lit">20px</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

nav</span><span class="pun">.</span><span class="pln">pagination </span><span class="kwd">a</span><span class="pun">:</span><span class="pln">hover</span><span class="pun">,</span><span class="pln">
nav</span><span class="pun">.</span><span class="pln">pagination </span><span class="kwd">a</span><span class="pun">:</span><span class="pln">hover </span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">background-color</span><span class="pun">:</span><span class="pln"> </span><span class="lit">#f6c86c</span><span class="pun">;</span><span class="pln">
  </span><span class="kwd">color</span><span class="pun">:</span><span class="pln"> white</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	من أبرز التنسيقات التي قمنا بها لشريط التنقل هي محاذاة روابط التنقل في الوسط وتحديد ارتفاع السطر لروابط التنقل ليكون 5 أضعاف حجم الخط فإذا كان حجم الخط 10 نقطة سيكون ارتفاع السطر 50 نقطة لتحقيق تباعد أكبر بين الأسطر في قسم التنقل وتسهيل رؤية الروابط فيه، كما حددنا لون نص الرابط ليكون أسود وغيرنا لون الخلفية للأصفر ولون النص للأبيض عند مرور مؤشر الفأرة فوق الرابط.
</p>

<p>
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="131069" href="https://academy.hsoub.com/uploads/monthly_2023_07/1788768020_.png.932bf496534b8179cdb7d66b17c73705.png" rel=""><img alt="قسم التنقل بعد التنسيق.png" class="ipsImage ipsImage_thumbnailed" data-fileid="131069" data-ratio="9.44" data-unique="7wxezp6ik" width="900" src="https://academy.hsoub.com/uploads/monthly_2023_07/.thumb.png.b2d212105a351934798fd87116e939a8.png"></a>
</p>

<h2>
	تنسيق تذييل قالب ووردبريس
</h2>

<p>
	أخيرًا حان دور تنسيق تذييل القالب بشكل جميل وجذاب متوافق مع تصميم الموقع العام ومع بقية أجزاء الموقع. يتضمن التذييل الخاص بقالب ووردبريس الخاص بنا قسمين، القسم الأول <code>section</code> يملك الصنف <code>footer-qwe</code> ويعرض بداخلة مجموعة من الودجات كل منها عبارة عن <code>div</code> لها الصنف <code>widget</code> والقسم الثاني هو <code>section</code> يعرض فقرة <code>p</code> لنص حقوق النشر ورابط للموقع وشكل التذييل قبل التنسيق كما يلي:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="PNG" data-fileid="130855" href="https://academy.hsoub.com/uploads/monthly_2023_07/1765497446_.PNG.f3ed1d12475088f583bfb4c830e3c622.PNG" rel=""><img alt="تذييل القالب قبل التنسيق.PNG" class="ipsImage ipsImage_thumbnailed" data-fileid="130855" data-unique="s3cmz66qf" src="https://academy.hsoub.com/uploads/monthly_2023_07/.thumb.PNG.17225b9e9c37b0e4c35d3afa3b2f2a1c.PNG"> </a>
</p>

<p>
	نضيف له التنسيقات التالية:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5087_22" style=""><span class="pun">.</span><span class="pln">footer-qwe </span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">background-color</span><span class="pun">:</span><span class="pln"> </span><span class="lit">#f6c86c</span><span class="pun">;</span><span class="pln">
  </span><span class="kwd">width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100%</span><span class="pun">;</span><span class="pln">
  </span><span class="kwd">display</span><span class="pun">:</span><span class="pln"> flex</span><span class="pun">;</span><span class="pln">
  </span><span class="kwd">justify-content</span><span class="pun">:</span><span class="pln"> space-around</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">


</span><span class="pun">.</span><span class="pln">footer-qwe li </span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">list-style</span><span class="pun">:</span><span class="pln"> none</span><span class="pun">;</span><span class="pln">
  </span><span class="kwd">color</span><span class="pun">:</span><span class="pln"> black</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">footer-qwe li a </span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">color</span><span class="pun">:</span><span class="pln"> black</span><span class="pun">;</span><span class="pln">
  </span><span class="kwd">white-space</span><span class="pun">:</span><span class="pln"> nowrap</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

section</span><span class="pun">.</span><span class="pln">footer-qwe </span><span class="pun">.</span><span class="pln">widget </span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">margin</span><span class="pun">:</span><span class="pln"> </span><span class="lit">2%</span><span class="pln"> </span><span class="lit">4%</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

footer </span><span class="kwd">a</span><span class="pun">:</span><span class="pln">hover </span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">color</span><span class="pun">:</span><span class="pln"> white</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

section</span><span class="pun">.</span><span class="pln">copyright </span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">display</span><span class="pun">:</span><span class="pln"> flex</span><span class="pun">;</span><span class="pln">
  </span><span class="kwd">background-color</span><span class="pun">:</span><span class="pln"> </span><span class="lit">#F9B01B</span><span class="pun">;</span><span class="pln">
  </span><span class="kwd">width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100%</span><span class="pun">;</span><span class="pln">
  </span><span class="kwd">align-items</span><span class="pun">:</span><span class="pln"> center</span><span class="pun">;</span><span class="pln">
  </span><span class="kwd">justify-content</span><span class="pun">:</span><span class="pln"> center</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	إليك شرحًا لأهم التنسيقات الواردة في الكود أعلاه؛ ففي البداية عينا لون خلفية القسم الأول من التذييل لتكون أصفر فاتح <code>‎#f6c86c</code> وعرضه 100‎%‎ من العنصر الحاوي له وحددنا نمط عرض عناصره ليكون من النمط المرن Flexbox مع توزيع المسافات بين العناصر بالتساوي من خلال الخاصية <code>justify-content: space-around</code>.
</p>

<p>
	كما حددنا بعض خواص عناصر القوائم والروابط في التذييل لأن بعض عناصر الودجات تظهر بشكل قوائم كل عنصر فيها رابط لصفحة أخرى وأهمها منع نص كل رابط من الانتقال لسطر جديد كي نحافظ على وضع كلمات الروابط على سطر واحد باستخدام الخاصية <code>white-space: nowrap</code>.
</p>

<p>
	وعينا كذلك خصائص القسم الثاني في التذييل وهو قسم حقوق النشر ليكون بخلفية أصفر داكن ونمط العرض المرن Flexbox ووسطنا عناصره أفقيًا وعموديًا لتظهر العبارة في وسط القسم تمامًا كما تشاهد في الصورة التالية.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="PNG" data-fileid="130856" href="https://academy.hsoub.com/uploads/monthly_2023_07/2031105881_.PNG.7e34a1a5df845518d49fac3a7baa57fa.PNG" rel=""><img alt="تذييل القالب بعد التنسيق.PNG" class="ipsImage ipsImage_thumbnailed" data-fileid="130856" data-unique="8agllembj" src="https://academy.hsoub.com/uploads/monthly_2023_07/.thumb.PNG.5773658126e55d58c9ff2be73e595043.PNG"> </a>
</p>

<h2>
	الخلاصة
</h2>

<p>
	إلى هنا نكون قد وصلنا لنهاية هذا المقال الذي شرحنا فيه بالخطوات المصورة كيف يمكننا تنسيق قالب ووردبريس بشكل بسيط من خلال <a href="https://academy.hsoub.com/programming/css/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D9%83%D8%AA%D8%A7%D8%A8%D8%A9-%D8%AA%D8%B9%D9%84%D9%8A%D9%85%D8%A7%D8%AA-css-%D9%8A%D8%B3%D9%87%D9%84-%D9%82%D8%B1%D8%A7%D8%A1%D8%AA%D9%87%D8%A7-r250/" rel="">تعليمات CSS</a> صرفة للحصول على مظهر أنيق ومرتب لعناصر الموقع وبالطبع يمكنك أن تطلق العنان لإبداعك وتضيف ما تشاء من تنسيقات وتأثيرات بصرية وألوان جذابة للقالب لتحسين تجربة المستخدم وعرض المحتوى باحترافية يعكس طبيعة علامتك التجارية.
</p>

<p>
	في المقال التالي من السلسلة سنتعرف على الطريقة المثلى لإضافة أكواد جافا سكريبت للقالب من أجل تحقيق ميزات إضافية مثل عرض محتوى مخصص أو إضافة شرائح صور متحركة وإضافة المزيد من التخصيص لتصميم قالب ووردبريس.
</p>

<p>
	<em>كتب المسودة الأولية للمقال <a href="https://academy.hsoub.com/profile/3732499-hesham-hussain2/" rel="">هشام حسين</a>.</em>
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
	<li>
		المقال السابق <a href="https://academy.hsoub.com/programming/php/wordpress/%D8%A5%D9%86%D8%B4%D8%A7%D8%A1-%D8%A7%D9%84%D9%85%D9%84%D9%81%D8%A7%D8%AA-%D8%A7%D9%84%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A9-%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D9%82%D8%A7%D9%84%D8%A8-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r2028/" rel="">إنشاء الملفات الأساسية لبرمجة قالب ووردبريس</a>
	</li>
	<li>
		المقال التالي <a href="https://academy.hsoub.com/programming/php/wordpress/%D8%A5%D8%B6%D8%A7%D9%81%D8%A9-%D8%A7%D9%84%D9%85%D9%85%D9%8A%D8%B2%D8%A7%D8%AA-%D9%84%D9%82%D8%A7%D9%84%D8%A8-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%AC%D8%A7%D9%81%D8%A7-%D8%B3%D9%83%D8%B1%D9%8A%D8%A8%D8%AA-r2035/" rel="">إضافة المميزات لقالب ووردبريس باستخدام جافا سكريبت</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/wordpress/" rel="">تعلم ووردبريس</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/php/wordpress/%D8%B5%D9%81-%D9%88%D8%AA%D8%B3%D8%AC%D9%8A%D9%84-%D9%85%D9%84%D9%81%D8%A7%D8%AA-javascript-%D9%88-css-%D9%81%D9%8A-%D9%82%D9%88%D8%A7%D9%84%D8%A8-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r79/" rel="">صف وتسجيل ملفات Javascript و CSS في قوالب ووردبريس</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/php/wordpress/%D9%83%D9%8A%D9%81-%D8%AA%D8%AD%D9%88%D9%91%D9%90%D9%84-%D9%82%D8%A7%D9%84%D8%A8-html-%D8%B3%D8%A7%D9%83%D9%90%D9%86-%D8%A5%D9%84%D9%89-%D9%82%D8%A7%D9%84%D8%A8-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-%D9%85%D8%AA%D8%AC%D8%A7%D9%88%D8%A8-%D8%AA%D8%AE%D8%B5%D9%8A%D8%B5-%D8%A7%D9%84%D9%85%D9%88%D9%82%D8%B9-r592/" rel="">كيف تحوِّل قالب HTML ساكِن إلى قالب ووردبريس متجاوب: تخصيص الموقع</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/css/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%A8%D9%86%D8%A7%D8%A1-%D9%85%D9%88%D9%82%D8%B9-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-css-r1879/" rel="">كيفية بناء موقع باستخدام CSS</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">2032</guid><pubDate>Wed, 19 Jul 2023 13:00:00 +0000</pubDate></item><item><title>&#x625;&#x646;&#x634;&#x627;&#x621; &#x627;&#x644;&#x645;&#x644;&#x641;&#x627;&#x62A; &#x627;&#x644;&#x623;&#x633;&#x627;&#x633;&#x64A;&#x629; &#x644;&#x628;&#x631;&#x645;&#x62C;&#x629; &#x642;&#x627;&#x644;&#x628; &#x648;&#x648;&#x631;&#x62F;&#x628;&#x631;&#x64A;&#x633;</title><link>https://academy.hsoub.com/programming/php/wordpress/%D8%A5%D9%86%D8%B4%D8%A7%D8%A1-%D8%A7%D9%84%D9%85%D9%84%D9%81%D8%A7%D8%AA-%D8%A7%D9%84%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A9-%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D9%82%D8%A7%D9%84%D8%A8-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r2028/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2023_07/--.png.62528d5090a088757c3a22226b02be82.png" /></p>
<p>
	بعد أن وضحنا أهم المعلومات الأساسية التي يجب على مطور قالب ووردبريس معرفتها قبل البدء في برمجة القوالب، سنبدأ في هذا المقال بشكل فعلي بإنشاء كافة الملفات المطلوبة لعمل القالب وبرمجتها باستخدام لغتي <a href="https://academy.hsoub.com/programming/php/%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-%D9%84%D8%BA%D8%A9-php-r2040/" rel="">PHP </a>و HTML.
</p>

<p>
	هذا المقال هو المقال  الثالث من سلسلة المقالات التالية:
</p>

<ul>
	<li>
		<a href="https://academy.hsoub.com/programming/php/wordpress/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D9%82%D9%88%D8%A7%D9%84%D8%A8-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r2017/" rel="">مدخل إلى برمجة قوالب ووردبريس</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/php/wordpress/%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A7%D8%AA-%D8%AA%D8%B7%D9%88%D9%8A%D8%B1-%D9%82%D8%A7%D9%84%D8%A8-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r2027/" rel="">أساسيات تطوير قالب ووردبريس</a>
	</li>
	<li>
		<span ipsnoautolink="true">إنشاء الملفات الأساسية لبرمجة قالب ووردبريس</span>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/php/wordpress/%D8%A5%D8%B6%D8%A7%D9%81%D8%A9-%D8%AA%D9%86%D8%B3%D9%8A%D9%82%D8%A7%D8%AA-css-%D9%84%D9%82%D8%A7%D9%84%D8%A8-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r2032/" rel="">إضافة تنسيقات CSS لقالب ووردبريس</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/php/wordpress/%D8%A5%D8%B6%D8%A7%D9%81%D8%A9-%D8%A7%D9%84%D9%85%D9%85%D9%8A%D8%B2%D8%A7%D8%AA-%D9%84%D9%82%D8%A7%D9%84%D8%A8-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%AC%D8%A7%D9%81%D8%A7-%D8%B3%D9%83%D8%B1%D9%8A%D8%A8%D8%AA-r2035/" rel="">إضافة المميزات لقالب ووردبريس باستخدام جافا سكريبت</a>
	</li>
</ul>

<p>
	لنتعرف على الهيكلية العامة لمجلدت وملفات قالب ووردبريس ونبدأ بإنشاء الملفات الضرورية لقالبنا المخصص.
</p>

<h2>
	إنشاء مجلد خاص بقالب ووردبريس
</h2>

<p>
	سنسمي قالبنا الحالي بالاسم modawanty أي مدونتي لذا سننشئ مجلدًا بهذا الاسم على خادم محلي داخلي localhost ولن نحتاج للاتصال بالإنترنت، كما سنعتمد على محرر الأكواد فيجوال ستوديو كود VS Code فهو يحتوي على إمكانيات متعددة لتسهيل العمل فإذا لم تكن قد حولت حاسوبك إلى خادم محلي بعد ولم تنشئ موقع ووردبريس تجريبي بعد لا تقلق يمكنك القيام بذلك من خلال خطوات سهلة وبسيطة مشروحة بالتفصيل في مقال <a href="https://academy.hsoub.com/programming/php/wordpress/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%AA%D8%AB%D8%A8%D9%8A%D8%AA-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r1248/" rel="">كيفية تثبيت ووردبريس</a> وفي مقال <a href="https://academy.hsoub.com/apps/web/wordpress/%D8%AF%D9%84%D9%8A%D9%84%D9%83-%D8%A7%D9%84%D9%85%D8%B5%D9%88%D8%B1-%D9%84%D8%AA%D8%AB%D8%A8%D9%8A%D8%AA-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-%D9%88%D8%A7%D9%84%D8%A8%D8%AF%D8%A1-%D8%A8%D8%A5%D9%86%D8%B4%D8%A7%D8%A1-%D9%85%D8%AA%D8%AC%D8%B1-%D9%88%D9%88%D9%83%D9%88%D9%85%D8%B1%D8%B3-r393/" rel="">دليلك المصور لتثبيت ووردبريس والبدء بإنشاء متجر ووكومرس</a>.
</p>

<p>
	بعدها سيكون عليك إنشاء مجلد خاص بقالب ووردبريس وتسميه modawanty داخل مجلد القوالب themes الموجود كما شرحنا في الدرس السابق ضمن المجلد wp-content داخل الدليل الجذر لموقع ووردبريس الخاص بك، وبعدها سننشئ في هذا المجلد مجموعة ملفات القالب التالية المبينة في الصورة التالية.
</p>

<p style="text-align: center;">
	<img alt="ملفات قالب ووردبريس مدونتي.png" class="ipsImage ipsImage_thumbnailed" data-fileid="130507" data-unique="5ag3utl3h" style="width: 600px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2023_07/189784001_.png.c7a492b0740820cd2ccb773781783342.png">
</p>

<p>
	تذكر أن لكل ملف من هذه الملفات استخدامًا مخصصًا فبعضها ملفات templates تستدعى ضمنيًا من قبل نظام ووردبريس لعرض صفحات الموقع المختلفة مثل index.php و page.php و archive.php وبعضها ملفات قالب جزئية تستخدم لتجميع الأكواد المتكررة في أكثر من مكان في الموقع مثل header.php و footer.php وإليك قائمة مختصرة بأسماء ووصف كل ملف من بينها:
</p>

<ol>
	<li>
		index.php: ملف عرض الصفحة الرئيسية للموقع وأي صفحة لا تحوي ملف مخصص لعرضها
	</li>
	<li>
		style.css: ملف تنسيقات القالب الأساسي ويحتوي بعض البيانات التعريفية حول القالب
	</li>
	<li>
		header.php: ملف ترويسة القالب ويعرض عادة قوائم التنقل في الموقع والشعار وعناوين الصفحات وما إلى ذلك وقد يحتوي معلومات عن ملفات خارجية يستخدمها القالب مثل ملفات تنسيق CSS إضافية.
	</li>
	<li>
		footer.php: ملف تذييل القالب يعرض معلومات مثل قائمة التذييل وبعض الودجات وعبارة حقوق النشر وقد يستدعي ملفات JS مستخدمة في الموقع.
	</li>
	<li>
		archive.php: ملف عرض صفحات أرشيف مقالات الموقع.
	</li>
	<li>
		page.php: ملف عرض الصفحات الفردية في الموقع.
	</li>
	<li>
		single.php: ملف عرض المقالات الفردية في الموقع.
	</li>
	<li>
		slideshow.php: ملف لعرض أحدث منشورات الموقع بشكل شريط منزلق
	</li>
	<li>
		screenshot.png: ملف الصورة المصغرة الخاصة بالقالب عند عرضه في لوحة التحكم
	</li>
	<li>
		functions.php: ملف لإضافة وظائف وميزات إضافة للقالب
	</li>
	<li>
		مجلد images: لتخزين صور خاصة بالقالب
	</li>
	<li>
		مجلد js: لتخزين أكواد جافا سكريبت الخاصة بالقالب
	</li>
</ol>

<p>
	تذكر أن أول ملفين من بين هذه الملفات كافيان لعمل القالب بالحد الأدنى، لكن لا يوجد قالب ووردبريس فعلي يكتفي بهذين الملفين، فالملفات الأخرى ضرورية لمزيد من التخصيص للقالب وعرض المحتوى في الموقع بأشكال مختلفة ويمكن أن تنشئ هنا ما تشاء من ملفات مخصصة حسب طبيعة موقعك إذا فهمت طريقة استدعاء الملفات وتسلسلها الهرمي بشكل جيد.
</p>

<p>
	كما تلاحظ ملفاتنا لا زالت فارغة وخالية من أي كود وفي الفقرات التالية سنتعرف على مزيد من التفاصيل سنكتب كافة الشيفرات الضرورية لعمله بالشكل الصحيح في قالبنا.
</p>

<div class="banner-container ipsBox ipsPadding">
	<div class="inner-banner-container">
		<p class="banner-heading">
			دورة تطوير تطبيقات الويب باستخدام لغة PHP
		</p>

		<p class="banner-subtitle">
			احترف تطوير النظم الخلفية والووردبريس وتطبيقات الويب من الألف إلى الياء دون الحاجة لخبرة برمجية مسبقة
		</p>

		<div>
			<a class="ipsButton ipsButton_large ipsButton_primary ipsButton_important" href="https://academy.hsoub.com/learn/php-web-application-development/" rel="">اشترك الآن</a>
		</div>
	</div>

	<div class="banner-img">
		<img alt="دورة تطوير تطبيقات الويب باستخدام لغة PHP" src="https://academy.hsoub.com/learn/assets/images/courses/php-web-application-development.png">
	</div>
</div>

<h2>
	ملف تنسيقات قالب ووردبريس style.css
</h2>

<p>
	سنبدأ كخطوة أولى ببرمجة ملف التنسيقات الأساسي للقالب style.css وإضافة البيانات الأولية الوصفية لقالبنا مثل اسم القالب واسم مطور القالب والوصف والإصدار وبعض التفاصيل الأخرى وسنضيف تنسيقات عناصر الموقع لهذا الملف القالب عند تحويل تصميم الموقع إلى أكواد CSS في الأجزاء المقبلة من السلسلة.
</p>

<p>
	فكي يتم تثبيت القالب على موقع ووردبريس، يجب أن يظهر القالب في القائمة الفرعية <strong>قوالب</strong> من التبويب <strong>مظهر</strong> في لوحة تحكم ووردبريس حيث ستعرض واجهة خاصة بالقالب لتفعيله وعرض معلومات عنه من خلال لوحة تحكم موقع ووردبريس وهذا يتم من خلال كتابة البيانات الوصفية في ملف التنسيقات.
</p>

<p>
	سنفتح ملف style.css في محرر الأكواد فيجوال ستوديو كود VS Code ونضيف هذه البيانات في بدايته بشكل تعليق كالتالي:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_9249_7" style=""><span class="com">/*
Theme Name: modawanty
Theme URI: https://www.example.com
Author: Hsoub Academy
Author URI: https://academy.hsoub.com/
Version: 1.0
Description: هذا قالب لتعليم المبتدئين كيفية برمجة قالب ووردبريس من الصفر
License: GPLv3 or later
License URI:  https://www.gnu.org/licenses/gpl-3.0.html
Tags: rtl-language-support, editor-style
*/</span></pre>

<p>
	وكما هو واضح فهذه البيانات توضح اسم القالب Theme Name ورابط القالب Theme URI، واسم مطوره Author ورابط المطور Author URI، وإصدار القالب Version ووصف مختصر عن هذا القالب Description ووسوم Tags لأهم مميزاته وخواصه ورخصة استخدامه سواء خاصة أو متاحة للجميع أو أي نوع من التراخيص مثل رخصة GNU وهي رخصة للمشاع الإبداعي وتمكن أي مستخدم للقالب من إعادة استخدامه أو إضافة أكواد له، وفي الدرس التالي من هذه السلسلة سنضيف الكثير من قواعد التنسيق لهذا الملف.
</p>

<h2>
	برمجة ملف الصفحة الرئيسية index.php
</h2>

<p style="text-align: center;">
	<img alt="برمجة قالب ووردبريس الصفحة الرئيسية.png" class="ipsImage ipsImage_thumbnailed" data-fileid="130496" data-unique="9jmc9tvxp" style="width: 600px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2023_07/909734196_.png.63b38f97d5d4e9d62383fc50e183c84d.png">
</p>

<p>
	ننتقل الآن إلى برمجة ملف القالب الأساسي index.php وهو ملف قالب template لا يمكن الاستغناء عنه عند برمجة قالب ووردبريس، فمن خلاله تتم كتابة الأكواد التي ستعرض الصفحة الرئيسية للموقع وباقي الصفحات الأخرى في حال عدم وجود ملفات أكثر تخصيصًا لعرضها.
</p>

<p>
	تكتب الأكواد الخاصة بملف index.php بالطريقة المعتادة لكتابة أي ملف PHP حيث يمكن إضافة أكواد PHP إلى كود HTML ضمن وسمي <code>&lt;?php?&gt;</code> أو إضافة أكواد HTML إلى ملف PHP باستخدام <code>echo</code> أو <code>print</code>.
</p>

<p>
	سنبدأ كتابة الأكواد الأساسية في محرر فيجوال ستوديو كود من خلال كتابة <code>html:5</code> ثم ضغط مفتاح tab على لوحة المفاتيح وهذا الاختصار ينشئ لنا الأكواد الرئيسية لملف HTML بشكل تلقائي وستكون الأكواد الناتجة هي كالتالي:
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_9249_10" style=""><span class="dec">&lt;!DOCTYPE html&gt;</span><span class="pln">
</span><span class="tag">&lt;html</span><span class="pln"> </span><span class="atn">lang</span><span class="pun">=</span><span class="atv">"en"</span><span class="tag">&gt;</span><span class="pln">
</span><span class="tag">&lt;head&gt;</span><span class="pln">
    </span><span class="tag">&lt;meta</span><span class="pln"> </span><span class="atn">charset</span><span class="pun">=</span><span class="atv">"UTF-8"</span><span class="tag">&gt;</span><span class="pln">
    </span><span class="tag">&lt;meta</span><span class="pln"> </span><span class="atn">name</span><span class="pun">=</span><span class="atv">"viewport"</span><span class="pln"> </span><span class="atn">content</span><span class="pun">=</span><span class="atv">"width=device-width, initial-scale=1.0"</span><span class="tag">&gt;</span><span class="pln">
    </span><span class="tag">&lt;title&gt;</span><span class="pln">Document</span><span class="tag">&lt;/title&gt;</span><span class="pln">
</span><span class="tag">&lt;/head&gt;</span><span class="pln">
</span><span class="tag">&lt;body&gt;</span><span class="pln">
</span><span class="tag">&lt;/body&gt;</span><span class="pln">
</span><span class="tag">&lt;/html&gt;</span></pre>

<p>
	لاحظ أن الكود أعلاه يتضمن مجموعة من الوسوم الأساسية للصفحة ويحدد لغة الصفحة لتكون الانجليزية بشكل افتراضي كما يحدد عدة وسوم ميتا التي تحدد نوع ترميز الأحرف والنصوص UTF-8، وتجعل قالب ووردبريس متجاوب مع الجوال من خلال تحديد نسبة التكبير الافتراضية عند تصفح الموقع من خلاله.
</p>

<p>
	نحتاج لإجراء مجموعة من التعديلات على الكود السابق، بداية سنعدل العبارة <code>lang="en"‎</code> السطر الثاني في الكود أعلاه ونستبدلها بالكود التالي:
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_9249_12" style=""><span class="pln">&lt;html </span><span class="pun">&lt;?</span><span class="pln">php language_attributes</span><span class="pun">();</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln"> class="no-js"&gt;</span></pre>

<p>
	تعطي الدالة <a href="https://developer.wordpress.org/reference/functions/language_attributes/" rel="external nofollow"><code>language_attributes()‎</code></a> السماحية لقالب ووردبريس بالتحكم في طريقة العرض حسب لغة الموقع الحالية أما الصنف <code>class="no-js"</code>‎ فهو يفيد في المطور في الكشف عن ما إذا كان محرك جافا سكريبت يعمل في المتصفح أو لا وفي حال تعطيله يمكنه استخدام أكواد HTML و CSS خالصة دون استخدام برمجة نصية من جانب العميل لتحديد مظهر القالب.
</p>

<p>
	الخطوة التالية هي تبديل قيمة <code>charset="UTF-8"</code>‎ بالدالة ‎<code>bloginfo('charset')</code>‎ التي تستعيد ترميز النصوص المستخدم في الموقع بصورة تلقائيًا فالترميز قد يختلف حسب لغة الموقع لذا نكتب التالي:
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_9249_14" style=""><span class="pln">&lt;meta charset="</span><span class="pun">&lt;?</span><span class="pln">php bloginfo</span><span class="pun">(</span><span class="pln"> </span><span class="str">'charset'</span><span class="pln"> </span><span class="pun">);</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">" /&gt;</span></pre>

<p>
	وسنستبدل Document بعنوان الصفحة الديناميكي من خلال الدالة <code>wp_title()‎</code> في ووردبريس كما يلي:
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_9249_16" style=""><span class="tag">&lt;title&gt;</span><span class="pun">&lt;?</span><span class="pln">php wp_title</span><span class="pun">();</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="tag">&lt;/title&gt;</span></pre>

<p>
	بعد ذلك نستدعي دالة مهمة وأساسية في ترويسة الموقع هي <a href="https://developer.wordpress.org/reference/functions/wp_head/" rel="external nofollow"><code>wp_head()‎‏</code>‎</a>‎ وهي دالة جاهزة في ووردبريس تستخدم لإحضار أي أكواد مساعدة إلى ترويسة القالب سواء أكواد من نظام وودبريس نفسه أو الإضافات plugins أو أكواد مخصصة مثل أكواد تتبع البيانات والتنسيقات وغيرها من الأكواد الضرورية التي تحتاج لتنفيذها في ترويسة موقعك.
</p>

<p>
	تستدعى هذه الدالة عادة قبل وسم النهاية <code>&lt;‎/head&gt;</code> مباشرة بالشكل التالي:
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_9249_18" style=""><span class="pun">&lt;?</span><span class="pln">php wp_head</span><span class="pun">();</span><span class="pln"> </span><span class="pun">?&gt;</span></pre>

<p>
	ننتقل الآن للقسم الخاص بالوسم <code>&lt;body&gt;</code>، وفيه سنضيف دالة مهمة هي <a href="https://developer.wordpress.org/reference/functions/body_class/" rel="external nofollow"><code>body_class()</code>‎</a> هذه الدالة جاهزة في ووردبريس مهمتها إضافة أصناف تنسيق خاصة للوسم <code>&lt;body&gt;</code> بشكل ديناميكي من قبل نظام ووردبريس حسب سياق كل صفحة تستعرضها، على سبيل المثال عندما تستعرض صفحة المدونة في موقعك سيأخذ الوسم<code>&lt;body&gt;</code> الصنف <code>blog</code> وعندما تستعرض صفحة ثابتة كصفحة حولنا سيأخذ الصنف <code>page</code> وهذا يساعدك كمطور قوالب على تنسيق موقعك بسهولة واستهداف الصنف المناسب لكتابة تنسيقات CSS أو معالجة محتواها باستخدام جافا سكريبت.
</p>

<p>
	لنفترض مثلًا أنك تريد تصميم صفحتك الرئيسية بشكل مختلف للمستخدمين الذين سجلوا دخول للموقع يمكنك حينها الاعتماد على الصنف <code>home</code> الذي يضيفه ووردبريس للصفحة الرئيسية والصنف <code>logged-in</code> المضاف للمستخدم المسجل فقط، كما يمكنك عند الحاجة إضافة أصناف تنسيق مخصصة بنفسك إذا لم تناسبك الأصناف التي أدرجها لك نظام ووردبريس بشكل تلقائي لتنسيق عناصر الموقع.
</p>

<p>
	تضاف هذه الدالة ضمن وسم <code>&lt;body&gt;</code> كالتالي:
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_9249_20" style=""><span class="pln">&lt;body </span><span class="pun">&lt;?</span><span class="pln">php body_class</span><span class="pun">();</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">&gt;</span></pre>

<p>
	أما الدالة التالية التي سنضيفها فهي <a href="https://developer.wordpress.org/reference/functions/wp_body_open/" rel="external nofollow"><code>wp_body_open()</code>‎</a> وهي دالة حديثة نوعًا ما فقد تم إدخالها على ووردبريس منذ الإصدار 5.2، وهي مفيدة لإدخال التعليمات البرمجية مباشرة في بداية الصفحة بعد وسم <code>&lt;body&gt;</code> مثل أكواد جوجل أدسنس للإعلانات دون الحاجة إلى تعديل قالب ووردبريس، أضف هذه الدالة لموقعك بعد الدالة السابقة مباشرة كما يلي:
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_9249_22" style=""><span class="pun">&lt;?</span><span class="pln">php wp_body_open</span><span class="pun">();</span><span class="pln"> </span><span class="pun">?&gt;</span></pre>

<p>
	الآن نحتاج لكتابة بعض وسوم HTML داخل الوسم <code>&lt;body&gt;</code> لننظم الأقسام الرئيسية لصفحة الموقع، وهي قسم الترويسة header وجسم الصفحة main وقسم التذييل footer، كل ذلك داخل حاوية <a href="https://wiki.hsoub.com/HTML/div" rel="external"><code>div</code></a> شاملة لجميع العناصر سنعطيها الصنف <code>wrapper-container</code> ليصبح الكود بالشكل التالي:
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_9249_24" style=""><span class="dec">&lt;!DOCTYPE html&gt;</span><span class="pln">
&lt;html </span><span class="pun">&lt;?</span><span class="pln">php language_attributes</span><span class="pun">();</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln"> class="no-js"&gt;
</span><span class="tag">&lt;head&gt;</span><span class="pln">
&lt;meta charset="</span><span class="pun">&lt;?</span><span class="pln">php bloginfo</span><span class="pun">(</span><span class="pln"> </span><span class="str">'charset'</span><span class="pln"> </span><span class="pun">);</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">" /&gt;
</span><span class="tag">&lt;meta</span><span class="pln"> </span><span class="atn">name</span><span class="pun">=</span><span class="atv">"viewport"</span><span class="pln"> </span><span class="atn">content</span><span class="pun">=</span><span class="atv">"width=device-width, initial-scale=1.0"</span><span class="tag">&gt;</span><span class="pln">
</span><span class="tag">&lt;title&gt;</span><span class="pun">&lt;?</span><span class="pln">php wp_title</span><span class="pun">();</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="tag">&lt;/title&gt;</span><span class="pln">
</span><span class="tag">&lt;/head&gt;</span><span class="pln">
&lt;body </span><span class="pun">&lt;?</span><span class="pln">php body_class</span><span class="pun">();</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">&gt;
    </span><span class="pun">&lt;?</span><span class="pln">php wp_body_open</span><span class="pun">();</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">
    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"wrapper-container"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;header&gt;</span><span class="pln">
        </span><span class="tag">&lt;/header&gt;</span><span class="pln">
        </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"main"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;/div&gt;</span><span class="pln">
        </span><span class="tag">&lt;footer&gt;</span><span class="pln">
        </span><span class="tag">&lt;/footer&gt;</span><span class="pln">
    </span><span class="tag">&lt;/div&gt;</span><span class="pln">
</span><span class="tag">&lt;/body&gt;</span><span class="pln">
</span><span class="tag">&lt;/html&gt;</span></pre>

<p>
	بالطبع لن يكون من المناسب تضمين كافة أجزاء صفحات الموقع في ملف واحد لأن هذا سيتسبب في تكرار الكود وصعوبة تعديله، لذا سيكون من الأفضل توزيع الشيفرات البرمجية المكررة على الملفات الجزئية لتنظيم الكود بشكل أفضل وإعادة استخدامه في كل صفحة نحتاجها فيها كما شرحنا سابقًا.
</p>

<p>
	إذا سنقسم هذا الملف إلى الملفات التالية:
</p>

<ul>
	<li>
		ملف ترويسة القالب header.php الذي يبدأ من <code>&lt;‎!DOCTYPE html&gt;</code> وينتهي عند الوسم <code>&lt;‎/header&gt;</code>
	</li>
	<li>
		ملف تذييل القالب footer.php الذي يبدأ من <code>&lt;footer&gt;</code> وينتهي عند <code>&lt;‎/html&gt;</code>
	</li>
	<li>
		ملف index.php الذي يضم المحتوى الأساسي الذي سنضعه بين الوسم <code>&lt;div class="main"‎&gt;</code> و <code>&lt;‎/div&gt;</code>
	</li>
</ul>

<p>
	وللاستعاضة عن قسمي الترويسة والتذييل المنقولين من الملف الرئيسي سنستدعي في بدايته كود الترويسة من خلال الدالة <code>‎get_header()‎</code> وفي نهايته كود ملف التذييل من خلال الدالة <code>get_footer()‎</code> كما يلي:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="131070" href="https://academy.hsoub.com/uploads/monthly_2023_07/3.png.b1d236b3b6a48d04d2b6a0663570cd6c.png" rel=""><img alt="تقسيم ملف الصفحة الرئيسية إلى 3 أجزاء.png" class="ipsImage ipsImage_thumbnailed" data-fileid="131070" data-ratio="92.88" data-unique="eoun3rn9z" width="646" src="https://academy.hsoub.com/uploads/monthly_2023_07/3.thumb.png.41904101c584e951b3f8193a63d61d60.png"></a>
</p>

<p>
	لنتابع الآن شرح الآن برمجة كل ملف من هذه الملفات بمزيد من التفصيل.
</p>

<h2>
	برمجة ملف ترويسة قالب ووردبريس
</h2>

<p>
	تمثل ترويسة القالب الجزء العلوي من موقع ووردبريس الخاص بك وهي تتضمن عادة عدة عناصر وتبدأ بمجموعة من الوسوم غير المرئية على الصفحة وأهمها وسم <a href="https://wiki.hsoub.com/HTML/head" rel="external"><code>&lt;head&gt;</code></a> الذي يحتوي على عنوان الصفحة ومعلومات وصفية meta وبعض روابط التنسيقات والشيفرات الأخرى المهمة المتعلقة بالصفحة:
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_9249_27" style=""><span class="dec">&lt;!DOCTYPE html&gt;</span><span class="pln">
&lt;html </span><span class="pun">&lt;?</span><span class="pln">php language_attributes</span><span class="pun">();</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln"> class="no-js"&gt;
</span><span class="tag">&lt;head&gt;</span><span class="pln">
    &lt;meta charset="</span><span class="pun">&lt;?</span><span class="pln">php bloginfo</span><span class="pun">(</span><span class="str">'charset'</span><span class="pun">);</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">" /&gt;
   </span><span class="tag">&lt;meta</span><span class="pln"> </span><span class="atn">name</span><span class="pun">=</span><span class="atv">"viewport"</span><span class="pln"> </span><span class="atn">content</span><span class="pun">=</span><span class="atv">"width=device-width, initial-scale=1"</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">
    </span><span class="tag">&lt;title&gt;</span><span class="pun">&lt;?</span><span class="pln">php wp_title</span><span class="pun">();</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="tag">&lt;/title&gt;</span><span class="pln">
    </span><span class="pun">&lt;?</span><span class="pln">php wp_head</span><span class="pun">();</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">
</span><span class="tag">&lt;/head&gt;</span></pre>

<p>
	على سبيل المثال سنحتاج في قالب ووردبريس الخاص بنا لتضمين مجموعة أيقونات خاصة بالمكتبة Font Awesome لعرض أيقونات التواصل الاجتماعي والأيقونات الشائعة الأخرى لذا سأستدعيها ضمن هذا الوسم كما يلي:
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_9249_29" style=""><span class="pln"> </span><span class="tag">&lt;link</span><span class="pln"> </span><span class="atn">rel</span><span class="pun">=</span><span class="atv">"stylesheet"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"</span><span class="pln"> </span><span class="atn">integrity</span><span class="pun">=</span><span class="atv">"sha512-iecdLmaskl7CVkqkXNQ/ZH/XLlvWZOJyj7Yy7tcenmpD1ypASozpmT/E0iPtmFIB46ZmdtAc9eNBvH0H/ZpiBw=="</span><span class="pln"> </span><span class="atn">crossorigin</span><span class="pun">=</span><span class="atv">"anonymous"</span><span class="pln"> </span><span class="atn">referrerpolicy</span><span class="pun">=</span><span class="atv">"no-referrer"</span><span class="pln"> </span><span class="tag">/&gt;</span></pre>

<p>
	بعدها يبدأ القسم المرئي للترويسة بالوسم <a href="https://wiki.hsoub.com/HTML/body" rel="external"><code>&lt;body&gt;</code></a> الذي سنكتب بداخله الوسم <a href="https://wiki.hsoub.com/HTML/header" rel="external"><code>&lt;header&gt;</code></a> لعرض ترويسة موقعنا والتي ستتضمن عدة عناصر وهي شعار الموقع وقائمة تنقل رئيسية وشريط الصور المنزلقة وقائمة تنقل ثانوية.
</p>

<p style="text-align: center;">
	<img alt="قسم ترويسة قالب ووردبريس.PNG" class="ipsImage ipsImage_thumbnailed" data-fileid="130502" data-unique="616xjpo82" style="width: 500px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2023_07/.thumb.PNG.7c3566fa34bacbf57f7df741b79b88b2.PNG">
</p>

<p>
	لذا سنوزع عناصر الترويسة ضمن ثلاث أقسام <code>&lt;section&gt;</code> القسم الأول يعرض الشعار والقائمة الثانوية العلوية كما يلي:
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_9249_31" style=""><span class="pln">            </span><span class="tag">&lt;section</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"rtl-Primary-nav"</span><span class="tag">&gt;</span><span class="pln">
                </span><span class="pun">&lt;?</span><span class="pln">php
                </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">has_custom_logo</span><span class="pun">())</span><span class="pln"> </span><span class="pun">:</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
                        $custom_logo_id </span><span class="pun">=</span><span class="pln"> get_theme_mod</span><span class="pun">(</span><span class="str">'custom_logo'</span><span class="pun">);</span><span class="pln">
                        $image </span><span class="pun">=</span><span class="pln"> wp_get_attachment_image_src</span><span class="pun">(</span><span class="pln">$custom_logo_id</span><span class="pun">,</span><span class="pln"> </span><span class="str">'full'</span><span class="pun">);</span><span class="pln">
                    </span><span class="pun">}</span><span class="pln">  </span><span class="pun">?&gt;</span><span class="pln">
                    </span><span class="tag">&lt;nav</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"myTopnav"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"topnav"</span><span class="tag">&gt;</span><span class="pln">
                        </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"logo"</span><span class="tag">&gt;</span><span class="pln">
                            &lt;a href="</span><span class="pun">&lt;?</span><span class="pln">php echo esc_url</span><span class="pun">(</span><span class="pln">home_url</span><span class="pun">(</span><span class="str">'/'</span><span class="pun">));</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">" class="logo-link"&gt;
                                &lt;img src="</span><span class="pun">&lt;?</span><span class="pln">php echo $image</span><span class="pun">[</span><span class="lit">0</span><span class="pun">];</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">"&gt; </span><span class="tag">&lt;/a&gt;</span><span class="pln">
                        </span><span class="tag">&lt;/div&gt;</span><span class="pln">
                        </span><span class="pun">&lt;?</span><span class="pln">php wp_nav_menu</span><span class="pun">(</span><span class="pln">array</span><span class="pun">(</span><span class="str">'theme_location'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">'Primary'</span><span class="pun">));</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln"> </span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"javascript:void(0);"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"icon"</span><span class="pln"> </span><span class="atn">onclick</span><span class="pun">=</span><span class="atv">"</span><span class="pln">myFunction</span><span class="pun">()</span><span class="atv">"</span><span class="tag">&gt;</span><span class="pln">
                            </span><span class="tag">&lt;i</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"fa fa-bars"</span><span class="tag">&gt;&lt;/i&gt;</span><span class="pln">
                        </span><span class="tag">&lt;/a&gt;</span><span class="pln">
                    </span><span class="tag">&lt;/nav&gt;</span><span class="pln">
                </span><span class="pun">&lt;?</span><span class="pln">php </span><span class="kwd">else</span><span class="pln"> </span><span class="pun">:</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">
                    </span><span class="tag">&lt;nav</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"myTopnav"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"topnav"</span><span class="tag">&gt;</span><span class="pln">
                        </span><span class="tag">&lt;h2&gt;</span><span class="pln"> &lt;a href="</span><span class="pun">&lt;?</span><span class="pln">php echo esc_url</span><span class="pun">(</span><span class="pln">home_url</span><span class="pun">(</span><span class="str">'/'</span><span class="pun">));</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">" rel="home" class="logo-link"&gt;</span><span class="pun">&lt;?</span><span class="pln">php bloginfo</span><span class="pun">(</span><span class="str">'name'</span><span class="pun">);</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="tag">&lt;/a&gt;</span><span class="pln"> </span><span class="tag">&lt;/h2&gt;</span><span class="pln">
                        </span><span class="pun">&lt;?</span><span class="pln">php wp_nav_menu</span><span class="pun">(</span><span class="pln">array</span><span class="pun">(</span><span class="str">'theme_location'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">'Primary'</span><span class="pun">));</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln"> </span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"javascript:void(0);"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"icon"</span><span class="pln"> </span><span class="atn">onclick</span><span class="pun">=</span><span class="atv">"</span><span class="pln">myFunction</span><span class="pun">()</span><span class="atv">"</span><span class="tag">&gt;</span><span class="pln">
                            </span><span class="tag">&lt;i</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"fa fa-bars"</span><span class="tag">&gt;&lt;/i&gt;</span><span class="pln">
                        </span><span class="tag">&lt;/a&gt;</span><span class="pln">
                    </span><span class="tag">&lt;/nav&gt;</span><span class="pln">
                </span><span class="pun">&lt;?</span><span class="pln">php endif</span><span class="pun">;</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">
            </span><span class="tag">&lt;/section&gt;</span></pre>

<p>
	والقسم الثاني يعرض الصور المنزلقة Slider لأشهر مقالات الموقع وحاليًا سنكتفي بعرض صورة ثابتة هي الصورة المصغرة للقالب مؤقتًا ضمن هذا القسم ريثما يتم تكويده في الدرس الخامس من هذه السلسلة بواسطة جافا سكريبت:
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_9249_33" style=""><span class="pln">   </span><span class="tag">&lt;section</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"slider"</span><span class="tag">&gt;</span><span class="pln">
                </span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"sliderlink"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"https://academy.hsoub.com/"</span><span class="pln"> </span><span class="tag">&gt;</span><span class="pln">
                    &lt;img src="</span><span class="pun">&lt;?</span><span class="pln">php bloginfo</span><span class="pun">(</span><span class="str">'template_url'</span><span class="pun">);</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">/screenshot.png" alt="slider"&gt;
                </span><span class="tag">&lt;/a&gt;</span><span class="pln">
            </span><span class="tag">&lt;/section&gt;</span></pre>

<p>
	أما القسم الثالث فسوف يحتوي على القائمة الثانوية للموقع وكما تلاحظ نستدعي هنا الدالة الجاهزة <a href="https://developer.wordpress.org/reference/functions/wp_nav_menu/" rel="external nofollow"><code>wp_nav_menu()‎‏</code></a> مرة ثانية لكن نمرر لها هذه المرة وسيط القائمة الرئيسية Primary.
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_9249_35" style=""><span class="pln"> </span><span class="tag">&lt;section</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"rtl-Secondary-nav"</span><span class="tag">&gt;</span><span class="pln">
                </span><span class="tag">&lt;nav</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"mydnnav"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"dnnav"</span><span class="tag">&gt;</span><span class="pun">&lt;?</span><span class="pln">php wp_nav_menu</span><span class="pun">(</span><span class="pln">array</span><span class="pun">(</span><span class="str">'theme_location'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">'Secondary'</span><span class="pun">));</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">
                </span><span class="tag">&lt;/nav&gt;</span><span class="pln">
            </span><span class="tag">&lt;/section&gt;</span></pre>

<p>
	سيكون الكود الكامل لملف الترويسة كما يلي:
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_9249_37" style=""><span class="dec">&lt;!DOCTYPE html&gt;</span><span class="pln">
&lt;html </span><span class="pun">&lt;?</span><span class="pln">php language_attributes</span><span class="pun">();</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln"> class="no-js"&gt;
</span><span class="tag">&lt;head&gt;</span><span class="pln">
    &lt;meta charset="</span><span class="pun">&lt;?</span><span class="pln">php bloginfo</span><span class="pun">(</span><span class="str">'charset'</span><span class="pun">);</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">" /&gt;
    </span><span class="tag">&lt;meta</span><span class="pln"> </span><span class="atn">name</span><span class="pun">=</span><span class="atv">"viewport"</span><span class="pln"> </span><span class="atn">content</span><span class="pun">=</span><span class="atv">"width=device-width, initial-scale=1"</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">
    </span><span class="tag">&lt;link</span><span class="pln"> </span><span class="atn">rel</span><span class="pun">=</span><span class="atv">"stylesheet"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"</span><span class="pln"> </span><span class="atn">integrity</span><span class="pun">=</span><span class="atv">"sha512-iecdLmaskl7CVkqkXNQ/ZH/XLlvWZOJyj7Yy7tcenmpD1ypASozpmT/E0iPtmFIB46ZmdtAc9eNBvH0H/ZpiBw=="</span><span class="pln"> </span><span class="atn">crossorigin</span><span class="pun">=</span><span class="atv">"anonymous"</span><span class="pln"> </span><span class="atn">referrerpolicy</span><span class="pun">=</span><span class="atv">"no-referrer"</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">
    </span><span class="tag">&lt;title&gt;</span><span class="pun">&lt;?</span><span class="pln">php wp_title</span><span class="pun">();</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="tag">&lt;/title&gt;</span><span class="pln">
    </span><span class="pun">&lt;?</span><span class="pln">php wp_head</span><span class="pun">();</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">
</span><span class="tag">&lt;/head&gt;</span><span class="pln">
&lt;body </span><span class="pun">&lt;?</span><span class="pln">php body_class</span><span class="pun">();</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">&gt;
    </span><span class="pun">&lt;?</span><span class="pln">php wp_body_open</span><span class="pun">();</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">
    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"wrapper-container"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;header&gt;</span><span class="pln">
            </span><span class="tag">&lt;section</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"rtl-Secondary-nav"</span><span class="tag">&gt;</span><span class="pln">
                </span><span class="pun">&lt;?</span><span class="pln">php
                </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">has_custom_logo</span><span class="pun">())</span><span class="pln"> </span><span class="pun">:</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
                        $custom_logo_id </span><span class="pun">=</span><span class="pln"> get_theme_mod</span><span class="pun">(</span><span class="str">'custom_logo'</span><span class="pun">);</span><span class="pln">
                        $image </span><span class="pun">=</span><span class="pln"> wp_get_attachment_image_src</span><span class="pun">(</span><span class="pln">$custom_logo_id</span><span class="pun">,</span><span class="pln"> </span><span class="str">'full'</span><span class="pun">);</span><span class="pln">
                    </span><span class="pun">}</span><span class="pln">  </span><span class="pun">?&gt;</span><span class="pln">
                    </span><span class="tag">&lt;nav</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"myTopnav"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"topnav"</span><span class="tag">&gt;</span><span class="pln">
                        </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"logo"</span><span class="tag">&gt;</span><span class="pln">
                            &lt;a href="</span><span class="pun">&lt;?</span><span class="pln">php echo esc_url</span><span class="pun">(</span><span class="pln">home_url</span><span class="pun">(</span><span class="str">'/'</span><span class="pun">));</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">" class="logo-link"&gt;
                                &lt;img src="</span><span class="pun">&lt;?</span><span class="pln">php echo $image</span><span class="pun">[</span><span class="lit">0</span><span class="pun">];</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">"&gt; </span><span class="tag">&lt;/a&gt;</span><span class="pln">
                        </span><span class="tag">&lt;/div&gt;</span><span class="pln">
                        </span><span class="pun">&lt;?</span><span class="pln">php wp_nav_menu</span><span class="pun">(</span><span class="pln">array</span><span class="pun">(</span><span class="str">'theme_location'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">'Secondary'</span><span class="pun">));</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln"> </span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"javascript:void(0);"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"icon"</span><span class="pln"> </span><span class="atn">onclick</span><span class="pun">=</span><span class="atv">"</span><span class="pln">myFunction</span><span class="pun">()</span><span class="atv">"</span><span class="tag">&gt;</span><span class="pln">
                            </span><span class="tag">&lt;i</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"fa fa-bars"</span><span class="tag">&gt;&lt;/i&gt;</span><span class="pln">
                        </span><span class="tag">&lt;/a&gt;</span><span class="pln">
                    </span><span class="tag">&lt;/nav&gt;</span><span class="pln">
                </span><span class="pun">&lt;?</span><span class="pln">php </span><span class="kwd">else</span><span class="pln"> </span><span class="pun">:</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">
                    </span><span class="tag">&lt;nav</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"myTopnav"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"topnav"</span><span class="tag">&gt;</span><span class="pln">
                        </span><span class="tag">&lt;h2&gt;</span><span class="pln"> &lt;a href="</span><span class="pun">&lt;?</span><span class="pln">php echo esc_url</span><span class="pun">(</span><span class="pln">home_url</span><span class="pun">(</span><span class="str">'/'</span><span class="pun">));</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">" rel="home" class="logo-link"&gt;</span><span class="pun">&lt;?</span><span class="pln">php bloginfo</span><span class="pun">(</span><span class="str">'name'</span><span class="pun">);</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="tag">&lt;/a&gt;</span><span class="pln"> </span><span class="tag">&lt;/h2&gt;</span><span class="pln">
                        </span><span class="pun">&lt;?</span><span class="pln">php wp_nav_menu</span><span class="pun">(</span><span class="pln">array</span><span class="pun">(</span><span class="str">'theme_location'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">'Secondary'</span><span class="pun">));</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln"> </span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"javascript:void(0);"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"icon"</span><span class="pln"> </span><span class="atn">onclick</span><span class="pun">=</span><span class="atv">"</span><span class="pln">myFunction</span><span class="pun">()</span><span class="atv">"</span><span class="tag">&gt;</span><span class="pln">
                            </span><span class="tag">&lt;i</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"fa fa-bars"</span><span class="tag">&gt;&lt;/i&gt;</span><span class="pln">
                        </span><span class="tag">&lt;/a&gt;</span><span class="pln">
                    </span><span class="tag">&lt;/nav&gt;</span><span class="pln">
                </span><span class="pun">&lt;?</span><span class="pln">php endif</span><span class="pun">;</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">
            </span><span class="tag">&lt;/section&gt;</span><span class="pln">
            </span><span class="tag">&lt;section</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"slider"</span><span class="tag">&gt;</span><span class="pln">
                </span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"sliderlink"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"https://academy.hsoub.com/"</span><span class="pln"> </span><span class="tag">&gt;</span><span class="pln">
                    &lt;img src="</span><span class="pun">&lt;?</span><span class="pln">php bloginfo</span><span class="pun">(</span><span class="str">'template_url'</span><span class="pun">);</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">/screenshot.png" alt="slider"&gt;
                </span><span class="tag">&lt;/a&gt;</span><span class="pln">
            </span><span class="tag">&lt;/section&gt;</span><span class="pln">
            </span><span class="tag">&lt;section</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"rtl-Primary-nav"</span><span class="tag">&gt;</span><span class="pln">
                </span><span class="tag">&lt;nav</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"mydnnav"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"dnnav"</span><span class="tag">&gt;</span><span class="pun">&lt;?</span><span class="pln">php wp_nav_menu</span><span class="pun">(</span><span class="pln">array</span><span class="pun">(</span><span class="str">'theme_location'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">'Primary'</span><span class="pun">));</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">
                </span><span class="tag">&lt;/nav&gt;</span><span class="pln">
            </span><span class="tag">&lt;/section&gt;</span><span class="pln">
        </span><span class="tag">&lt;/header&gt;</span></pre>

<h2>
	تسجيل قوائم التنقل في ملف وظائف قالب ووردبريس
</h2>

<p>
	لا يكفي استدعاء الدالة <a href="https://developer.wordpress.org/reference/functions/wp_nav_menu/" rel="external nofollow"><code>wp_nav_menu()‎‏</code></a> وحدها في ترويسة القالب لعرض القوائم المطلوبة، بل نحتاج إضافة لذلك إلى كتابة كود مخصص في ملف وظائف القالب functions.php لجعل قوائم التنقل تظهر بشكل صحيح في قالب ووردبريس الخاص بنا، حيث نحتاج لاستدعاء الدالة <a href="https://developer.wordpress.org/reference/functions/register_nav_menu/" rel="external nofollow"><code>register_nav_menu()‎</code></a> التي يوفرها لنا ووردبريس لتسجيل مواضع القوائم في قالبنا وجعلها تظهر من خلال القائمة الفرعية <strong>قوائم</strong> ضمن التبويب <strong>المظهر</strong>.
</p>

<p>
	للقيام بذلك سنفتح ملف وظائف قالب ووردبريس functions.php في محرر الأكواد ونضيف له الشيفرات التالية:
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_9249_39" style=""><span class="pun">&lt;?</span><span class="pln">php
</span><span class="com">// menus</span><span class="pln">
</span><span class="kwd">function</span><span class="pln"> register_nav_menu_primary_qwe</span><span class="pun">(){</span><span class="pln">
    $location</span><span class="pun">=</span><span class="str">'Primary'</span><span class="pun">;</span><span class="pln">
    $description</span><span class="pun">=</span><span class="str">'Primary menu'</span><span class="pun">;</span><span class="pln">
    register_nav_menu</span><span class="pun">(</span><span class="pln"> $location</span><span class="pun">,</span><span class="pln"> $description </span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
add_action</span><span class="pun">(</span><span class="str">'after_setup_theme'</span><span class="pun">,</span><span class="str">'register_nav_menu_primary_qwe'</span><span class="pln"> </span><span class="pun">);</span><span class="pln">
</span><span class="kwd">function</span><span class="pln"> register_nav_menu_Secondary_qwe</span><span class="pun">(){</span><span class="pln">
    $location</span><span class="pun">=</span><span class="str">'Secondary'</span><span class="pun">;</span><span class="pln">
    $description</span><span class="pun">=</span><span class="str">'Secondary menu'</span><span class="pun">;</span><span class="pln">
    register_nav_menu</span><span class="pun">(</span><span class="pln"> $location</span><span class="pun">,</span><span class="pln"> $description </span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
add_action</span><span class="pun">(</span><span class="str">'after_setup_theme'</span><span class="pun">,</span><span class="str">'register_nav_menu_Secondary_qwe'</span><span class="pln"> </span><span class="pun">);</span><span class="pln">
</span><span class="pun">?&gt;</span></pre>

<p>
	وكما هو موضح بالسطور البرمجية السابقة نجد أن عملية تسجيل القائمتين تقوم هنا بعملية ربط كل قائمة مع لوحة التحكم الرئيسية الخاصة بووردبريس لكنها لا تضيف فعليًا أي عناصر إلى هذه القوائم ليكون بإمكانك إضافة ما تشاء من صفحات أو تصنيفات أو غيرها من الروابط سواء للقائمة الفرعية أو للقائمة الرئيسية من <a href="https://academy.hsoub.com/apps/web/wordpress/%D9%86%D8%A7%D9%81%D8%B0%D8%A9-%D9%82%D9%88%D8%A7%D8%A6%D9%85-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r588/" rel="">نافذة قوائم ووردبريس</a> الموجودة في التبويب <strong>مظهر</strong> ضمن لوحة تحكم ووردبريس.
</p>

<p>
	لاحظ هنا أننا مررنا دالة تسجيل القوائم الخاصة كوسيط لدالة اسمها <code>add_action()‎</code> وهذه هي الطريقة المثلى لاستدعاء الدوال وتنفيذها في ووردبريس وهي تعتمد على ربط الدالة بما يعرف بالخطاف hook.
</p>

<p>
	الخطافات hooks هي نوع معين من الدوال تستخدم في برمجة القوالب والإضافات وهي توفر لك طريقة تمكنك من ربط واستدعاء الأكواد الخاصة بك ما بأي جزء في نظام ووردبريس الرئيسي ولمعرفة المزيد حول الخطافات وآلية عملها أنصح بقراءة مقال <a href="https://academy.hsoub.com/programming/php/wordpress/%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D8%A5%D8%B6%D8%A7%D9%81%D8%A7%D8%AA-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-%D8%A7%D9%84%D8%AE%D9%8F%D8%B7%D9%91%D8%A7%D9%81%D8%A7%D8%AA-hooks-r40/" rel="">برمجة إضافات ووردبريس: الخطافات (Hooks)</a>.
</p>

<h2>
	إضافة ميزة عرض الشعار المخصص في قالب ووردبريس
</h2>

<p>
	سنوفر في قالبنا طريقة لوضع شعار مخصص في ترويسة الموقع من لوحة لتخصيص القالب التي تصل لها عادة من خلال لوحة تحكم موقع ووردبريس ثم اختيار التبويب <strong>المظهر</strong> ثم <strong>تخصيص</strong> وتحميل الشعار المناسب لعرضه في ترويسة الموقع.
</p>

<p style="text-align: center;">
	<img alt="ميزة الشعار المخصص في قالب ووردبريس.png" class="ipsImage ipsImage_thumbnailed" data-fileid="130504" data-unique="3ta7q4b49" style="width: 600px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2023_07/488046024_.png.cedfd161ebb828e67388f8b9922d2604.png">
</p>

<p>
	تتم إضافة هذه الميزة عبر خطوتين الأولى هي باستدعاء الدالة <code>add_theme_support()‎</code> وتمرير الوسيط <code>custom-logo</code> لها، ويمكن أن نخصص أبعاد الشعار بقيم محددة من خلال كتابة الكود التالي في ملف وظائف القالب functions.php:
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_9249_41" style=""><span class="pln">add_theme_support</span><span class="pun">(</span><span class="pln"> </span><span class="str">'custom-logo'</span><span class="pln"> </span><span class="pun">);</span><span class="pln">
</span><span class="kwd">function</span><span class="pln"> themename_custom_logo_setup</span><span class="pun">()</span><span class="pln">
</span><span class="pun">{</span><span class="pln"> $defaults </span><span class="pun">=</span><span class="pln"> array</span><span class="pun">(</span><span class="pln"> </span><span class="str">'height'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="lit">200</span><span class="pun">,</span><span class="pln">
</span><span class="str">'width'</span><span class="pun">=&gt;</span><span class="pln"> </span><span class="lit">200</span><span class="pun">,</span><span class="pln">
</span><span class="str">'flex-height'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">,</span><span class="pln">
</span><span class="str">'flex-width'</span><span class="pln">  </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">,</span><span class="pln">
</span><span class="str">'header-text'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> array</span><span class="pun">(</span><span class="pln"> </span><span class="str">'site-title'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'site-description'</span><span class="pln"> </span><span class="pun">),</span><span class="pln"> </span><span class="pun">);</span><span class="pln">
add_theme_support</span><span class="pun">(</span><span class="pln"> </span><span class="str">'custom-logo'</span><span class="pun">,</span><span class="pln"> $defaults </span><span class="pun">);</span><span class="pln"> </span><span class="pun">}</span><span class="pln"> add_action</span><span class="pun">(</span><span class="pln"> </span><span class="str">'after_setup_theme'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'themename_custom_logo_setup'</span><span class="pun">);</span><span class="pln"> </span></pre>

<p>
	بعدها نكتب كود عرض هذا الشعار في الموضع الذي نريد عرضه فيه وهو في حالة قالبنا قبل عرض القائمة الثانوية في القسم header كما يلي:
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_9249_43" style=""><span class="pln"> </span><span class="pun">&lt;?</span><span class="pln">php
     </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln"> has_custom_logo</span><span class="pun">()</span><span class="pln"> </span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      $custom_logo_id </span><span class="pun">=</span><span class="pln"> get_theme_mod</span><span class="pun">(</span><span class="pln"> </span><span class="str">'custom_logo'</span><span class="pln"> </span><span class="pun">);</span><span class="pln">
      $image </span><span class="pun">=</span><span class="pln"> wp_get_attachment_image_src</span><span class="pun">(</span><span class="pln"> $custom_logo_id</span><span class="pun">,</span><span class="pln"> </span><span class="str">'full'</span><span class="pun">);</span><span class="pln">
      </span><span class="pun">}</span><span class="pln">  </span><span class="pun">?&gt;</span><span class="pln">
&lt;img src="</span><span class="pun">&lt;?</span><span class="pln">php echo $image</span><span class="pun">[</span><span class="lit">0</span><span class="pun">];</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">"&gt;</span></pre>

<h2>
	إضافة ميزة الصور المصغرة إلى قالب ووردبريس
</h2>

<p style="text-align: center;">
	<img alt="ميزة الصورة البارزة للمقالة.PNG" class="ipsImage ipsImage_thumbnailed" data-fileid="130505" data-unique="rq5l83wsh" src="https://academy.hsoub.com/uploads/monthly_2023_07/504043770_.PNG.f303e32beb3fe6881b1d59abd070842c.PNG">
</p>

<p>
	لا تتوفر ميزة الصورة المصغرة أو الصورة البارزة للمقال (Post Thumbnail) بشكل تلقائي في ووردبريس ولتنشيط هذه الميزة في قالب ووردبريس الخاص بنا نحتاج من جديد إلى كتابة كود مخصص في ملف وظائف قالب ووردبريس functions.php.
</p>

<p>
	يتم ذلك من خلال استدعاء الدالة <code>add_theme_support()‎</code> مع الوسيط <code>post-thumbnails</code> كما يمكن أثناء قيامنا بتنشيط الصور المميزة أن نحدد أن يتم تحجيم كل صورة نحملها إلى مكتبة الوسائط في ووردبريس وإنشاء إصدارين أو نسختين مختلفتين بحجم صغير وكبير ويمكن أن نحدد أبعادهما كما يلي:
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_9249_45" style=""><span class="pln">add_theme_support</span><span class="pun">(</span><span class="str">'post-thumbnails'</span><span class="pun">);</span><span class="pln">
add_image_size</span><span class="pun">(</span><span class="str">'small'</span><span class="pun">,</span><span class="lit">300</span><span class="pun">,</span><span class="lit">300</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">);</span><span class="pln">
add_image_size</span><span class="pun">(</span><span class="str">'large'</span><span class="pun">,</span><span class="lit">600</span><span class="pun">,</span><span class="lit">600</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">);</span></pre>

<p>
	هذا يساعدنا على عرض الصورة بالحجم الذي نرغبه والجدير بالملاحظة أن بإمكانك كتابة دالة إضافة الميزات <code>add_theme_support()‎</code> ضمن ملف وظائف قالب ووردبريس functions.php مباشرة ليضيف الميزة التي تريدها للقالب مباشرة دون الحاجة لربطه بأي خطاف hook، كما يمكنك بشكل اختياري ربطها بدالة الخطاف <code>after_setup_theme</code> الذي يقع أو يحدث بعد تحميل القالب كما شرحنا سابقًا ففي الحالتين ستعمل الدالة بشكل صحيح:
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_9249_47" style=""><span class="com">// thumbnile connection</span><span class="pln">
</span><span class="kwd">function</span><span class="pln"> post_thumbnails_qwe</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    </span><span class="com">// add_theme_support( $feature, $arguments );</span><span class="pln">
    add_theme_support</span><span class="pun">(</span><span class="pln"> </span><span class="str">'post-thumbnails'</span><span class="pun">,</span><span class="pln"> array</span><span class="pun">(</span><span class="pln"> </span><span class="str">'post'</span><span class="pun">,</span><span class="str">'page'</span><span class="pun">)</span><span class="pln"> </span><span class="pun">);</span><span class="pln"> 
</span><span class="pun">}</span><span class="pln">
add_action</span><span class="pun">(</span><span class="pln"> </span><span class="str">'after_setup_theme'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'post_thumbnails_qwe'</span><span class="pln"> </span><span class="pun">);</span></pre>

<h3>
	ربط ملف التنسيقات بترويسة القالب
</h3>

<p>
	نتجه إلى شيء أخير قبل إنهاء شرح ترويسة القالب وهو ربط ملف التنسيق الرئيسي للقالب style.css مع قالب ووردبريس، هناك عدة طرق للقيام ومنها تضمين رابط هذا الملف في ملف الترويسة لكن الطريقة الأفضل والموصى بها من قبل نظام ووردبريس هي عن طريق استخدام الدالة <a href="https://developer.wordpress.org/reference/functions/wp_enqueue_style/" rel="external nofollow"><code>wp_enqueue_style()‎‏</code></a> التي تعمل على وضع ملف التنسيق في قائمة انتظار وريطها بخطاف اسمه <a href="https://developer.wordpress.org/reference/hooks/wp_enqueue_scripts/" rel="external nofollow"><code>wp_enqueue_scripts</code></a>.
</p>

<p>
	توضع تلك الأكواد في ملف وظائف قالب ووردبريس functions.php بالشكل التالي:
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_9249_49" style=""><span class="com">/**
 * Enqueue scripts and styles.
 */</span><span class="pln">
</span><span class="kwd">function</span><span class="pln"> modawanaty_scripts</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    wp_enqueue_style</span><span class="pun">(</span><span class="pln"> </span><span class="str">'modawanaty-style'</span><span class="pun">,</span><span class="pln"> get_stylesheet_uri</span><span class="pun">(),</span><span class="pln"> array</span><span class="pun">(),</span><span class="pln"> wp_get_theme</span><span class="pun">()-&gt;</span><span class="kwd">get</span><span class="pun">(</span><span class="pln"> </span><span class="str">'Version'</span><span class="pln"> </span><span class="pun">)</span><span class="pln"> </span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
add_action</span><span class="pun">(</span><span class="pln"> </span><span class="str">'wp_enqueue_scripts'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'modawanaty_scripts'</span><span class="pln"> </span><span class="pun">);</span></pre>

<h2>
	برمجة ملف الصفحة الرئيسية لقالب ووردبريس index.php
</h2>

<p style="text-align: center;">
	<img alt="برمجة محتوى الصفحة الأساسية لقالب ووردبريس.png" class="ipsImage ipsImage_thumbnailed" data-fileid="130497" data-unique="u087k9rpl" src="https://academy.hsoub.com/uploads/monthly_2023_07/.thumb.png.8fc873217dde4d307c0a023231b43c9b.png">
</p>

<p>
	نقوم بعد ذلك باستدعاء دالة <code>the_post()‎</code> ضمن الحلقة لتعيد لنا المقال الحالي، ثم نستدعي مجموعة من الدوال الجاهزة التي تعيد لنا معلومات كل مقال فهنا سنستدعي الدالة <code>the_title()‎</code> لعرض عنوان المقال والدالة <code>the_excerpt()‎</code> لإظهار مقتطفات المقال ودالة <code>the_post_thumbnail()‎</code> لعرض الصورة المصغرة للمقال، وبما أن هذه الدوال تستدعى ضمن حلقة <code>while loop</code> فسوف تظهر لك كل معلومات المقالات المنشورة في الموقع تباعًا على الصفحة الرئيسية حسب تاريخ نشرها من الأحدث للأقدم. سوف يكون الملف النهائي index.php كالتالي:
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_9249_51" style=""><span class="pun">&lt;?</span><span class="pln">php
get_header</span><span class="pun">();</span><span class="pln">
</span><span class="pun">?&gt;</span><span class="pln">

</span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"main"</span><span class="tag">&gt;</span><span class="pln">
  </span><span class="pun">&lt;?</span><span class="pln">php
  </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">have_posts</span><span class="pun">())</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">while</span><span class="pln"> </span><span class="pun">(</span><span class="pln">have_posts</span><span class="pun">())</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      the_post</span><span class="pun">();</span><span class="pln">
  </span><span class="pun">?&gt;</span><span class="pln">
      </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"post-qwe"</span><span class="tag">&gt;</span><span class="pln">
        &lt;div id="post-</span><span class="pun">&lt;?</span><span class="pln">php the_ID</span><span class="pun">();</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">" </span><span class="pun">&lt;?</span><span class="pln">php post_class</span><span class="pun">();</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">&gt;
          </span><span class="pun">&lt;?</span><span class="pln">php </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">has_post_thumbnail</span><span class="pun">())</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
            echo  </span><span class="str">'&lt;a href="'</span><span class="pln"> </span><span class="pun">.</span><span class="pln"> get_permalink</span><span class="pun">(</span><span class="pln">$post</span><span class="pun">-&gt;</span><span class="pln">ID</span><span class="pun">)</span><span class="pln"> </span><span class="pun">.</span><span class="pln"> </span><span class="str">'" &gt;'</span><span class="pun">;</span><span class="pln">
            echo  get_the_post_thumbnail</span><span class="pun">(</span><span class="pln">$post</span><span class="pun">-&gt;</span><span class="pln">ID</span><span class="pun">,);</span><span class="pln">
            echo </span><span class="str">'&lt;/a&gt;'</span><span class="pun">;</span><span class="pln">
          </span><span class="pun">}</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">
          </span><span class="tag">&lt;p</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"page-title-qwe"</span><span class="tag">&gt;</span><span class="pln">&lt;a href="</span><span class="pun">&lt;?</span><span class="pln">php the_permalink</span><span class="pun">();</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">"&gt;</span><span class="pun">&lt;?</span><span class="pln">php the_title</span><span class="pun">();</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="tag">&lt;/a&gt;&lt;/p&gt;</span><span class="pln">
          </span><span class="pun">&lt;?</span><span class="pln">php the_excerpt</span><span class="pun">();</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">
        </span><span class="tag">&lt;/div&gt;</span><span class="pln">
      </span><span class="tag">&lt;/div&gt;</span><span class="pln">
    </span><span class="pun">&lt;?</span><span class="pln">php
    </span><span class="pun">}</span><span class="pln">
    </span><span class="pun">?&gt;</span><span class="pln">
    </span><span class="tag">&lt;br&gt;</span><span class="pln">
</span><span class="pun">&lt;?</span><span class="pln">php
  </span><span class="pun">}</span><span class="pln">
  get_footer</span><span class="pun">();</span></pre>

<p>
	بالطبع هناك العديد من المعلومات الأخرى التي يمكن عرضها حول كل مقال من خلال مجموعة دوال مخصصة تسمى وسوم القالب Template tags تجدها في التوثيق الرسمي للوردبريس <a href="https://developer.wordpress.org/themes/basics/template-tags/" rel="external nofollow">template tags</a>.
</p>

<p>
	يعتمد عدد المقالات المنشورة الظاهرة على صفحتك على الخيار عدد الموضوعات المعروضة في الصفحة والذي يمكنك تحديده من خلال <strong>لوحة التحكم</strong> ثم <strong>الإعدادات</strong> ثم اختيار البند <strong>قراءة</strong> كما يلي:
</p>

<p style="text-align: center;">
	<img alt="عدد مقالات الصفحة.PNG" class="ipsImage ipsImage_thumbnailed" data-fileid="130501" data-unique="6vg34hqet" style="width: 800px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2023_07/.thumb.PNG.49c4647728dfd4ae890fbb9e9cbccac6.PNG">
</p>

<p>
	ففي حال حددت هنا عدد المقالات ليكون 6 مثلًا، عندها ستظهر لك فقط أحدث ستة مقالات منشورة في الموقع، وكي تتمكن من عرض بقية المقالات عليك إضافة روابط تنقل لنتمكن من رؤية المقالات الأقدم والأحدث من خلال الدالتين <code>previous_posts_link</code> و <code>next_posts_link</code>.
</p>

<p>
	لتحقيق ذلك كل ما عليك هو كتابة الكود التالي في الملف index.php قبل استدعاء الدالة<code>get_footer()‎</code> كما يلي:
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_9249_53" style=""><span class="tag">&lt;nav</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"pagination"</span><span class="tag">&gt;</span><span class="pln">
      </span><span class="pun">&lt;?</span><span class="pln">php
      previous_posts_link</span><span class="pun">(</span><span class="str">'&lt; الصفحة السابقة'</span><span class="pun">);</span><span class="pln">
      next_posts_link</span><span class="pun">(</span><span class="str">'الصفحة التالية &gt;'</span><span class="pun">);</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">
    </span><span class="tag">&lt;/nav&gt;</span><span class="pln">
</span><span class="tag">&lt;/div&gt;</span></pre>

<p>
	لاحظ أننا أضفنا في الكود العديد من أصناف التنسيقات classes الخاصة بـ CSS حتى نستفيد منها لاحقًا في الجزء الثالث من هذه السلسلة وأضفنا كذلك دالتين <a href="https://developer.wordpress.org/reference/functions/the_id/" rel="external nofollow"><code>the_ID()</code>‎</a> و <a href="https://developer.wordpress.org/reference/functions/post_class/" rel="external nofollow"><code>post_class()</code>‎</a> وفائدة الأولى إعادة معرف كل منشور على حدة والثانية إضافة بعض أصناف التنسيق لوسم HTML الذي يعرض المقالات لتساعد على تنسيقها وعرض محتوياتها وهي تعمل بطريقة مشابهة للدالة <code>body_class()‎</code> التي شرحناها سابقًا.
</p>

<h3>
	تعديل طريقة عرض مقتطف المقالات
</h3>

<p style="text-align: center;">
	<img alt="تغيير مقتطف المقال.PNG" class="ipsImage ipsImage_thumbnailed" data-fileid="130499" data-unique="82dn8k23z" style="width: 800px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2023_07/.thumb.PNG.b7277539e4b212e32258d85a411c7eba.PNG">
</p>

<p>
	أخيرًا سنعدل الرابط الذي تعرضه الدالة <code>the_excerpt()‎</code> فهذه الدالة تعرض بشكل افتراضي نص رابط مكون من ثلاث نقاط … في نهاية المقتطفات التي تزيد عن 55 كلمة وبالنقر فوق النقاط يتم تحويل المستخدم لصفحة قراءة المقال الكامل.
</p>

<p>
	للقيام لذلك سنكتب دالة تعدل على طريقة عمل هذه الدالة وتجعلها تعرض كلمة المزيد بدل النقاط الثلاث وتعدل طول المقتطف ليكون 20 حرفًا فقط، لذا سنكتب دالة خطاف تعديل للدالة <code>excerpt_more()‎</code> في ملف وظائف قالب ووردبريس functions.php كما يلي:
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_9249_55" style=""><span class="com">/**
 * the excerpt "read more"
 */</span><span class="pln">

</span><span class="kwd">function</span><span class="pln"> new_excerpt_more_qwe</span><span class="pun">(</span><span class="pln">$more</span><span class="pun">)</span><span class="pln">
</span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">return</span><span class="pln"> </span><span class="str">' &lt;a class="read-more" href="'</span><span class="pln"> </span><span class="pun">.</span><span class="pln"> get_permalink</span><span class="pun">(</span><span class="pln">get_the_ID</span><span class="pun">())</span><span class="pln"> </span><span class="pun">.</span><span class="pln"> </span><span class="str">'"&gt;'</span><span class="pln"> </span><span class="pun">.</span><span class="pln"> __</span><span class="pun">(</span><span class="str">'[المزيد]'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'your-text-domain'</span><span class="pun">)</span><span class="pln"> </span><span class="pun">.</span><span class="pln"> </span><span class="str">'&lt;/a&gt;'</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
add_filter</span><span class="pun">(</span><span class="str">'excerpt_more'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'new_excerpt_more_qwe'</span><span class="pun">);</span><span class="pln">

</span><span class="kwd">function</span><span class="pln"> mytheme_custom_excerpt_length</span><span class="pun">(</span><span class="pln">$length</span><span class="pun">)</span><span class="pln">
</span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">return</span><span class="pln"> </span><span class="lit">20</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
add_filter</span><span class="pun">(</span><span class="str">'excerpt_length'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'mytheme_custom_excerpt_length'</span><span class="pun">,</span><span class="pln"> </span><span class="lit">999</span><span class="pun">);</span></pre>

<h2>
	برمجة ملف تذييل قالب ووردبريس
</h2>

<p style="text-align: center;">
	<img alt="تذييل قالب ووردبريس.PNG" class="ipsImage ipsImage_thumbnailed" data-fileid="130498" data-unique="mjz0jxfxv" style="width: 400px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2023_07/.thumb.PNG.f94aa34258c5bcef180efc78f39c20df.PNG">
</p>

<p>
	يتضمن ملف footer.php كافة الشيفرات البرمجية الموجودة في منطقة التذييل بصفحتك وهو يتضمن وسوم فيه علامات الإغلاق <code>&lt;‎/body&gt;</code> و <code>&lt;‎/html&gt;</code> كما يمكنك هنا أيضًا استدعاء ملفات جافا سكريبت مخصصة في حال كنت تريد تحميلها بعد اكتمال تحميل الصفحة واستدعاء أي شيفرات يحتاج ووردبريس لوضعها تلقائيًا في التذييل.
</p>

<p>
	سيتضمن تذييل قالب ووردبريس الخاص بنا قسمين أساسيين الأول يعرض مجموعة من الودجات التي يضيفها المستخدم من داخل لوحة التحكم والثاني يعرض عبارة حقوق النشر الخاصة بالموقع.
</p>

<p>
	الودجات هي عناصر واجهة رسومية تعرض جزء صغير من المحتوى ويمكنك أن تضيفها في أي مكان ضمن موقعك لكن المكان الأكثر شهرة لإضافتها هو في الشريط الجانبي والتذييل ولعرض أي ودجات تمت إضافتها نستدعي الدالة <a href="https://developer.wordpress.org/reference/functions/dynamic_sidebar/" rel="external nofollow"><code>dynamic_sidebar()‎</code></a>، وللمزيد من المعلومات حول مفهوم الودجات وآلية عملها يمكنك مطالعة مقال <a href="https://academy.hsoub.com/apps/web/wordpress/%D8%AF%D9%84%D9%8A%D9%84-%D9%88%D8%AF%D8%AC%D8%A7%D8%AA-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r589/" rel="">دليل ودجات ووردبريس</a>.
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_9249_57" style=""><span class="tag">&lt;footer&gt;</span><span class="pln">
    </span><span class="tag">&lt;section</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"footer-qwe"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="pun">&lt;?</span><span class="pln">php dynamic_sidebar</span><span class="pun">(</span><span class="str">'footer 1'</span><span class="pun">);</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">
    </span><span class="tag">&lt;/section&gt;</span></pre>

<p>
	يمكن الوصول لصفحة إدارة الودجات وإضافتها لموقعك من لوحة التحكم من خلال التبويب <strong>مظهر</strong> ثم <strong>ودجات</strong>، وعند فتح صفحة الودجات ستجدها مقسمة إلى قسمين الأول على اليسار يحتوي على <strong>مناطق عرض الودجات</strong> وهي في قالبنا منطقة واحدة فقط اسمها footer 1.
</p>

<p style="text-align: center;">
	<img alt="ودجات قالب ووردبريس.PNG" class="ipsImage ipsImage_thumbnailed" data-fileid="130506" data-unique="y3p5ahsp2" style="width: 800px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2023_07/.thumb.PNG.a5416eeea41293ddd71d0d929c41838b.PNG">
</p>

<p>
	تختلف هذه المناطق من قالب لآخر حسب برمجته فيمكن أن يحتوي القالب على عدة مناطق لعرض الودجات وقد تكون الودجات جاهزة ومضمنة نظام ووردبريس نفسه، كما يمكن كتابة أكواد مخصصة لعرض الودجات الخاصة بك.
</p>

<p>
	نحتاج لأمر إضافي لعرض الودجات وهو تعريف مناطق الودجات الخاصة بقالب ووردبريس في ملف وظائف القالب function.php وسنقوم بذلك من خلال تعريف دالة مخصصة باسم <code>qwe_register_footers()‎</code> نُعرِّف من خلالها وسطاء منطقة عرض الودجات ثم نربطها مع الخطاف <code>widgets_init</code> الذي يقع عند تهيئة الودجات في ووردبريس كما يلي:
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_9249_59" style=""><span class="kwd">function</span><span class="pln"> qwe_register_footers</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
$args2 </span><span class="pun">=</span><span class="pln"> array</span><span class="pun">(</span><span class="str">'name'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="str">'footer 1'</span><span class="pun">,</span><span class="pln">
</span><span class="str">'id'</span><span class="pun">=&gt;</span><span class="str">'footer'</span><span class="pln"> </span><span class="pun">,</span><span class="pln">
</span><span class="str">'description'</span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">'عرض الودجات في التذييل'</span><span class="pun">,</span><span class="pln">
</span><span class="str">'class'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">''</span><span class="pun">,</span><span class="pln">
</span><span class="str">'before_widget'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">'&lt;div class="widgeth"&gt;&lt;li id="%1$s" class="widget %2$s"&gt;'</span><span class="pun">,</span><span class="pln">
</span><span class="str">'after_widget'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">'&lt;/li&gt;&lt;/div&gt;'</span><span class="pun">,</span><span class="pln">
</span><span class="str">'before_title'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">'&lt;h2 class="widgettitle"&gt;'</span><span class="pun">,</span><span class="pln">
</span><span class="str">'after_title'</span><span class="pln">  </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">'&lt;/h2&gt;'</span><span class="pln"> </span><span class="pun">);</span><span class="pln"> 
register_sidebars</span><span class="pun">(</span><span class="lit">1</span><span class="pun">,</span><span class="pln">$args2</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
 add_action</span><span class="pun">(</span><span class="str">'widgets_init'</span><span class="pun">,</span><span class="str">'qwe_register_footers'</span><span class="pun">);</span><span class="pln">
</span><span class="pun">?&gt;</span></pre>

<p>
	من المفيد أن نشرح دلالة كل وسيط من الوسطاء التي مررناها لهذه الدالة:
</p>

<ul>
	<li>
		name وسيط يمثل اسم منطقة عرض الودجات وهي footer 1
	</li>
	<li>
		id معرف فريد لمنطقة عرض الودجات
	</li>
	<li>
		description وصف منطقة عرض الودجات
	</li>
	<li>
		class صنف تنسيق CSS للمنطقة
	</li>
	<li>
		before_widget وسم HTML الذي سيتم وضعه قبل كل ودجت
	</li>
	<li>
		after_widget وسم HTML الذي سيتم وضعه بعد كل ودجت
	</li>
	<li>
		before title وسم HTML الذي سيتم وضعه قبل عنوان كل ودجت
	</li>
	<li>
		after_title وسم HTML الذي سيتم وضعه بعد عنوان كل ودجت
	</li>
</ul>

<p>
	في القسم الثاني من التذييل سنكتب جملة جميع الحقوق محفوظة ويليه اسم المدونة الذي نحصل عليه بشكل ديناميكي من خلال الدالة<code>get_bloginfo('name‎‎')‎</code>.
</p>

<p>
	أخيرًا لا ننسى استدعاء الدالة <code>wp_footer()‎</code> الأساسية لاستدعاء جميع أنواع السكريبتات الخاصة المرتبطة بالإضافات Plugins وكذلك الأكواد الخاصة بنظام ووردبريس والتي تستدعى في تذييل الصفحة لذا نكتب الأكواد التالية نهاية ملف index.php قبل وسم الإغلاق<code>&lt;‎/body‎&gt;</code> مباشرة:
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_9249_61" style=""><span class="tag">&lt;section</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"copyright"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;p&gt;</span><span class="pln">&lt;a href="</span><span class="pun">&lt;?</span><span class="pln">php echo home_url</span><span class="pun">();</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">"&gt;&amp;copy;</span><span class="pun">&lt;?</span><span class="pln">php echo date</span><span class="pun">(</span><span class="str">'Y'</span><span class="pun">);</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln"> جميع الحقوق محفوظة لـ </span><span class="pun">&lt;?</span><span class="pln">php echo get_bloginfo</span><span class="pun">(</span><span class="str">'name'</span><span class="pun">);</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="tag">&lt;/a&gt;&lt;/p&gt;</span><span class="pln">
    </span><span class="tag">&lt;/section&gt;</span><span class="pln">
</span><span class="tag">&lt;/footer&gt;</span><span class="pln">
</span><span class="tag">&lt;/div&gt;</span><span class="pln">
</span><span class="pun">&lt;?</span><span class="pln">php wp_footer</span><span class="pun">();</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">
</span><span class="tag">&lt;/body&gt;</span><span class="pln">
</span><span class="tag">&lt;/html&gt;</span></pre>

<p>
	بهذا نكون قد انتهينا من إنشاء كامل الكود المطلوب لملف index.php وفصلنا أكواد الترويسة والتذييل header.php و footer.php التي تتضمن أجزاء مكررة لنتمكن من استدعائها من خلال الدوال <code>get_header()</code>‎ و <code>get_footer()‎</code> ضمن الملف index.php أو ضمن أي ملف آخر يحتاجها مثل ملفات page.php و single.php و category.php حيث أن كل الملفات تقريبًا ستحتوي على هذين القسمين.
</p>

<p>
	إذًا سيكون كود ملف footer.php النهائي كالتالي:
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_9249_63" style=""><span class="tag">&lt;footer&gt;</span><span class="pln">
    </span><span class="tag">&lt;section</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"footer-qwe"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="pun">&lt;?</span><span class="pln">php dynamic_sidebar</span><span class="pun">(</span><span class="str">'footer 1'</span><span class="pun">);</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">
    </span><span class="tag">&lt;/section&gt;</span><span class="pln">
    </span><span class="tag">&lt;section</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"copyright"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;p&gt;</span><span class="pln">&lt;a href="</span><span class="pun">&lt;?</span><span class="pln">php echo home_url</span><span class="pun">();</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">"&gt;&amp;copy;</span><span class="pun">&lt;?</span><span class="pln">php echo date</span><span class="pun">(</span><span class="str">'Y'</span><span class="pun">);</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln"> جميع الحقوق محفوظة لـ </span><span class="pun">&lt;?</span><span class="pln">php echo get_bloginfo</span><span class="pun">(</span><span class="str">'name'</span><span class="pun">);</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="tag">&lt;/a&gt;&lt;/p&gt;</span><span class="pln">
    </span><span class="tag">&lt;/section&gt;</span><span class="pln">
</span><span class="tag">&lt;/footer&gt;</span><span class="pln">
</span><span class="tag">&lt;/div&gt;</span><span class="pln">
</span><span class="pun">&lt;?</span><span class="pln">php wp_footer</span><span class="pun">();</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">
</span><span class="tag">&lt;/body&gt;</span><span class="pln">
</span><span class="tag">&lt;/html&gt;</span></pre>

<p>
	وسيكون الملف النهائي لوظائف القالب بعد أن أضفنا كافة الميزات المطلوبة كما يلي:
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_9249_65" style=""><span class="pun">&lt;?</span><span class="pln">php

</span><span class="com">// menus</span><span class="pln">

</span><span class="kwd">function</span><span class="pln"> register_nav_menu_primary_qwe</span><span class="pun">(){</span><span class="pln">

    $location</span><span class="pun">=</span><span class="str">'Primary'</span><span class="pun">;</span><span class="pln">
    $description</span><span class="pun">=</span><span class="str">'Primary menu'</span><span class="pun">;</span><span class="pln">
    register_nav_menu</span><span class="pun">(</span><span class="pln"> $location</span><span class="pun">,</span><span class="pln"> $description </span><span class="pun">);</span><span class="pln">

</span><span class="pun">}</span><span class="pln">
add_action</span><span class="pun">(</span><span class="str">'after_setup_theme'</span><span class="pun">,</span><span class="str">'register_nav_menu_primary_qwe'</span><span class="pln"> </span><span class="pun">);</span><span class="pln">


</span><span class="kwd">function</span><span class="pln"> register_nav_menu_Secondary_qwe</span><span class="pun">(){</span><span class="pln">

    $location</span><span class="pun">=</span><span class="str">'Secondary'</span><span class="pun">;</span><span class="pln">
    $description</span><span class="pun">=</span><span class="str">'Secondary menu'</span><span class="pun">;</span><span class="pln">
    register_nav_menu</span><span class="pun">(</span><span class="pln"> $location</span><span class="pun">,</span><span class="pln"> $description </span><span class="pun">);</span><span class="pln">

</span><span class="pun">}</span><span class="pln">
add_action</span><span class="pun">(</span><span class="str">'after_setup_theme'</span><span class="pun">,</span><span class="str">'register_nav_menu_Secondary_qwe'</span><span class="pln"> </span><span class="pun">);</span><span class="pln">

</span><span class="com">/**
 * Enqueue scripts and styles.
 */</span><span class="pln">
</span><span class="kwd">function</span><span class="pln"> modawanaty_scripts</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    wp_enqueue_style</span><span class="pun">(</span><span class="pln"> </span><span class="str">'modawanaty-style'</span><span class="pun">,</span><span class="pln"> get_stylesheet_uri</span><span class="pun">(),</span><span class="pln"> array</span><span class="pun">(),</span><span class="pln"> wp_get_theme</span><span class="pun">()-&gt;</span><span class="kwd">get</span><span class="pun">(</span><span class="pln"> </span><span class="str">'Version'</span><span class="pln"> </span><span class="pun">)</span><span class="pln"> </span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
add_action</span><span class="pun">(</span><span class="pln"> </span><span class="str">'wp_enqueue_scripts'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'modawanaty_scripts'</span><span class="pln"> </span><span class="pun">);</span><span class="pln">

</span><span class="com">// thumbnail connection</span><span class="pln">
</span><span class="kwd">function</span><span class="pln"> post_thumbnails_qwe</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    </span><span class="com">// add_theme_support( $feature, $arguments );</span><span class="pln">
    add_theme_support</span><span class="pun">(</span><span class="pln"> </span><span class="str">'post-thumbnails'</span><span class="pun">,</span><span class="pln"> array</span><span class="pun">(</span><span class="pln"> </span><span class="str">'post'</span><span class="pun">,</span><span class="str">'page'</span><span class="pun">)</span><span class="pln"> </span><span class="pun">);</span><span class="pln"> </span><span class="com">// Posts and pages</span><span class="pln">
    add_image_size</span><span class="pun">(</span><span class="str">'small'</span><span class="pun">,</span><span class="lit">300</span><span class="pun">,</span><span class="lit">300</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">);</span><span class="pln">
    add_image_size</span><span class="pun">(</span><span class="str">'large'</span><span class="pun">,</span><span class="lit">600</span><span class="pun">,</span><span class="lit">600</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
add_action</span><span class="pun">(</span><span class="pln"> </span><span class="str">'after_setup_theme'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'post_thumbnails_qwe'</span><span class="pln"> </span><span class="pun">);</span><span class="pln">

</span><span class="com">// custom logo</span><span class="pln">
add_theme_support</span><span class="pun">(</span><span class="pln"> </span><span class="str">'custom-logo'</span><span class="pln"> </span><span class="pun">);</span><span class="pln">
</span><span class="kwd">function</span><span class="pln"> themename_custom_logo_setup</span><span class="pun">()</span><span class="pln">
</span><span class="pun">{</span><span class="pln"> $defaults </span><span class="pun">=</span><span class="pln"> array</span><span class="pun">(</span><span class="pln"> </span><span class="str">'height'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="lit">200</span><span class="pun">,</span><span class="pln">
</span><span class="str">'width'</span><span class="pun">=&gt;</span><span class="pln"> </span><span class="lit">200</span><span class="pun">,</span><span class="pln">
</span><span class="str">'flex-height'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">,</span><span class="pln">
</span><span class="str">'flex-width'</span><span class="pln">  </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">,</span><span class="pln">
</span><span class="str">'header-text'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> array</span><span class="pun">(</span><span class="pln"> </span><span class="str">'site-title'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'site-description'</span><span class="pln"> </span><span class="pun">),</span><span class="pln"> </span><span class="pun">);</span><span class="pln">
add_theme_support</span><span class="pun">(</span><span class="pln"> </span><span class="str">'custom-logo'</span><span class="pun">,</span><span class="pln"> $defaults </span><span class="pun">);</span><span class="pln"> </span><span class="pun">}</span><span class="pln">

add_action</span><span class="pun">(</span><span class="pln"> </span><span class="str">'after_setup_theme'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'themename_custom_logo_setup'</span><span class="pun">);</span><span class="pln"> 


</span><span class="com">// the excerpt "read more</span><span class="pln">

</span><span class="kwd">function</span><span class="pln"> new_excerpt_more_qwe</span><span class="pun">(</span><span class="pln"> $more </span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">return</span><span class="pln"> </span><span class="str">' &lt;a class="read-more" href="'</span><span class="pun">.</span><span class="pln"> get_permalink</span><span class="pun">(</span><span class="pln"> get_the_ID</span><span class="pun">()</span><span class="pln"> </span><span class="pun">)</span><span class="pln"> </span><span class="pun">.</span><span class="pln"> </span><span class="str">'"&gt;'</span><span class="pln"> </span><span class="pun">.</span><span class="pln"> __</span><span class="pun">(</span><span class="str">'[المزيد]'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'your-text-domain'</span><span class="pun">)</span><span class="pln"> </span><span class="pun">.</span><span class="pln"> </span><span class="str">'&lt;/a&gt;'</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
add_filter</span><span class="pun">(</span><span class="pln"> </span><span class="str">'excerpt_more'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'new_excerpt_more_qwe'</span><span class="pln"> </span><span class="pun">);</span><span class="pln">

</span><span class="kwd">function</span><span class="pln"> mytheme_custom_excerpt_length</span><span class="pun">(</span><span class="pln"> $length </span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">return</span><span class="pln"> </span><span class="lit">20</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
add_filter</span><span class="pun">(</span><span class="pln"> </span><span class="str">'excerpt_length'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'mytheme_custom_excerpt_length'</span><span class="pun">,</span><span class="pln"> </span><span class="lit">999</span><span class="pln"> </span><span class="pun">);</span><span class="pln">

</span><span class="com">// add Footers </span><span class="pln">
</span><span class="kwd">function</span><span class="pln"> qwe_register_footers</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    $args2 </span><span class="pun">=</span><span class="pln"> array</span><span class="pun">(</span><span class="str">'name'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="str">'footer 1'</span><span class="pun">,</span><span class="pln">
        </span><span class="str">'id'</span><span class="pun">=&gt;</span><span class="str">'footer'</span><span class="pln"> </span><span class="pun">,</span><span class="pln">
        </span><span class="str">'description'</span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">'add another footer'</span><span class="pun">,</span><span class="pln">
        </span><span class="str">'class'</span><span class="pln">  </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">''</span><span class="pun">,</span><span class="pln">
        </span><span class="str">'before_widget'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">'&lt;div class="widgeth"&gt;&lt;li id="%1$s" class="widget %2$s"&gt;'</span><span class="pun">,</span><span class="pln">
        </span><span class="str">'after_widget'</span><span class="pln">  </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">'&lt;/li&gt;&lt;/div&gt;'</span><span class="pun">,</span><span class="pln">
        </span><span class="str">'before_title'</span><span class="pln">  </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">'&lt;h2 class="widgettitle"&gt;'</span><span class="pun">,</span><span class="pln">
        </span><span class="str">'after_title'</span><span class="pln">   </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">'&lt;/h2&gt;'</span><span class="pln"> </span><span class="pun">);</span><span class="pln"> 

    register_sidebars</span><span class="pun">(</span><span class="lit">1</span><span class="pun">,</span><span class="pln">$args2</span><span class="pun">);</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
 add_action</span><span class="pun">(</span><span class="str">'widgets_init'</span><span class="pun">,</span><span class="str">'qwe_register_footers'</span><span class="pun">);</span></pre>

<h2>
	إنشاء ملف single.php وملف page.php
</h2>

<p style="text-align: center;">
	<img alt="المقال المفرد في قالب ووردبريس.PNG" class="ipsImage ipsImage_thumbnailed" data-fileid="130495" data-unique="iffpxkkx7" style="width: 700px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2023_07/.thumb.PNG.b811ff9f18e50fc109d964741d854450.PNG">
</p>

<p>
	ذكرنا سابقًا أن الملف single.php هو المسؤول عن عرض المقال المفرد ونحن هنا نقصد المنشور الافتراضي post في ووردبريس أو المنشور المخصص <a href="https://academy.hsoub.com/programming/php/wordpress/%D8%A5%D9%86%D8%B4%D8%A7%D8%A1-%D8%A3%D9%86%D9%88%D8%A7%D8%B9-%D9%85%D9%86%D8%B4%D9%88%D8%B1%D8%A7%D8%AA-%D9%85%D8%AE%D8%B5%D8%B5%D8%A9-custom-post-types-%D9%81%D9%8A-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r100/" rel="">custom post</a> لكن هذا الملف ليس مسؤولًا عن عرض الصفحات الثابتة page فهذه الصفحات لها ملف خاص مسؤول عن عرضها وهو page.php.
</p>

<p>
	سنكتب في كلا الملفين كود مشابه لما كتبناه في ملف index.php مع تغيير طفيف في الشيفرات البرمجية حيث سنعمل على استبدال الدالة <code>the_excerpt()‎</code> التي تعرض مقتطف من المقال بالدالة <code>the_content()‎</code> التي تعرض المحتوى الكامل للمقال وتغيير أصناف التنسيقات class الرئيسية وحجم الصورة المصغرة كما يلي:
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_9249_67" style=""><span class="pun">&lt;?</span><span class="pln">php get_header</span><span class="pun">();</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">

       </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"main"</span><span class="tag">&gt;</span><span class="pln">
       </span><span class="pun">&lt;?</span><span class="pln">php
            </span><span class="kwd">if</span><span class="pun">(</span><span class="pln">have_posts</span><span class="pun">())</span><span class="pln"> </span><span class="pun">{</span><span class="pln">

                </span><span class="kwd">while</span><span class="pln"> </span><span class="pun">(</span><span class="pln"> have_posts</span><span class="pun">()</span><span class="pln"> </span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> 

                    the_post</span><span class="pun">();</span><span class="pln">

                    echo </span><span class="str">'&lt;div id="post-'</span><span class="pun">;</span><span class="pln">the_ID</span><span class="pun">();</span><span class="pln">echo </span><span class="str">'"'</span><span class="pun">;</span><span class="pln">post_class</span><span class="pun">();</span><span class="pln">echo </span><span class="str">'&gt;'</span><span class="pun">;</span><span class="pln">

                    echo </span><span class="str">'&lt;div class="rect"&gt;'</span><span class="pun">;</span><span class="pln">
                    echo </span><span class="str">'&lt;h1 class="qwe-page-title"&gt;&lt;a href="'</span><span class="pun">;</span><span class="pln">
                    the_permalink</span><span class="pun">();</span><span class="pln">    
                    echo</span><span class="str">'"&gt;  '</span><span class="pun">;</span><span class="pln">
                    the_title</span><span class="pun">();</span><span class="pln">
                    echo </span><span class="str">'&lt;/a&gt;&lt;/h1&gt;'</span><span class="pun">;</span><span class="pln">
                    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln"> has_post_thumbnail</span><span class="pun">()</span><span class="pln"> </span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
                        the_post_thumbnail</span><span class="pun">(</span><span class="str">'large'</span><span class="pun">);</span><span class="pln">
                    </span><span class="pun">}</span><span class="pln">
                    the_content</span><span class="pun">();</span><span class="pln">
                    echo </span><span class="str">'&lt;/div&gt;'</span><span class="pun">;</span><span class="pln">
                </span><span class="pun">}</span><span class="pln">
            </span><span class="pun">}</span><span class="pln">
        </span><span class="pun">?&gt;</span><span class="pln">    
       </span><span class="tag">&lt;/div&gt;</span><span class="pln">
</span><span class="pun">&lt;?</span><span class="pln">php get_footer</span><span class="pun">();</span><span class="pln"> </span><span class="pun">?&gt;</span></pre>

<h2>
	إنشاء ملف الأرشيف archive.php
</h2>

<p>
	يعرض ملف الأرشيف archive.php المقالات المؤرشفة وفق أي معيار سواء وفق تاريخ نشر المقال أو وفق التصنيف المضاف للمقال أو وفق اسم الكاتب …إلخ. لبرمجة ملف أرشيف قالب ووردبريس سنجعل هذا الملف نسخة طبق الأصل من ملف index.php مع تغيير صغير كذلك وهو عرض التصنيف الخاص بالمقالات أعلى الصفحة من خلال الدالة <a href="https://developer.wordpress.org/reference/functions/the_archive_title/" rel="external nofollow"><code>the_archive_title()‎</code></a> التي توضح اسم التصنيف الخاص بأرشفة هذه المقالات كما يلي:
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_9249_69" style=""><span class="pun">&lt;?</span><span class="pln">php get_header</span><span class="pun">();</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">

       </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"main"</span><span class="tag">&gt;</span><span class="pln">

</span><span class="tag">&lt;section</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"page-title"</span><span class="tag">&gt;</span><span class="pln">
</span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"container clearfix"</span><span class="tag">&gt;</span><span class="pln">
  </span><span class="tag">&lt;h1&gt;</span><span class="pun">&lt;?</span><span class="pln">php echo the_archive_title</span><span class="pun">();</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="tag">&lt;/h1&gt;</span><span class="pln">
</span><span class="tag">&lt;/div&gt;</span><span class="pln">
</span><span class="tag">&lt;/section&gt;</span><span class="com">&lt;!-- #page-title end --&gt;</span><span class="pln">
</span><span class="pun">&lt;?</span><span class="pln">php
            </span><span class="kwd">if</span><span class="pun">(</span><span class="pln">have_posts</span><span class="pun">())</span><span class="pln"> </span><span class="pun">{</span><span class="pln">

                </span><span class="kwd">while</span><span class="pln"> </span><span class="pun">(</span><span class="pln"> have_posts</span><span class="pun">()</span><span class="pln"> </span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> 

                    the_post</span><span class="pun">();</span><span class="pln">

                    echo </span><span class="str">'&lt;div id="post-'</span><span class="pun">;</span><span class="pln">the_ID</span><span class="pun">();</span><span class="pln">echo </span><span class="str">'"'</span><span class="pun">;</span><span class="pln">post_class</span><span class="pun">();</span><span class="pln">echo </span><span class="str">'&gt;'</span><span class="pun">;</span><span class="pln">

                    echo </span><span class="str">'&lt;div class="rect"&gt;'</span><span class="pun">;</span><span class="pln">
                    echo </span><span class="str">'&lt;h1 class="qwe-page-title"&gt;&lt;a href="'</span><span class="pun">;</span><span class="pln">
                    the_permalink</span><span class="pun">();</span><span class="pln">    
                    echo</span><span class="str">'"&gt;  '</span><span class="pun">;</span><span class="pln">
                    the_title</span><span class="pun">();</span><span class="pln">
                    echo </span><span class="str">'&lt;/a&gt;&lt;/h1&gt;'</span><span class="pun">;</span><span class="pln">
                    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln"> has_post_thumbnail</span><span class="pun">()</span><span class="pln"> </span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
                        the_post_thumbnail</span><span class="pun">(</span><span class="str">'small'</span><span class="pun">);</span><span class="pln">
                    </span><span class="pun">}</span><span class="pln">
                    the_excerpt</span><span class="pun">(</span><span class="str">'&lt;br/&gt;&lt;p class="push_button"&gt;المزيد &lt;/p&gt;'</span><span class="pun">);</span><span class="pln">
                    echo </span><span class="str">'&lt;/div&gt;'</span><span class="pun">;</span><span class="pln">
                </span><span class="pun">}</span><span class="pln">
            </span><span class="pun">}</span><span class="pln">
        </span><span class="pun">?&gt;</span><span class="pln">    
       </span><span class="tag">&lt;/div&gt;</span><span class="pln">
</span><span class="pun">&lt;?</span><span class="pln">php get_footer</span><span class="pun">();</span><span class="pln"> </span><span class="pun">?&gt;</span></pre>

<p>
	بهذا نكون قد انتهينا من برمجة كامل الملفات التي تحدد هيكلية أو بنية قالب ووردبريس المخصص وتجلب لنا المحتوى المطلوب عرضه في كل صفحة من صفحات الموقع.
</p>

<p>
	لكن قالب ووردبريس حاليًا يعرض المحتوى بشكل بدائي للغاية وهذا أمر طبيعي لأننا لم نضف بعد أي تنسيقات للعناصر التي عرضناها وهو ما سنقوم به في الدرس التالي من هذه السلسلة.
</p>

<h2>
	مصادر إضافية لتعلم برمجة قوالب ووردبريس من الصفر
</h2>

<p>
	إذا كنت مهتمًا بمعرفة المزيد من التفاصيل حول مميزات بناء قالب وردبريس وأهم خطوات برمجة قالب ووردبريس أنصح بمشاهدة الفيديو التالي:
</p>

<p>
	<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="" frameborder="0" height="315" id="ips_uid_9249_5" src="https://academy.hsoub.com/applications/core/interface/index.html" title="YouTube video player" width="560" data-embed-src="https://www.youtube.com/embed/s0JTiYoSQt0"></iframe>
</p>

<p>
	وفي كنت تبحث عن دورة متكاملة تعلمك تطوير قوالب ووردبريس بطريقة احترافية ومتقدمة تمكنك من تطوير قوالب مميزة وبيعها في المتاجر المتخصصة أنصحك بمطالعة <a href="https://academy.hsoub.com/learn/php-web-application-development/" rel="">دورة تطوير تطبيقات الويب باستخدام لغة PHP</a> التي توفرها أكاديمية حسوب، ستجد في هذه الدورة الكثير من المسارات المتخصصة في <a href="https://academy.hsoub.com/wordpress/" rel="">تعليم ووردبريس</a> من الصفر حتى الاحتراف وتتبع منهجيات وطرق متعددة في التطوير.
</p>

<h2>
	الخلاصة
</h2>

<p>
	تعلمنا في درس اليوم إنشاء الملفات الأساسية لقالب ووردبريس وقد اكتفينا بالملفات الأساسية للقالب وبالطبع هناك الكثير من الملفات الأخرى التي يمكنك إضافتها لجعل قالب ووردبريس أكثر تخصيصًا لكن تطويرها يعتمد على نفس الأفكار التي طرحناها في هذا الدرس.
</p>

<p>
	وسنقوم في الدرس الرابع من هذه السلسلة بخطوة مهمة جدًا وهي تنسيق محتوى الموقع لنجعل طريقة عرضه موافقة بالضبط لتصميم القالب المطلوب.
</p>

<p>
	<em>كتب المسودة الأولية للمقال <a href="https://academy.hsoub.com/profile/3732499-hesham-hussain2/" rel="">هشام حسين</a>.</em>
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
	<li>
		المقال السابق: <a href="https://academy.hsoub.com/programming/php/wordpress/%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A7%D8%AA-%D8%AA%D8%B7%D9%88%D9%8A%D8%B1-%D9%82%D8%A7%D9%84%D8%A8-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r2027/" rel="">أساسيات تطوير قالب ووردبريس</a>
	</li>
	<li>
		المقال التالي: <a href="https://academy.hsoub.com/programming/php/wordpress/%D8%A5%D8%B6%D8%A7%D9%81%D8%A9-%D8%AA%D9%86%D8%B3%D9%8A%D9%82%D8%A7%D8%AA-css-%D9%84%D9%82%D8%A7%D9%84%D8%A8-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r2032/" rel="">إضافة تنسيقات CSS لقالب ووردبريس</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/php/wordpress/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%A7%D9%84%D8%A8%D8%AF%D8%A1-%D9%81%D9%8A-%D8%AA%D8%B7%D9%88%D9%8A%D8%B1-%D9%82%D9%88%D8%A7%D9%84%D8%A8-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r1729/" rel="">كيفية البدء في تطوير قوالب ووردبريس</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/php/wordpress/%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D9%82%D9%88%D8%A7%D9%84%D8%A8-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r1223//" rel="">استخدام قوالب ووردبريس</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">2028</guid><pubDate>Thu, 13 Jul 2023 15:00:00 +0000</pubDate></item><item><title>&#x623;&#x633;&#x627;&#x633;&#x64A;&#x627;&#x62A; &#x62A;&#x637;&#x648;&#x64A;&#x631; &#x642;&#x627;&#x644;&#x628; &#x648;&#x648;&#x631;&#x62F;&#x628;&#x631;&#x64A;&#x633;</title><link>https://academy.hsoub.com/programming/php/wordpress/%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A7%D8%AA-%D8%AA%D8%B7%D9%88%D9%8A%D8%B1-%D9%82%D8%A7%D9%84%D8%A8-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r2027/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2023_07/748541703_.png.c25ea78f6971f207fe81810ed08e1548.png" /></p>
<p>
	في مقال اليوم سنتحدث عن أهمية تطوير قالب ووردبريس مخصص ونوضح الخطوات الأساسية التي علينا اتباعها كي نحول قالب ووردبريس من تصميم أساسي مرسوم باستخدام فيجما يتضمن تخطيط وتموضع العناصر ضمن الموقع إلى قالب فعلي يمكن تثبيته على موقع ووردبريس.
</p>

<p>
	هذا المقال هو المقال الثاني من سلسلة المقالات التالية:
</p>

<ul>
	<li>
		<a href="https://academy.hsoub.com/programming/php/wordpress/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D9%82%D9%88%D8%A7%D9%84%D8%A8-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r2017/" rel="">مدخل إلى برمجة قوالب ووردبريس</a>
	</li>
	<li>
		<span ipsnoautolink="true">أساسيات تطوير قالب ووردبريس</span>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/php/wordpress/%D8%A5%D9%86%D8%B4%D8%A7%D8%A1-%D8%A7%D9%84%D9%85%D9%84%D9%81%D8%A7%D8%AA-%D8%A7%D9%84%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A9-%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D9%82%D8%A7%D9%84%D8%A8-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r2028/" rel="">إنشاء الملفات الأساسية لبرمجة قالب ووردبريس</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/php/wordpress/%D8%A5%D8%B6%D8%A7%D9%81%D8%A9-%D8%AA%D9%86%D8%B3%D9%8A%D9%82%D8%A7%D8%AA-css-%D9%84%D9%82%D8%A7%D9%84%D8%A8-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r2032/" rel="">إضافة تنسيقات CSS لقالب ووردبريس</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/php/wordpress/%D8%A5%D8%B6%D8%A7%D9%81%D8%A9-%D8%A7%D9%84%D9%85%D9%85%D9%8A%D8%B2%D8%A7%D8%AA-%D9%84%D9%82%D8%A7%D9%84%D8%A8-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%AC%D8%A7%D9%81%D8%A7-%D8%B3%D9%83%D8%B1%D9%8A%D8%A8%D8%AA-r2035/" rel="">إضافة المميزات لقالب ووردبريس باستخدام جافا سكريبت</a>
	</li>
</ul>

<p>
	بعد الانتهاء من تصميم الموقع ستكون الخطوة التالية هي برمجة هذا التصميم وتحويله إلى قالب ووردبريس فعلي وهو ما سنبدأ بتعلمه في هذا المقال والمقالات التي تليه، لكن قبل البدء فعليًا ببرمجة القالب وإنشاء ملفاته الضرورية يجب أن تطلع على بعض المعلومات الأساسية حول بنية قوالب ووردبريس وتكون على دراية بكافة الطرق المختلفة التي يمكنك من خلالها تطوير قالب ووردبريس والتمكن من القواعد الأساسية المطلوبة لعملية التطوير وهو ما سنناقشه في مقال اليوم.
</p>

<p>
	بالطبع هناك الكثير من التفاصيل التي عليك الإلمام بها، ولكننا سوف نوضح في هذا الدليل أهم الجوانب والنقاط التي تحتاجها بصورة ملخصة كي تتمكن من بدأ العمل بشكل سريع وتبني قالب مدونة بسيط خطوة بخطوة وللاستزادة يمكنك الرجوع إلى الدليل الرسمي لمطوري ووردبريس حيث ستجد فيه الكثير من التفاصيل المشروحة عن برمجة قوالب ووردبريس.
</p>

<h2>
	طرق تطوير قالب ووردبريس مخصص
</h2>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="130458" href="https://academy.hsoub.com/uploads/monthly_2023_07/___.png.8649f6c2fa2a0590bce321d6a2e38255.png" rel=""><img alt="طرق تطوير قالب ووردبريس مخصص" class="ipsImage ipsImage_thumbnailed" data-fileid="130458" data-ratio="62.50" data-unique="dlzmzqa8d" style="width: 800px; height: auto;" width="800" src="https://academy.hsoub.com/uploads/monthly_2023_07/___.thumb.png.79e66b2ad38573e58809c8a35c8f31c7.png"> </a>
</p>

<p>
	قبل البدء بالتعرف على الهيكل التنظيمي لمجلدات وملفات قوالب ووردبريس ومعرفة ما هي الملفات المطلوبة التي ينبغي وجودها في أي قالب تطوره ودور كل ملف منها وهرمية استدعاء هذه الملفات عند تفعيل القالب على موقع ووردبريس فعلي دعنا نتعرف على كافة الطرق والخيارات المتاحة أمامك لتطوير قالب ووردبريس.
</p>

<p>
	في الواقع إذا أعجبك تصميم لموقع ما ورغبت في تحويله إلى قالب ووردبريس فسيكون أمامك عدة خيارات ممكنة لإنجاز العمل، تشمل هذه الخيارات:
</p>

<ol>
	<li>
		برمجة قالب ووردبريس من الصفر
	</li>
	<li>
		برمجة قالب ووردبريس بالاعتماد على قوالب البدء
	</li>
	<li>
		الحصول على قالب ستاتيكي وتحويله إلى قالب ووردبريس
	</li>
	<li>
		تطوير قالب ووردبريس ابن من قالب أب
	</li>
	<li>
		برمجة قالب ووردبريس بالاعتماد على أطر عمل القوالب
	</li>
	<li>
		تطوير قالب ووردبريس باستخدام أحد إضافات بناء الصفحات
	</li>
	<li>
		توظيف مطور ليصمم قالب ووردبريس مخصص
	</li>
</ol>

<p>
	لنشرح باختصار آلية عمل كل طريقة من هذه الطرق وأهم مميزاتها ومحدوديتها.
</p>

<h3>
	1. تطوير قالب ووردبريس من الصفر
</h3>

<p>
	يمكنك اتباع هذه الطريقة إذا كنت تريد تجربة كتابة كل شيء بنفسك بدون الاعتماد على أي حلول مساعدة، حيث سيتوجب عليك أن تكتب كل الشيفرات البرمجية اللازمة من الصفر وتحرص على استخدام أفضل الممارسات في كتابة الكود.
</p>

<p>
	وبالرغم من صعوبة القيام بكتابة كافة الأكواد المطلوبة لعمل القالب من الصفر ثم تنسيق عناصر القالب بالشكل المطلوب وعدم اعتماد المطورين على هذه الطريقة عمليًا في سوق العمل نظرًا لكون الحلول الأخرى أسهل وأسرع إلا أننا سنعتمد على هذه الطريقة في سلسلة مقالاتنا الحالية لغرض التعلم فقط.
</p>

<p>
	فتطوير قالب ووردبريس من الصفر كفيل بجعلك تفهم بشكل أفضل آلية عمل ملفات قالب ووردبريس وتفاعلها مع بعضها البعض وطريقة استدعائها في الموقع. وفي مرحلة لاحقة يمكنك استخدام الطرق الأخرى في التطوير.
</p>

<h3>
	2. برمجة قالب ووردبريس بالاعتماد على قوالب بادئة
</h3>

<p>
	قالب البدء أو قالب التمهيد <strong>starter theme</strong> هو عبارة عن قالب ووردبريس بسيط يوفر للمطور أهم الشيفرات البرمجية اللازمة لعمل القالب ويحقق له الوظائف المتكررة التي يحتاجها كل قالب بالحد الأدنى لكنه لا يتضمن في العادة تنسيق عناصر القالب أو المحتوى الذي يعرضه القالب وقد يتضمن بعض التنسيقات لكنها تكون بسيطة للغاية.
</p>

<p>
	تستخدم قوالب البدء كأساس لإنشاء قوالب ووردبريس مثالية واحترافية مخصصة وهناك العديد من القوالب التي يمكنك الاعتماد عليها كأساس لبرمجة قالب ووردبريس مخصص مثل قالب <a href="https://underscores.me/" rel="external nofollow">Underscores</a> المطور من قبل شركة أوتوماتيك Automattic وهي نفس الشركة التي طورت منصة wordpress.com كل ما عليك هو تحميل هذا القالب وإضافة الأكواد الخاصة بك لتخصيص طريقة عمله بما يلائم متطلبات موقعك.
</p>

<p>
	ملاحظة: قد تجد بعض قوالب البدء الأخرى التي تتضمن العديد من مكتبات الأكواد والتنسيقات والعناصر المتقدمة الجاهزة التي يمكنك استخدامها في بناء موقعك، لكن يفضل معظم المطورين الاعتماد على قوالب بدء بعناصر أساسية وبأقل الميزات لتطويعها حسب حاجتهم.
</p>

<p>
	لمزيد من التفاصيل حول قالب البدء يمكنك مطالعة مقال <a href="https://academy.hsoub.com/programming/php/wordpress/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%AA%D8%B7%D9%88%D9%8A%D8%B1-%D9%82%D9%88%D8%A7%D9%84%D8%A8-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A5%D8%B7%D8%A7%D8%B1-underscores-r86/" rel="">مدخل إلى تطوير قوالب ووردبريس باستخدام إطار underscores</a>، كما توفر أكاديمية حسوب في <a href="https://academy.hsoub.com/learn/php-web-application-development/" rel="">دورة تطوير التطبيقات باستخدام PHP</a> مسار كامل لشرح طريقة تطوير قالب ووردبريس بالاعتماد على قالب underscores.
</p>

<h3>
	3. تحويل قالب ستاتيكي إلى قالب ووردبريس ديناميكي
</h3>

<p>
	يمكن اعتبار هذه الطريقة عكس الطرق السابقة فأنت تبدأ بتصميم القالب بالكامل بشكل ستاتيكي أي تصممه بداية بحيث يعرض محتوى ثابت باستخدام لغات الواجهة الأمامية للويب فقط <a href="https://wiki.hsoub.com/HTML" rel="external">HTML</a> و <a href="https://wiki.hsoub.com/CSS" rel="external">CSS</a> و<a href="https://wiki.hsoub.com/JavaScript" rel="external">جافا سكريبت</a>، وتهتم بكل تفاصيل التصميم من البداية كما يمكنك مباشرة أن تعتمد على تصميم جاهز مطور مسبقًا وتحوله لقالب ووردبريس إذا كان يلائم متطلباتك.
</p>

<p>
	وعندما تنتهي من برمجة وتصميم كل ما يتعلق بالواجهة الأمامية الموقع بالكامل تبدأ بتحويله إلى قالب ديناميكي يعرض المحتوى المضاف من لوحة تحكم ووردبريس بالاعتماد على تقسيم الملفات بالشكل المعتمد في ووردبريس واستدعاء الدوال الجاهزة التي يوفرها لك نظام ووردبريس وكتابة <a href="https://academy.hsoub.com/programming/php/%D8%A7%D9%84%D8%AF%D9%88%D8%A7%D9%84-functions-%D9%81%D9%8A-php-r295/" rel="">دوال php</a> واستعلامات WP_Query لعرض محتوى مخصص عند الحاجة.
</p>

<p>
	تستخدم هذه الطريقة بكثرة لدى مطوري قوالب ووردبريس وتطلب من قبل العديد من العملاء على مواقع العمل الحر فإذا كنت مهتمًا بالتعرف على طريقة تحويل أي قالب HTML ثابت إلى قالب ملائم للعمل على نظام ووردبريس ستجد في <a href="https://academy.hsoub.com/learn/php-web-application-development/" rel="">دورة تطوير تطبيقات الويب باستخدام لغة PHP</a> التي توفرها أكاديمية حسوب مسارًا متكاملاً يعلمك طريقة تطوير قالب ووردبريس إخباري بالاعتماد على قالب HTML.
</p>

<h3>
	4. تطوير قالب ووردبريس ابن من قالب أب
</h3>

<p>
	عند تطوير قالب فرعي أو قالب ابن child theme من قالب أب أو أساسي parent theme فإنه سيرث خصائص وتنسيقات القالب الأصل ويضيف التنسيقات والوظائف الخاصة به دون إجراء أي تعديلات برمجية على ملفات القالب الأب، لكنك في هذه الحالة بحاجة في كل مرة لتثبيت القالب الابن والأب معًا في موقعك.
</p>

<p>
	تعد هذه الطريقة مثالية عندما تجد قالب ووردبريس يتضمن معظم المميزات التي ترغب بها لكنه يحتاج لبعض التعديلات الطفيفة كي يناسب متطلباتك، لكن في حال كانت التغييرات التي تحتاج لأن تجريها على القالب كثيرة وجذرية يفضل أن تقوم بتطويره بشكل مستقل ولن يكون من المجدي في هذه الحالة أن تستنسخه من قالب آخر. ولمطالعة المزيد من التفاصيل حول خطوات بناء قوالب فرعية في ووردبريس أنصح بمطالعة مقال <a href="https://academy.hsoub.com/programming/php/wordpress/%D9%83%D9%8A%D9%81-%D8%AA%D9%86%D8%B4%D8%A6-%D9%82%D8%A7%D9%84%D8%A8-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-%D9%81%D8%B1%D8%B9%D9%8A-r107/" rel="">كيف تنشئ قالب ووردبريس فرعي</a>.
</p>

<h3>
	5. برمجة قالب ووردبريس الاعتماد على أطر عمل القوالب
</h3>

<p>
	توفر أطر عمل القوالب theme frameworks طريقة فعالة وسريعة لتطوير قوالب أبناء مخصصة من قالب ووردبريس أساسي فإطار العمل يعمل كوسيط بين القالب الأب والابن ويوفر لك قالب أساسي مطور وفق أفضل الممارسات ومجموعة من الدوال والأدوات الخاصة بالإطار وكل ما عليك هو إنشاء قالب ابن من إطار العمل واستدعاء ما يناسبك من هذه الدوال من أجل إضافة أو إزالة المحتوى الذي تريده ومن أشهر الأمثلة على أطر عمل قوالب ووردبريس نذكر Genesis و Thesis.
</p>

<p>
	بهذه الطريقة يمكنك تخصيص القالب الابن بسهولة دون الحاجة لكتابة الكثير من الأكواد البرمجية وكل ما عليك هو استدعاء دوال محددة تجعل موقع الويب يبدو بالطريقة التي تناسبك وبهذا يمكنك تخصيص القالب المطور بناء على إطار العمل بسهولة ودون الحاجة لتحرير ملفات القالب مباشرة.
</p>

<h3>
	5. تطوير قالب ووردبريس باستخدام إضافات بناء الصفحات
</h3>

<p>
	في هذه الحالة لن تحتاج لكتابة أي كود برمجي لبناء قالب ووردبريس مخصص لموقعك بل ستأخذ التصميم المطلوب من المصمم وتعمل على محاكاته بالاعتماد على أحد إضافات بناء الصفحات page builder والتي تعرف كذلك باسم إضافات إنشاء المواقع وهي كثيرة ومتنوعة.
</p>

<p>
	وهذه الطريقة سهلة للغاية ولا تتطلب منك أي معرفة برمجية بل تعتمد على <a href="https://academy.hsoub.com/design/user-interface/%D9%88%D8%A7%D8%AC%D9%87%D8%A7%D8%AA-%D8%A7%D9%84%D9%85%D8%B3%D8%AA%D8%AE%D8%AF%D9%85-%D8%A7%EF%BB%B7%D9%83%D8%AB%D8%B1-%D8%B4%D9%8A%D9%88%D8%B9%D8%A7-r737/" rel="">واجهات مرئية</a> تستخدم تقنية السحب والإفلات لتصميم كل شيء تريده حيث توفر لك هذه الإضافات الكثير من خيارات التصميم وعناصر واجهة المستخدم المضمنة لكل شيء تحتاجه كالأزرار والجداول والصور المنزلقة وأشرطة التمرير والنماذج وغيرها.
</p>

<p>
	لكن المشكلة الأبرز في هذه الطريقة على سهولتها أنك تضطر لتثبيت إضافة الباني على موقعك كي تتمكن من تحرير أجزاء القالب المبنية من خلالها، كما أنها قد تنتج كمية كبيرة من الشيفرات البرمجية وتتسبب في بطء الموقع بشكل ملحوظ لاسيما إن كانت استضافتك محدودة الموارد.
</p>

<h3>
	6. توظيف مطور ليصمم لك قالبًا
</h3>

<p>
	إذا لم تكن مطورًا متمرسًا ولديك المعلومات الكافية حول <a href="https://academy.hsoub.com/programming/general/%D8%AA%D8%B9%D9%84%D9%85-%D8%AA%D8%B7%D9%88%D9%8A%D8%B1-%D8%A7%D9%84%D9%88%D9%8A%D8%A8/" rel="">تطوير الواجهات الأمامية والخلفية لمواقع الويب</a> فلن تتمكن من برمجة قالب ووردبريس الخاصة بك وتطويره من البداية بشكل احترافي ووفق أفضل الممارسات والتحديثات التي توصي بها ووردبريس.
</p>

<p>
	فإذا كنت تجد الخيارات السابقة كلها صعبة ومربكة ولا تود أن ترهق نفسك بتطوير قالب مخصص لشركتك من الصفر لكنك تريد في نفس الوقت الحصول على تصميم مميز وفريد وغير مكرر على عشرات المواقع الأخرى، يمكنك البحث عن مطور قوالب ووردبريس متمكن في مواقع العمل الحر مثل <a href="https://mostaql.com/" rel="external">مستقل</a> وتطلب منه أن يصمم لك قالبًا يعكس طبيعة نشاطك التجاري أو تحصل على قالب يناسب متطلبات موقعك من متجر متخصص في بيع القوالب مثل <a href="https://picalica.com/themes/wordpress" rel="external nofollow">بيكاليكا</a> وتجد مطورًا متمرسًا يساعدك في متابعة العمل خطوة بخطوة وتخصيص قالبك وفق ما يناسبك.
</p>

<p>
	استعرضنا لك أبرز الخيارات المتاحة التي يمكنك من خلالها تطوير قالب ووردبريس مخصص لتختار منها ما يناسبك، وسنبدأ في الفقرات التالية بشرح الطريقة الأولى والأكثر بدائية كما ذكرنا وهي تطوير قالب ووردبريس من الصفر حيث سنبدأ بملفات فارغة ونكتب فيها كل الأكواد المطلوبة لعمل قالبنا.
</p>

<h2>
	أهم ملفات قالب ووردبريس
</h2>

<p>
	قبل أن تتمكن من برمجة قالب ووردبريس الخاص بك من الصفر ستحتاج إلى فهم بنيته ومعرفة الملفات الأساسية التي يتكون منها القالب وكيف تعمل وتتفاعل مع بعضها البعض لتحدد تخطيط وشكل المحتوى على موقعك.
</p>

<p>
	يتم تخزين كافة قوالب ووردبريس عادة ضمن المجلد themes الموجود داخل المجلد wp-content ضمن المجلد الجذر لموقع ووردبريس. ستجد في المجلد themes جميع القوالب المتاحة على موقع الويب الخاص بك حيث يكون لكل قالب منفصل مجلده الخاص.
</p>

<p>
	إذا فتحت أي مجلد خاص بقالب ووردبريس معين ستلاحظ أنه يتكون بشكل أساسي من مجموعة من ملفات بالامتداد php تعرف باسم هذه الملفات باسم ملفات نماذج القالب <a href="https://developer.wordpress.org/themes/basics/template-files" rel="external nofollow">template files</a> كما ستجد بعض ملفات التنسيق بالامتداد css أو scss وملفات جافا سكريبت js وبعض ملفات الصور والوسائط وغيرها من الملفات الأخرى المنظمة ضمن مجلدات فرعية والتي تتعاون مع بعضها البعض لتحدد مظهر موقع ووردبريس الخاص بك.
</p>

<p>
	ومن أهم ملفات قالب ووردبريس نذكر:
</p>

<ul>
	<li>
		<p>
			<strong>index.php</strong>: وجود هذا الملف أساسي لأي قالب ووردبريس ويستخدم لعرض الصفحة الرئيسية لموقع ووردبريس التي تعرض افتراضيًا أحدث مقالات موقعك، كما أنه الملف الاحتياطي الذي سيعتمد عليه ووردبريس لعرض أي صفحة لا تملك ملفًا مخصصًا لعرضها وستفهم هذه الجزئية بشكل أفضل عندما نشرح التسلسل الهرمي لملفات قالب ووردبريس.
		</p>
	</li>
	<li>
		<p>
			<strong>style.css</strong>: وهو ملف أساسي لعمل قالب ووردبريس ويتضمن معلومات تعريفية حول القالب كما يتضمن تنسيقات عناصر القالب.
		</p>
	</li>
	<li>
		<p>
			<strong>page.php</strong>: يعرض هذا الملف الصفحات الداخلية الثابتة للموقع مثل صفحة من نحن وصفحة سياسة الخصوصية.
		</p>
	</li>
	<li>
		<p>
			<strong>single.php</strong>: يستخدم هذا الملف لعرض الصفحات التي تعرض مقالًا واحدًا.
		</p>
	</li>
	<li>
		<p>
			<strong>archive.php</strong>: يعرض صفحات الأرشيف في الموقع سواء أرشيف التصنيفات أو الوسوم أو التاريخ.
		</p>
	</li>
	<li>
		<p>
			<strong>search.php</strong>: هذا الملف مخصص لعرض صفحة نتائج البحث ضمن الموقع.
		</p>
	</li>
	<li>
		<p>
			<strong>front-page.php</strong>: ملف لعرض الصفحة الرئيسية للموقع إذا كانت صفحة ثابتة ولم تكن صفحة عرض أحدث المقالات الافتراضية.
		</p>
	</li>
	<li>
		<p>
			<strong>404.php</strong>: ملف مخصص لعرض صفحة الخطأ التي تظهر عند عدم العثور على الصفحة المطلوبة.
		</p>
	</li>
	<li>
		<p>
			<strong>screenshot.png</strong>: ملف الصورة الذي يظهر عند عرض قالب ووردبريس في لوحة التحكم والحجم المفضل له هو 1200 × 900 بكسل، يكفي أن تنشئ صورة بهذا الاسم وتضعها في مجلد القالب لتظهر تلقائيًا عن عرض القالب في لوحة التحكم.
		</p>
	</li>
	<li>
		<p>
			<strong>functions.php</strong>: ملف وظائف القالب المسؤول عن إضافة العديد من الميزات والإعدادات داخل قالبك مثل دعم الصور المصغرة للمقالات وتحديد أحجام الصور التي يدعمها القالب وتعريف مواضع عرض القوائم في القالب وغيرها من الميزات.
		</p>
	</li>
</ul>

<p>
	كما يمكن إنشاء العديد من الملفات الأخرى المخصصة لتخصيص عرض أي صفحة أو جزء معين في موقعك إذا تعرفت أكثر عن طريقة كتابة أسماء الملفات في بنية قالب في ووردبريس ومتى يتم استدعائها. إذا كنت مهتمًا بالمزيد من التفاصيل حول هذا الموضوع أنصحك بمطالعة <a href="https://developer.wordpress.org/themes/template-files-section" rel="external nofollow">الرابط التالي</a>.
</p>

<h2>
	التسلسل الهرمي لملفات نماذج قالب ووردبريس
</h2>

<p>
	من المفاهيم الأساسية التي يجب فهمها عند برمجة قالب ووردبريس مفهوم التسلسل الهرمي لملفات نماذج القالب <a href="https://developer.wordpress.org/themes/basics/template-hierarchy/" rel="external nofollow">template hierarchy</a> وهو طريقة ضمنية يستخدمها ووردبريس لتحديد ما هي ملفات php التي سوف يستخدمها عند عرض كل صفحة من صفحات الموقع وهي تسهل على مطوري قوالب ووردبريس تخصيص مواقع الويب كما يريدون.
</p>

<p>
	تعمل هذه الطريقة بمثابة شجرة قرار تساعد نظام ووردبريس على تحديد الملف الأنسب الذي سيعتمده لعرض أي صفحة من صفحات موقعك، فعند عرض محتوى معين في الموقع يبحث ووردبريس في تسلسل هرمي محدد ليعثر على اسم <strong>أكثر ملف قالب مخصص مناسب لعرض هذا المحتوى</strong> وإذا لم يتمكن من العثور على الملف المطابق ينتقل لمسار أعلى في الهرمية وهكذا حتى يصل في النهاية لملف نموذج القالب الأساسي وهو الملف index.php الذي يجب أن يكون موجودًا في أي قالب ووردبريس كي يعمل.
</p>

<p>
	على سبيل المثال تنقسم المدونة التي سوف ننشئها إلى عدة صفحات منها الرئيسية وهي في حالتنا صفحة المدونة التي تحتوي على المقتطفات الخاصة بالمنشورات أو المقالات معروضة وفق الترتيب التنازلي لتاريخ نشرها من الأحدث للأقدم والمسؤول عن عرضها ملف نموذج القالب الرئيسي <strong>index.php</strong>.
</p>

<p>
	عندما تنقر على كل رابط من روابط المقالات ستصل لصفحة تعرض المقال فقط وهي صفحة مفردة خاصة به والمسؤول عن عرض هذه الصفحة هو ملف نموذج القالب <strong>single.php</strong> لكن ماذا لو لم يوجد هذا الملف في مجلد قالبك؟ عندها سيعتمد ووردبريس على ملف نموذج القالب الرئيسي index.php الأكثر عمومية لعرضها.
</p>

<p>
	هناك أيضًا عدة صفحات أخرى مهمة سنقوم بإنشائها، مثل صفحة عني وسياسة الخصوصية وتواصل معي، وهي كذلك تعتبر صفحات داخلية ثابتة في الموقع والملف المسؤول عن عرضها هو <strong>page.php</strong> فإذا لم يوجد هذا الملف يتم الاعتماد من جديد على ملف نموذج القالب الرئيسي index.php.
</p>

<p>
	وكذلك لدينا صفحات التصنيفات التي تحتوي مقالات محددة لها تصنيف محدد، فعلى سبيل المثال إذا كانت مدونتنا مختصة بالتقنية وتصنيفاتها الأساسية هي الهواتف والتطبيقات والبرمجة وما إلى ذلك، وبالتالي فإن صفحات التصنيفات ستكون أحدها الهواتف وما يندرج تحتها من مقالات بهذا التصنيف وأحدها للتطبيقات وما يندرج تحتها من مقالات …إلخ.
</p>

<p>
	عند عرض صفحة المقالات التي تختص بتصنيف البرمجة وليكن اسمه المختصر أو slug هو programming والمعرف الخاص به هو 5 سيبحث ووردبريس عن أكثر ملف مخصص لعرض هذه المقالات وهو في هذه الحالة category-programming.php المخصص لعرض كافة المقالات المنظمة تحت تصنيف برمجة كي يعرض هذه الصفحة، وفي حال لم يجده يبحث عن الملف الأقل تخصيصًا في الهرمية وهو category-5.php ثم عن category.php ثم عن archive.php وهو الملف العام لعرض كافة المقالات المنظمة تحت أي نوع من التصنيفات أو الوسوم أو سواء المقالات المنشورة وفق تاريخ معين أو التي لها تصنيف معين أو كاتب معين وإذا لم يجده سيعود في النهاية للملف الأكثر عمومية وهو index.php لهذا يعتبر هذا الملف أساسي لأي قالب ووردبريس ويجب ان يكون موجود في مجلد كل قالب وإلا فلن يعمل القالب بصورة صحيحة.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="130459" href="https://academy.hsoub.com/uploads/monthly_2023_07/99024963_.png.7dfaeb54c27f4e5eb0ae758dfaaa050e.png" rel=""><img alt="التسلسل الهرمي لملفات نماذج قالب ووردبريس" class="ipsImage ipsImage_thumbnailed" data-fileid="130459" data-ratio="71.43" data-unique="nasbmemmr" style="width: 700px; height: auto;" width="840" src="https://academy.hsoub.com/uploads/monthly_2023_07/.thumb.png.3e661fd5d8cf104f10800de54f640d7d.png"> </a>
</p>

<h2>
	الملفات الجزيئة لقالب ووردبريس Template Partials
</h2>

<p>
	من الملفات المهمة الأخرى في قالب ووردبريس الملفات الجزئية <strong>template partials</strong> وهي ملفات مخصصة لبرمجة أجزاء صغيرة من الموقع تظهر في عدة أماكن فهي تستدعى في ملفات النماذج الأخرى مثل ملفات header.php و footer.php و sidebar.php ويوجد ملفات أخرى شبيهه ويمكن معرفتها من خلال <a href="https://developer.wordpress.org/themes/" rel="external nofollow">الدليل الرسمي لمطوري قوالب ووردبريس</a>.
</p>

<p>
	تكمن فائدة تلك الملفات في تجميع الأكواد المكررة وإعادة استخدامها عند الحاجة، مثلًا في ملف header.php نضع كل الكود المخصص للعرض في ترويسة الموقع مثل شعار الموقع وقائمة التنقل الرئيسية وصندوق البحث وأيقونات التواصل الاجتماعي، وفي ملف footer.php نكتب مثلًا كود عرض عبارة حقوق النشر وبيانات التواصل وقد نضع قائمة تنقل فرعية، وفي ملف sidebar.php نضع الكود الذي نريد عرضه في الشريط الجانبي للموقع وهو عادة يعرض عناصر واجهة مستخدم تسمى الودجات <a href="https://academy.hsoub.com/programming/php/wordpress/%D9%83%D9%8A%D9%81-%D8%AA%D8%A8%D9%86%D9%8A-%D9%88%D8%AF%D8%AC%D8%AA-widget-%D9%84%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3%D8%9F-r99/" rel="">widgets</a>.
</p>

<p>
	بعدها يمكن أن نستورد هذه الملفات الجزئية عند الحاجة لعرضها في أي ملف ضمن قالبنا من خلال دوال جاهزة في ووردبريس تسمى وسوم النموذج أو وسوم القالب template tags.
</p>

<h2>
	استخدام وسوم النماذج لتطوير قالب ووردبريس
</h2>

<p>
	ستحتاج للتعرف على مفهوم وسوم القالب template tags عند تطوير قالب ووردبريس مخصص وهذه الوسوم هي هي دوال php تستخدم لجلب البيانات ديناميكيًا وعرضها في الملفات التي تحتاجها، على سبيل المثال:
</p>

<ul>
	<li>
		الدالة get_header: تضمن كود الترويسة في الملف الرئيسي الذي يستدعيها
	</li>
	<li>
		الدالة get_sidebar: تضمن كود الشريط الجانبي في الملف الرئيسي
	</li>
	<li>
		الدالة get_footer: تضمن كود التذييل في الملف الرئيسي
	</li>
	<li>
		الدالة get_search_form: تضمن نموذج البحث الخاص بووردبريس في الملف الرئيسي
	</li>
	<li>
		الدالة get_template_part: تستخدم لتضمين أكواد مخصصة في الملف الرئيسي حيث نمرر لها اسم ملف الكود المطلوب كوسيط
	</li>
</ul>

<p>
	وللاطلاع على بكافة دوال الوسوم التي يمكنك استخدامها في تطوير قالب ووردبريس وأمثلة على استخدامها أنصحك بمطالعة التوثيق الرسمي <a href="https://developer.wordpress.org/themes/references/list-of-template-tags/" rel="external nofollow">List of Template Tags</a> من ووردبريس.
</p>

<p>
	<strong>ملاحظة</strong>: هناك نوع حديث من قوالب ووردبريس تسمى قوالب الكتل <a href="https://developer.wordpress.org/themes/basics/template-files/#block-themes" rel="external nofollow">block themes</a> وهذه القوالب تعتمد على <a href="https://academy.hsoub.com/programming/html/%D8%AA%D8%B9%D9%84%D9%85-%D9%84%D8%BA%D8%A9-html-r1702/" rel="">ملفات HTML</a> تمثل الكتل وليس على ملفات php وهي بالتالي لا تستخدم الدوال المذكورة أعلاه بل تستخدم أساليب أخرى لتضمين هذه الأجزاء لكننا لن نتطرق لشرحها في سلسلتنا الحالية لأننا نشرح تطوير قالب كلاسيكي classic theme يعتمد البنية التقليدية.
</p>

<h2>
	ما هي حلقة ووردبريس the loop وأهميتها في برمجة قالب ووردبريس
</h2>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="130460" href="https://academy.hsoub.com/uploads/monthly_2023_07/wordpressloop.png.8ee981a6cf0a537433ce331f4f95eb60.png" rel=""><img alt="ما هي حلقة ووردبريس the loop وأهميتها في برمجة القالب" class="ipsImage ipsImage_thumbnailed" data-fileid="130460" data-unique="osbnxu0oo" style="width: 500px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2023_07/wordpressloop.thumb.png.aa26d09531b0b74b5fb7c8b43606d580.png"> </a>
</p>

<p>
	من الأمور الضرورية التي تحتاج لفهمها بشكل جيد عند برمجة قالب ووردبريس من الصفر هو حلقة ووردبريس WordPress Loop أو تدعى the loop وهي كود برمجي بلغة php يستخدم بشكل أساسي لعرض المحتوى الديناميكي من قاعدة بيانات ووردبريس على الصفحة التي تستعرضها.
</p>

<p>
	ستجد في الدروس القادمة أننا سنحتاج لاستدعاء حلقة ووردبريس في كافة ملفات القوالب التي تعرض لنا محتوى المقالات أو الصفحات أو أي نوع من أنواع المنشورات الأخرى في كثير من الملفات مثل ملف الصفحة الرئيسية index.php أو ملف الشريط الجانبي sidebar.php.
</p>

<p>
	فيما يلي مثال بسيط يوضح الشكل العام لحلقة ووردبريس:
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_2181_9" style=""><span class="pun">&lt;?</span><span class="pln">php 
</span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln"> have_posts</span><span class="pun">()</span><span class="pln"> </span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">while</span><span class="pln"> </span><span class="pun">(</span><span class="pln"> have_posts</span><span class="pun">()</span><span class="pln"> </span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        the_post</span><span class="pun">();</span><span class="pln"> 
        </span><span class="com">// عرض محتوى المنشور هنا</span><span class="pln">
    </span><span class="pun">}</span><span class="pln"> </span><span class="com">// end while</span><span class="pln">
</span><span class="pun">}</span><span class="pln"> </span><span class="com">// end if</span><span class="pln">
</span><span class="pun">?&gt;</span></pre>

<p>
	يتحقق الكود بداية من وجود أي منشورات وفي حال وجودها تبدأ الحلقة التكرارية التي تنتقل عبر جميع المنشورات التي يجب عرضها وتستدعى الدالة <a href="https://developer.wordpress.org/reference/functions/the_post/" rel="external nofollow">the_post()</a>‎ التي تعيد دليل المنشور الحالي وتمكننا من عرض أي بيانات حول هذا المنشور مثل العنوان واسم الكاتب وتراي النشر والمحتوى وما إلى ذلك، وللمزيد حول مفهوم حلقة ووردبريس والاطلاع على أمثلة منوعة حولها أنصح بمطالعة مقال <a href="https://academy.hsoub.com/programming/php/wordpress/%D9%81%D9%87%D9%85-%D8%A7%D9%84%D8%AD%D9%84%D9%82%D8%A9-the-loop-%D9%88%D8%B7%D8%B1%D9%8A%D9%82%D8%A9-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-%D9%81%D9%8A-%D8%B9%D8%B1%D8%B6-%D8%A7%D9%84%D9%85%D9%86%D8%B4%D9%88%D8%B1%D8%A7%D8%AA-r1273/" rel="">فهم الحلقة The loop وطريقة ووردبريس في عرض المنشورات</a>.
</p>

<p>
	لاحظ أنه إذا احتجت للاستعلام عن بيانات أكثر تعقيدًا من قاعدة بيانات ووردبريس وتخصيص حلقة ووردبريس بشكل أكبر يمكنك الاستعانة بالصنف البرمجي WP_Query للحصول على منشورات أو صفحات تحقق شروط مخصصة وعرضها على موقعك. على سبيل المثال لعرض كافة المقالات التي لها نفس نفس التصنيف ونفس اسم الكاتب يمكن كتابة الكود التالي:
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_2181_11" style=""><span class="pun">&lt;?</span><span class="pln">php  
   $args </span><span class="pun">=</span><span class="pln"> array</span><span class="pun">(</span><span class="pln">
      </span><span class="str">"category_name"</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">"programming"</span><span class="pun">,</span><span class="pln">
      </span><span class="str">"author_name"</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">"Ola"</span><span class="pun">,</span><span class="pln">
      </span><span class="str">"posts_per_page"</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="lit">3</span><span class="pun">,</span><span class="pln">
   </span><span class="pun">);</span><span class="pln">
   $posts </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> WP_Query</span><span class="pun">(</span><span class="pln">$args</span><span class="pun">);</span><span class="pln">
</span><span class="pun">?&gt;</span></pre>

<h2>
	أهم دوال قالب ووردبريس
</h2>

<p>
	هناك الكثير من الدوال الجاهزة التي يوفرها لك نظام ووردبريس والتي عليك التعرف عليها وتعرف طريقة عملها لاستخدامها في الملفات الخاصة ببرمجة قالب ووردبريس، ولكي تكون قادرًا على معرفة ما تعنيه هذه الدول وإتقانها، يجب أن يكون لديك مرجعية خاصة لها.
</p>

<p>
	على سبيل المثال:
</p>

<ul>
	<li>
		الدالة <a href="https://developer.wordpress.org/reference/functions/have_posts/" rel="external nofollow">have_posts()‎</a> التي استخدمناها في الكود السابق تحدد فيما إذا كان هناك مقالات منشورة على الموقع أم لا
	</li>
	<li>
		الدالة <a href="https://developer.wordpress.org/reference/functions/the_content/" rel="external nofollow">the_content()‎</a> تعرض محتوى الصفحة أو المقال الحالي
	</li>
	<li>
		الدالة <a href="https://developer.wordpress.org/reference/functions/bloginfo/" rel="external nofollow">bloginfo()‎</a> تعرض لك العديد من المعلومات حول موقعك على سبيل المثال للحصول على اسم الموقع نمرر لها الوسيط التالي <code>bloginfo('name')‎</code> وللحصول على رابط الموقع نكتب <code>bloginfo('url')‎</code>.
	</li>
	<li>
		الدالة <a href="https://developer.wordpress.org/reference/functions/get_template_directory_uri/" rel="external nofollow">get_template_directory_uri()‎</a> من الدوال المفيدة كذلك لأي مطور ووردبريس التي تسمح لك بالاتصال بعنوان الويب الخاص بالقالب المفعل في الموقع واستدعاء أي ملفات تنسيق CSS أو ملفات جافا سكريبت أو غيرها من الملفات الموجودة في مجلد القالب.
	</li>
</ul>

<p>
	لحسن الحظ يوفر لك موقع مطوري ووردبريس شرحًا مرجعيًا مفصلًا لكل تلك الدوال بالتفصيل الممل ويوفر أمثلة توضيحية جيدة حولها تجده على <a href="https://developer.wordpress.org/reference/functions/" rel="external nofollow">الرابط التالي</a>، وهو لا يشرح لك للدوال فقط بل أيضا للخطافات Hooks و الأصناف Classes.
</p>

<p>
	كما يوجد أيضا مرجعًا آخر مهم لشرح كل شيء عن برمجة قوالب ووردبريس من الصفر تجده في <a href="https://developer.wordpress.org/themes/getting-started/" rel="external nofollow">التوثيق الرسمي</a> لتطوير قوالب ووردبريس ومن الضروري أن تتعرف على هذه الدوال كي تتمكن من التعامل باحترافية مع برمجة قالب ووردبريس ومعرفة كل ما يدور خلف الكواليس.
</p>

<p>
	بالطبع لن يتسع المقال للتعرف على كل هذه الدوال لكن سنشرح كل دالة نستخدمها في حينها ويمكنك العودة للمراجع التي ذكرناها لتتعرف على المزيد من التفاصيل حولها.
</p>

<h2>
	فهم بنية ملفات قالب ووردبريس
</h2>

<p>
	عندما نفكر في تطوير قالب ووردبريس من الصفر فأول ما يجب فعله هو إنشاء مجلد يحتوي على كافة الملفات المهمة لهذا القالب، ويحتوي أيضا على مجلدات فرعية مختلفة لحفظ الصور والوسائط الخاصة وحفظ <a href="https://academy.hsoub.com/programming/css/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%A8%D9%86%D8%A7%D8%A1-%D9%85%D9%88%D9%82%D8%B9-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-css-r1879/" rel="">ملفات CSS</a> لتنسيق القالب و<a href="https://academy.hsoub.com/programming/javascript/%D9%87%D9%8A%D9%83%D9%84-%D8%A7%D9%84%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D8%AC-%D9%81%D9%8A-%D8%AC%D8%A7%D9%81%D8%A7%D8%B3%D9%83%D8%B1%D9%8A%D8%A8%D8%AA-r1232/" rel="">ملفات جافا سكريبت</a> المستخدمة في برمجة القالب، وأي ملفات فرعية أخرى.
</p>

<p>
	يمكن أن تعتمد على هذا التنظيم من خلال تنظيم ملفات القالب على <a href="https://developer.wordpress.org/themes/basics/organizing-theme-files/" rel="external nofollow">موقع ووردبريس الرسمي للمطورين</a> وهي كالتالي (dir تعني مجلد):
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="130457" href="https://academy.hsoub.com/uploads/monthly_2023_07/---.png.efde45ca339782eaf13acb68c210a032.png" rel=""><img alt="هيكل مجلد قالب ووبرديس" class="ipsImage ipsImage_thumbnailed" data-fileid="130457" data-unique="zh54acptd" style="width: 479px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2023_07/---.thumb.png.de00836ab9e7ee59ca8f0a7fe20b6218.png"> </a>
</p>

<p>
	فأول خطوة عليك القيام بها لبرمجة قالب مخصص هو إنشاء مجلد باسم القالب في المسار ‎\‎wp-content\themes ضمن المجلد الجذر لموقعك والعمل على إنشاء الملفات الضرورية، بالطبع لست مضطرًا لإنشاء كافة الملفات الواردة أعلاه في قالبك أنت حر في تنظيم القالب وإنشاء الملفات والمجلدات التي تريدها وتخصيصها حسب متطلبات قالبك.
</p>

<p>
	لكن كما ذكرنا هناك ملفان على الأقل يجب أن يتضمنهما أي قالب ووردبريس على الأقل كي يعمل وهما ملف index.php الذي يعتبر الأساس الذي تبنى منه معظم الملفات الأخرى المكونة للقالب الخاص بالموقع، وملف style.css لتصميم مظهر القالب وتحديد بياناته التعريفية مثل اسم القالب واسم مطوره وما إلى ذلك بعدها أنت حر في إنشاء ما تريده من ملفات أخرى في قالبك حسب الحاجة وحسب درجة التخصيص التي ترغب بها.
</p>

<p>
	سنتيح لك الملف النهائي للقالب لتحميله في نهاية هذه السلسلة فإذا كنت مهتمًا بالحصول على هذا القالب فتابع الدروس القادمة لترى كيف ننشئ كامل ملفات القالب وننسقها بالشكل المطلوب.
</p>

<h2>
	الخلاصة
</h2>

<p>
	تعرفنا في مقال اليوم على مجموعة من المفاهيم الأساسية حول تطوير قالب ووردبريس واستعرضنا كافة الطرق المتاحة التي تمكنك من تطوير قالب ووردبريس مخصص وبينا لماذا اخترنا طريقة تطوير قالب ووردبريس من الصفر من بين هذه الطرق.
</p>

<p>
	كما تعرفنا كذلك على أهم ملفات قوالب ووردبريس ومهمة كل ملف من بينها وأولوية استدعائها وفق التسلسل الهرمي لقالب ووردبريس، بعد هذه المعلومات الأساسية يتكون جاهزً للبدء بإنشاء ملفات القالب الخاص بك وبرمجتها لتعرض المحتوى المطلوب وهو ما سنبدأ به في الدرس القادم من السلسلة.
</p>

<p>
	<em>كتب المسودة الأولية للمقال <a href="https://academy.hsoub.com/profile/3732499-hesham-hussain2/" rel="">هشام حسين</a>.</em>
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
	<li>
		المقال السابق: <a href="https://academy.hsoub.com/programming/php/wordpress/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D9%82%D9%88%D8%A7%D9%84%D8%A8-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r2017/" rel="">مدخل إلى برمجة قوالب ووردبريس</a>
	</li>
	<li>
		المقال التالي: <a href="https://academy.hsoub.com/programming/php/wordpress/%D8%A5%D9%86%D8%B4%D8%A7%D8%A1-%D8%A7%D9%84%D9%85%D9%84%D9%81%D8%A7%D8%AA-%D8%A7%D9%84%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A9-%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D9%82%D8%A7%D9%84%D8%A8-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r2028/" rel="">إنشاء الملفات الأساسية لبرمجة قالب ووردبريس</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/wordpress/" rel="">تعلم ووردبريس Wordpress</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/apps/web/wordpress/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%AA%D8%AE%D8%B5%D9%8A%D8%B5-%D9%82%D8%A7%D9%84%D8%A8-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r482/" rel="">كيفية تخصيص قالب ووردبريس</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/php/wordpress/%D9%85%D9%84%D9%81%D8%A7%D8%AA-%D8%A7%D9%84%D9%82%D8%A7%D9%84%D8%A8-%D9%88%D8%A7%D9%84%D8%AA%D9%86%D8%B3%D9%8A%D9%82-%D9%81%D9%8A-%D9%82%D8%A7%D9%84%D8%A8-underscores-%D9%84%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r185/" rel="">ملفات القالب والتنسيق في قالب Underscores لووردبريس</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">2027</guid><pubDate>Sun, 09 Jul 2023 13:00:00 +0000</pubDate></item><item><title>&#x645;&#x62F;&#x62E;&#x644; &#x625;&#x644;&#x649; &#x628;&#x631;&#x645;&#x62C;&#x629; &#x642;&#x648;&#x627;&#x644;&#x628; &#x648;&#x648;&#x631;&#x62F;&#x628;&#x631;&#x64A;&#x633;</title><link>https://academy.hsoub.com/programming/php/wordpress/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D9%82%D9%88%D8%A7%D9%84%D8%A8-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r2017/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2023_07/--.png.e1e9fd5ccc2f76a62393ac372d83679d.png" /></p>
<p>
	هل تتساءل كيف يمكن برمجة قالب ووردبريس وتصميم الموقع الخاص بك بالشكل الذي ترغب به من الصفر دون الاعتماد على قوالب جاهزة؟ في هذه السلسلة المكونة من خمسة أجزاء سنوضح لك الخطوات الأساسية اللازمة لعمل ذلك، وسوف تضعك على بداية الطريق الصحيح للتعلم كيفية تصميم وبرمجة قالب ووبرديس بتطبيق عملي على بناء قالب لمدونة.
</p>

<p>
	هذا المقال هو المقال الأول من سلسلة المقالات التالية:
</p>

<ul>
	<li>
		مدخل إلى برمجة قوالب ووردبريس
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/php/wordpress/%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A7%D8%AA-%D8%AA%D8%B7%D9%88%D9%8A%D8%B1-%D9%82%D8%A7%D9%84%D8%A8-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r2027/" rel="">أساسيات تطوير قالب ووردبريس</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/php/wordpress/%D8%A5%D9%86%D8%B4%D8%A7%D8%A1-%D8%A7%D9%84%D9%85%D9%84%D9%81%D8%A7%D8%AA-%D8%A7%D9%84%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A9-%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D9%82%D8%A7%D9%84%D8%A8-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r2028/" rel="">إنشاء الملفات الأساسية لبرمجة قالب ووردبريس</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/php/wordpress/%D8%A5%D8%B6%D8%A7%D9%81%D8%A9-%D8%AA%D9%86%D8%B3%D9%8A%D9%82%D8%A7%D8%AA-css-%D9%84%D9%82%D8%A7%D9%84%D8%A8-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r2032/" rel="">إضافة تنسيقات CSS لقالب ووردبريس</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/php/wordpress/%D8%A5%D8%B6%D8%A7%D9%81%D8%A9-%D8%A7%D9%84%D9%85%D9%85%D9%8A%D8%B2%D8%A7%D8%AA-%D9%84%D9%82%D8%A7%D9%84%D8%A8-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%AC%D8%A7%D9%81%D8%A7-%D8%B3%D9%83%D8%B1%D9%8A%D8%A8%D8%AA-r2035/" rel="">إضافة المميزات لقالب ووردبريس باستخدام جافا سكريبت</a>
	</li>
</ul>

<h2>
	مفاهيم أساسية حول ووردبريس
</h2>

<p>
	بما أنك أتيت للمقال فلابد أنك مطور ووردبريس وتملك خبرة مسبقة عن نظام ووربرديس كمطور لذلك لن نتحدث عن شهرة وأهمية ووردبريس، أما إن كنت جديدًا، فننصح أن تتعرف على نظام ووردبريس ومكوناته أكثر قبل البدء في هذه السلسلة المتقدمة.
</p>

<p>
	سوف نستعرض معًا في هذه المقالة بعض المعلومات المهمة عن ووردبريس وبنية قالب ووردبريس الأمر الذي سيسهل عليك التعامل مع تصميم وتطوير قوالب ووردبريس ويوضح لك الصورة العامة لكيفية إنشائه.
</p>

<p>
	يعد ووردبريس أشهر <a href="https://academy.hsoub.com/apps/web/10-%D9%85%D8%B9%D8%A7%D9%8A%D9%8A%D8%B1-%D9%84%D8%A7%D8%AE%D8%AA%D9%8A%D8%A7%D8%B1-%D9%86%D8%B8%D8%A7%D9%85-%D8%A5%D8%AF%D8%A7%D8%B1%D8%A9-%D8%A7%D9%84%D9%85%D8%AD%D8%AA%D9%88%D9%89-cms-r170/" rel="">نظام إدارة محتوى CMS</a> وهو نظام مطور بالاعتماد على لغة PHP ويعد أداة قوية وسهلة الاستخدام لإنشاء مواقع الويب المختلفة دون خبرة مسبقة بالبرمجة كما تمنح <a href="https://academy.hsoub.com/programming/php/wordpress/%D8%A5%D8%AF%D8%A7%D8%B1%D8%A9-%D8%A7%D9%84%D8%A5%D8%B6%D8%A7%D9%81%D8%A7%D8%AA-%D9%81%D9%8A-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r1224/" rel="">الإضافات plugins</a> و<a href="https://academy.hsoub.com/programming/php/wordpress/%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D9%82%D9%88%D8%A7%D9%84%D8%A8-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r1223/" rel="">القوالب themes</a> قوة إضافية لنظام ووردبريس، فالإضافات هي بمثابة تطبيقات صغيرة تقوم بتثبيتها في موقعك لتضيف عليه وظائف أو مميزات جديدة، أما القوالب وهي موضوع سلسلة مقالاتنا الحالية فهي المسؤولة عن تحديد شكل وتصميم موقع الويب الخاص بك.
</p>

<div class="banner-container ipsBox ipsPadding">
	<div class="inner-banner-container">
		<p class="banner-heading">
			دورة تطوير تطبيقات الويب باستخدام لغة PHP
		</p>

		<p class="banner-subtitle">
			احترف تطوير النظم الخلفية والووردبريس وتطبيقات الويب من الألف إلى الياء دون الحاجة لخبرة برمجية مسبقة
		</p>

		<div>
			<a class="ipsButton ipsButton_large ipsButton_primary ipsButton_important" href="https://academy.hsoub.com/learn/php-web-application-development/" rel="">اشترك الآن</a>
		</div>
	</div>

	<div class="banner-img">
		<img alt="دورة تطوير تطبيقات الويب باستخدام لغة PHP" src="https://academy.hsoub.com/learn/assets/images/courses/php-web-application-development.png">
	</div>
</div>

<p>
	هناك مئات القوالب الجاهزة المجانية والمدفوعة يمكنك اختيار ما يناسبك من بينها ولكن تعلم برمجة قوالب ووردبريس من الصفر يعطيك القدرة على إنشاء قالب خاص بك أو تعديل قالب موجود بما يتناسب مع طبيعة موقعك بشكل مثالي وهو الذي يميز مبرمج ووردبريس المحترف عن غيره المبتدئ.
</p>

<h2>
	لماذا يجب علي تطوير قالب ووردبريس مخصص؟
</h2>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="130133" href="https://academy.hsoub.com/uploads/monthly_2023_07/1783964819_.png.1ed80f7f76cead4e6ad3cea65b87ce82.png" rel=""><img alt="تطوير قالب ووردبريس مخصص" class="ipsImage ipsImage_thumbnailed" data-fileid="130133" data-ratio="62.50" data-unique="d7m7wnyyv" style="width: 600px; height: auto;" width="900" src="https://academy.hsoub.com/uploads/monthly_2023_07/.thumb.png.8918b221478e941abf1d4a73e69730ca.png"> </a>
</p>

<p>
	قد تتساءل، لماذا لا أستعمل قالب جاهز؟ أليس هذا أسهل من تطوير قالب من الصفر؟ والجواب على هذا السؤال يحتمل عدة أوجه:
</p>

<ol>
	<li>
		قد لا تفي القوالب الجاهزة بالمطلوب
	</li>
	<li>
		تفرد موقعك بتصميم خاص
	</li>
	<li>
		سهولة تعديل القوالب الجاهزة
	</li>
	<li>
		فرص عمل أكثر
	</li>
</ol>

<p>
	لنناقش كل نقطة من النقاط الواردة أعلاه بمزيد من التفصيل ونتعرف أكثر على الفوائد العديدة التي تعود لنا من برمجة قالب ووردبريس مخصص.
</p>

<h3>
	1. قد لا تفي القوالب الجاهزة بالمطلوب
</h3>

<p>
	قد لا تفي القوالب الجاهزة على كثرتها بالغرض المطلوب فالقوالب المجانية منها قد تحتوي بعض العيوب منها عدم تجاوبها مع الهاتف المحمول أو وجود أخطاء برمجية فيها بسبب عدم تحديثها باستمرار وتوافقها مع أحدث إصدارات ووردبريس، أما القوالب المدفوعة فقد تكون باهظة الثمن ناهيك على أن البعض يلجأ لتحميل هذه القوالب المدفوعة من مواقع غير موثوقة وليس من المتاجر الرسمية لتوفير تكاليفها متجاهلًا بأنها قد تتضمن الكثير من الثغرات البرمجية وتهدد أمن موقعه!
</p>

<h3>
	2. تفرد موقعك بتصميم خاص
</h3>

<p>
	فالمواقع التي تعتمد على قوالب جاهزة سوف تتشابه بشكل كبير مع بعضها البعض ففي النهاية القوالب المجانية محدودة ومستهلكة بكثرة مما يفقد الموقع خاصية التميز والتفرد، ويمكِّنك تصميم قالب مخصص من تطوير قالب يتلاءم مع متطلبات عملك أو الهوية البصرية لنشاطك التجاري، كما يمكنك أن تبرمج قالبًا خاصًا بك يكون بمثابة علامة تجارية مميزة لك وتثبته على مواقع عملائك فقط.
</p>

<h3>
	3. سهولة تعديل القوالب الجاهزة
</h3>

<p>
	تعلم برمجة قالب ووردبريس من الصفر يسهِّل عليك كمطور مواقع التعامل مع موقع ووردبريس بمرونة كبيرة، على سبيل المثال ماذا لو طلب منك صاحب مؤسسة تطوير قالب بمواصفات خاصة، مثل وجود حسابات للمخزون وحساب سعر أي طلبية جديدة من أحد أنواع البضائع التي قاربت على الانتهاء ويريد شراء كمية جديدة منها.
</p>

<p>
	في هذه الحالة ستحتاج لبرمجة نظام حسابي دقيق للكمية المطلوبة ومن هم أفضل الموردين سعرًا وغيرها من الحسابات التي قد تكون معقدة بعض الشي، وهنا يأتي دور المبرمج الذي يعرف كيف يتعامل مع كود ووردبريس لينشئ ما يريده العميل بالضبط من ميزات وتضمينها في الموقع.
</p>

<p>
	كما أن تعلم برمجة قوالب ووردبريس سيفيدك حتى إن اعتمدت على قوالب مدفوعة فقالبك قد يتضمن عدة ميزات لا تحتاجها وتتسبب في إبطاء موقعك، ويمكنك إن كنت خبيرًا في برمجة القالب إزالة كافة الميزات غير الضرورية للقالب أو إضافة ميزات جديدة بمرونة وكفاءة.
</p>

<h3>
	4. فرص عمل أكثر
</h3>

<p>
	أخيرًا فإن تعلم تطوير قوالب ووردبريس يفتح أمامك فرصة جيدة للربح المادي حيث يمكنك الاستفادة من بيع القوالب على المتاجر المتخصصة في بيع المنتجات الرقمية وكسب زبائن مع ضمان عدم وجود ثغرات نظرًا لخضوع القوالب للعديد من الاختبارات على مواقع بيعها المشهورة والمعتمدة فهذا المجال مربح ومطلوب في سوق العمل.
</p>

<p>
	على سبيل المثال يعتبر متجر <a href="https://picalica.com/" rel="external nofollow">بيكاليكا</a> لبيع المنتجات الرقمية من أكبر المواقع العربية المتخصصة في بيع القوالب الجاهزة المختبرة من قبل كفاءات رفيعة المستوى. لذلك، فإن <a href="https://academy.hsoub.com/wordpress/" rel="">تعلم ووردبريس</a> يحتاج منك فهم ما يجري وراء الكواليس كي تتمكن من إنتاج قالب مميز أو حتى عمل إضافة لقالب مسبق التجهيز أو حتى قالبك الخاص.
</p>

<h2>
	متطلبات مسبقة لتطوير قالب ووردبريس
</h2>

<p>
	يستخدم ووردبريس مجموعة مختلفة اللغات والتقنيات البرمجية الأساسية التي يفيدك تعلمها في التقدم خطوة للأمام في التعامل مع ووردبريس من مجرد إنشاء وتخصيص مواقع بنظام الووردبريس إلى مطور للوردبريس.
</p>

<p>
	فإذا كنت مطور مواقع ووردبريس فقد تتساءل عن المتطلبات المسبقة التي عليك معرفتها كي تتمكن من برمجة وتطوير القالب الخاص بموقعك أو تخصيص قالب لأحد عملائك.
</p>

<p>
	لتطوير قالب ووردبريس يجب أن تكون على دراية كافية بكل من التقنيات التالية:
</p>

<ul>
	<li>
		<a href="https://academy.hsoub.com/programming/html/html-%D9%88-css-%D9%84%D9%84%D9%85%D8%A8%D8%AA%D8%AF%D8%A6%D9%8A%D9%86-%D9%83%D9%8A%D9%81-%D8%AA%D8%B5%D9%85%D9%85-%D8%A3%D9%88%D9%84-%D8%B5%D9%81%D8%AD%D8%A9-%D9%88%D9%8A%D8%A8-%D9%84%D9%83-r242/" rel="">لغة HTML ولغة CSS</a> اللتان تعملان من طرف العميل وتستخدمان لتصميم واجهة الموقع فلغة HTML هي المسؤولة عن تحديد هيكلية الموقع، ولغة CSS هي المسؤولة عن تنسيق وتصميم عناصره.
	</li>
	<li>
		معرفة في <a href="https://academy.hsoub.com/programming/javascript/%D9%87%D9%8A%D9%83%D9%84-%D8%A7%D9%84%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D8%AC-%D9%81%D9%8A-%D8%AC%D8%A7%D9%81%D8%A7%D8%B3%D9%83%D8%B1%D9%8A%D8%A8%D8%AA-r1232/" rel="">لغة جافا سكريبت</a> لإضفاء التأثيرات التفاعلية والحركية المتقدمة على موقعك مثل الصور المنزلقة ومشغلات الفيديو وما إلى ذلك.
	</li>
	<li>
		<a href="https://academy.hsoub.com/php/" rel="">لغة PHP</a> التي تعمل من طرف الخادم وتستخدم من أجل جعل الموقع قادرًا على التفاعل مع قاعدة البيانات وجلب البيانات منها ل عرض محتوى ديناميكي
	</li>
	<li>
		التعامل مع <a href="https://academy.hsoub.com/devops/servers/databases/%D9%82%D9%88%D8%A7%D8%B9%D8%AF-%D8%A7%D9%84%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA-database/" rel="">لغات قواعد البيانات</a> مثل MySQL أو MariaDB لأنها تساعد في إنشاء وتحديث وإضافة وحذف البيانات من قاعدة البيانات الخاصة بالموقع.
	</li>
	<li>
		تحتاج أيضًا إلى التعامل مع أحد محررات الأكواد مثل Visual Studio Code.
	</li>
	<li>
		وأخيرًا تحتاج لمعرفة مسبقة بنظام ووردبريس وكيفية إنشاء المواقع باستخدامه والتعامل مع لوحة تحكمه ورفع وتثبيت القوالب والإضافات إليه فكل هذه معلومات أساسية لابد من امتلاكها كي تبدأ ببرمجة قالب ووردبريس مخصص.
	</li>
</ul>
<iframe allowfullscreen="" data-controller="core.front.core.autosizeiframe" data-embedauthorid="3889" data-embedcontent="" src="https://academy.hsoub.com/files/27-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D8%A8%D9%84%D8%BA%D8%A9-%D8%AC%D8%A7%D9%81%D8%A7%D8%B3%D9%83%D8%B1%D8%A8%D8%AA/?do=embed" style="margin: auto;"></iframe>

<p>
	بخصوص بووردبريس:
</p>

<ul>
	<li>
		سوف تحتاج أيضا إلى تحويل حاسوبك إلى خادم أو مستضيف محلي Localhost باستخدام برامج مساعدة مثل برنامج XAMPP أو <a href="https://academy.hsoub.com/apps/web/wordpress/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%AA%D9%86%D8%B5%D9%8A%D8%A8-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-%D9%85%D8%AD%D9%84%D9%8A%D8%A7-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-mamp-r46/" rel="">Wamp</a> لسهولة العمل و<a href="https://academy.hsoub.com/programming/php/wordpress/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%AA%D8%AB%D8%A8%D9%8A%D8%AA-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r1248/" rel="">تثبيت ووردبريس على جهازك</a> وإعداد البنية التحتية لتشغيل الموقع وتطوير وتصميم القالب المطلوب مع القدرة على مشاهدة التغيرات بصورة واضحة وسريعة.
	</li>
</ul>

<p>
	ولمطالعة المزيد من المعلومات حول تثبيت ووردبريس على خادم محلي أنصح بمطالعة مقال <a href="https://academy.hsoub.com/devops/servers/%D8%AF%D9%84%D9%8A%D9%84-%D8%A5%D8%B9%D8%AF%D8%A7%D8%AF-%D8%AE%D8%A7%D8%AF%D9%85-%D9%88%D9%8A%D8%A8-%D9%85%D8%AD%D9%84%D9%8A-%D8%AE%D8%B7%D9%88%D8%A9-%D8%A8%D8%AE%D8%B7%D9%88%D8%A9-r422/" rel="">دليل إعداد خادم ويب محلي خطوة بخطوة</a> ومقال <a href="https://academy.hsoub.com/programming/php/wordpress/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%AA%D8%AB%D8%A8%D9%8A%D8%AA-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r1248/" rel="">كيفية تثبيت ووردبريس</a>.
</p>

<p>
	<strong>ملاحظة</strong>: يمكنك بالطبع برمجة قالب ووردبريس بالاعتماد على خادم خارجي على استضافة فعلية على الانترنت لكن في هذه الحالة سيكون عليك الوصول إلى ملفات موقع ووردبريس البعيد والانتظار ليتم تحميل الملفات للاستضافة مع كل تغيير أو تحديث للشيفرات البرمجية وقد يبطّئ من عملية التطوير ويضيف عليها عمليات يدوية مملة لهذا فمن المستحسن استخدام خادم محلي، مع وجوب معرفة بعض الأشياء المهمة مثل كيفية إيقاف التخزين المؤقت للمتصفح حتى يحدث التحديث اللحظي مع كل كود تقوم بكتابته.
</p>

<p>
	<strong>ملاحظة</strong>: يمنع التخزين المؤقت للمتصفح Browser cache ظهور ما تقوم به من تغيرات وإضافات على الشيفرات البرمجية والناتج منها في كثير من الأحيان، لهذا فيجب إيقافه عند العمل على مشروع جديد، ويتم عمل ذلك عن طريق الدخول لوضع المطور من خلال الضغط على مفاتيح Ctrl+Shift+I أو الضغط على مفتاح F12 عند عرض الموقع ضمن متصفح chrome وإيقاف التخزين المؤقت من خلال تفعيل خيار Disable cache في التبويب Network كما هو مبين في الصورة التالية:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="130142" href="https://academy.hsoub.com/uploads/monthly_2023_07/001Browser-Cache.png.6d1bb9a047ad32fbd351fdbc729f8ea0.png" rel=""><img alt="001 Browser-Cache.png" class="ipsImage ipsImage_thumbnailed" data-fileid="130142" data-unique="oi3lt1x6e" src="https://academy.hsoub.com/uploads/monthly_2023_07/001Browser-Cache.thumb.png.9709cdba0e560dc5a02be40ec66bbed5.png"> </a>
</p>

<p>
	بعد التأكد من أن برنامج XAMPP يعمل بطريقة صحيحة وأنه قد تم تثبيت أحدث إصدار ووردبريس عليه من موقعه الرسمي وإعداد موقع ووردبريس تجريبي على جهازك ستكون الآن جاهزًا للبدء بالخطوات العملية لبرمجة قالب ووردبريس من الصفر.
</p>

<h2>
	خطوات برمجة قالب ووردبريس من الصفر
</h2>

<p>
	يتكون قالب ووردبريس من مجموعة من الملفات البرمجة التي تتفاعل مع بعضها البعض كي تحدد شكل ومظهر موقعك، وتمر برمجة قالب ووردبريس بعدة مراحل فأنت لن تفتح محرر الأكواد وتشرع بالبرمجة مباشرة بل عليك المرور بعدة خطوات لإنجاز العمل على أكمل وجه.
</p>

<p>
	وتشمل برمجة قالب ووردبريس الخطوات الأساسية التالية:
</p>

<ol>
	<li>
		وضع متطلبات الموقع وتحديد كافة الوظائف والمميزات التي تحتاج لوجودها فيه
	</li>
	<li>
		إنجاز تصميم أولي يحدد شكل الموقع وتوزع العناصر وتنسيقها وتحديد الألوان والخطوط وما شابه بما يلائم متطلباتك وهويتك البصرية.
	</li>
	<li>
		البدء بتحويل التصميم إلى قالب فعلي يعمل على الاستضافة المحلية من خلال كتابة شيفراته البرمجية باستخدام HTML و PHP و CSS وجافا سكريبت.
	</li>
	<li>
		تصدير القالب بشكل ملف zip ورفعه على الموقع على الاستضافة الفعلية واختبار أدائه والتأكد من أنه يعمل بالشكل الصحيح.
	</li>
</ol>

<p>
	وفي مقال اليوم سنهتم بخطوة تحديد متطلبات موقعنا وتصميمه على فيجما وسنشرح خطوات برمجة القالب في الدروس اللاحقة من السلسلة.
</p>

<h2>
	تصميم قالب ووردبريس
</h2>

<p>
	حتى تبدأ بإنشاء قالب موقعك بصورة صحيحة يفضل أن ترسم تخطيطًا أوليًا سريعًا للموقع توضح البنية العامة له بشكل إطارات <a href="https://academy.hsoub.com/design/general/%D8%AF%D9%84%D9%8A%D9%84-%D8%A7%D9%84%D9%85%D8%A8%D8%AA%D8%AF%D8%A6%D9%8A%D9%86-%D8%A5%D9%84%D9%89-%D8%A7%D9%84%D8%A5%D8%B7%D8%A7%D8%B1%D8%A7%D8%AA-%D8%A7%D9%84%D9%85%D9%81%D8%B1%D8%BA%D8%A9-wireframes-%D9%88%D8%A3%D8%AF%D9%88%D8%A7%D8%AA-%D8%A8%D9%86%D8%A7%D8%A6%D9%87%D8%A7-r121/" rel="">wireframes</a>، أو التوجه مباشرةً لتصميمه على أحد برامج التصميم لمزيد من الدقة مثل فيجما Figma أو <a href="https://academy.hsoub.com/design/graphic/%D8%AF%D9%84%D9%8A%D9%84-%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-adobe-xd-%D9%84%D9%84%D9%85%D8%A8%D8%AA%D8%AF%D8%A6%D9%8A%D9%86-%D9%81%D9%8A-%D8%B9%D8%A7%D9%84%D9%85-%D8%A7%D9%84%D8%AA%D8%B5%D9%85%D9%8A%D9%85-r548/" rel="">أدوبي X‎D</a> أو Sketch أو غيرها من <a href="https://academy.hsoub.com/design/user-interface/%D9%85%D9%82%D8%A7%D8%B1%D9%86%D8%A9-%D8%A8%D9%8A%D9%86-%D8%A3%D8%AF%D9%88%D8%A7%D8%AA-%D8%AA%D8%B5%D9%85%D9%8A%D9%85-%D9%88%D8%A7%D8%AC%D9%87%D8%A9-%D8%A7%D9%84%D9%85%D8%B3%D8%AA%D8%AE%D8%AF%D9%85-ui-r634/" rel="">أدوات تصميم واجهة المستخدم</a>، تسهل تلك البرامج تصور شكل القالب النهائي والوصول لتصميم مناسب في النهاية.
</p>

<p>
	تصميم الشكل النهائي الذي سيظهر عليه القالب خطوة مهمة جدًّا، فهي توضح لصاحب المشروع الشكل النهائي الذي سوف يكون عليه شكل الموقع للتأكد من أنه يلبي المتطلبات كما أنه سيكون نقطة قانونية مهمة لك، فربما يعود صاحب المشروع في رأيه ويطلب شيء آخر لأي سبب من الأسباب، ولكن مع وجود التصميم سيكون ضمان كبير لعدم تغيير رأيه.
</p>

<p>
	<strong>ملاحظة</strong>: إذا كان هناك مطالب أخرى لاحقة من صاحب المشروع بإضافة وتعديل بعض الأمور الموجودة في التصميم فلا تتشدد، وتحلى بالمرونة لأن هذا يفيدك مستقبلًا إما بعودته لطلب خدماتك مرة أخرى، أو بإعطائك تقييم جيد يفيدك في المشاريع الأخرى وسيزيد ذلك من ثقة الآخرين بك.
</p>

<h2>
	تصميم قالب ووردبريس بواسطة برنامج فيجما
</h2>

<p>
	سوف نشرح في هذه السلسلة كيفية بناء قالب ووردبريس لموقع مدونة بسيط يعرض المقالات، وسنبدأ أولًا بشرح كيفية إنجاز التصميم بواسطة فيجما Figma وذلك لوضع اللبنة الأساسية لتصميم الموقع، ونكمل خطوات برمجة القالب وتنسيقه وفق هذا التصميم في المقالات اللاحقة.
</p>

<p>
	نريد تصميم قالب بسيط يمثل مدونة لذا سنوجه مباشرة لتصميمه على <a href="https://www.figma.com/" rel="external nofollow">وقع فيجما</a> ووضع التصميم الذي نراه مناسبًا.
</p>

<p>
	سوف نقوم بتصميم الموقع كمدونة بها قائمتان أحدهما رئيسية والأخرى ثانوية في القسم العلوي للموقع أو ترويسة الموقع Header، وسنضع بينهما شريط صور منزلق Slider يعرض أهم مقالات الموقع وسنكتب الأكواد الخاصة بهذا المنزلق في القسم الأخير من السلسلة باستخدام لغة جافا سكريبت، ثم سنحدد ما يحتويه القسم الأوسط الخاص بعرض جسم الصفحة على سبيل المثال في صفحة المدونة سيعرض هذا القسم عناوين وصور ومقتطفات من أحدث المقالات المنشورة في المدونة معروضة وفق الترتيب التنازلي لتاريخ نشرها، ثم سننتهي بالقسم السفلي وهو التذييل الخاص بالمدونة Footer.
</p>

<h3>
	تصميم القسم العلوي Heade
</h3>

<p>
	نبدأ تصميم الموقع بإنشاء خلفية الصفحة الرئيسية وستكون باللون الأبيض، ثم ننشئ الخلفية الخاصة بالقائمة الثانوية في أعلى الصفحة وستكون باللون الأصفر، بعد ذلك ننشئ القسم الخاص بالمنزلق باللون الرمادي الفاتح ونضيف صورة واحدة له، ثم نختار في القسم الثالث اللون الأصفر للقائمة الرئيسية كما هو موضح بالشكل التالي:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="130143" href="https://academy.hsoub.com/uploads/monthly_2023_07/001header-components.png.508ec90321f13ccc8959f7c99546d377.png" rel=""><img alt="001 header-components.png" class="ipsImage ipsImage_thumbnailed" data-fileid="130143" data-ratio="34.89" data-unique="eeupmdeek" width="900" src="https://academy.hsoub.com/uploads/monthly_2023_07/001header-components.thumb.png.6f28bc1b84d7d5d9268e3692e20a6b0d.png"></a><a class="ipsAttachLink ipsAttachLink_image" href="https://academy.hsoub.com/uploads/monthly_2023_07/001header-components.png.7b01dd7408b0a351174b5b069b9f14ce.png" rel=""> </a>
</p>

<p>
	بعد ذلك نحدد ما ستحتويه القائمة العلوية الثانوية من قوائم فرعية أو صفحات، وستكون على سبيل المثال صفحة من نحن وسياسة الخصوصية واتصل بنا، يتبع ذلك البدء بوضع ما ستحتويه القائمة الرئيسية من محتويات وهي الصفحة الرئيسية، وبعض التصنيفات الأساسية مثل تقنية وهواتف وتطبيقات وحاسبات ووردبريس، وتصمم كلا القائمتين كما بالشكل التالي:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="130140" href="https://academy.hsoub.com/uploads/monthly_2023_07/002header-menus.png.68d0f7c0e2a7ac6d6ed283f45b341c44.png" rel=""><img alt="002 header-menus.png" class="ipsImage ipsImage_thumbnailed" data-fileid="130140" data-unique="u564mr02s" src="https://academy.hsoub.com/uploads/monthly_2023_07/002header-menus.thumb.png.e9c15c6914ba1fa859481ef71802989f.png"> </a>
</p>

<h3>
	تصميم جسم الصفحة Page
</h3>

<p>
	في الخطوة التالية ننشئ جسم الصفحة وهو القسم الأوسط الذي سيعرض محتوى الصفحة والذي يختلف حسب نوع الصفحة ففي حالتنا تعرض الصفحة الرئيسية المقالات الحديثة المنشورة في المدونة سنقسم هذه الصفحة إلى قسمين، علوي وسفلي، يتكون القسم العلوي من صورتين للمقالات الأكثر قراءة مع مقتطفاتهم، أما القسم السفلي فيحتوي على مقتطفات كل المقالات التي يتم نشرها على المدونة وفق تاريخ نشرها من الأحدث للأقدم، يصمم الجزء الأول كالتالي:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="130139" href="https://academy.hsoub.com/uploads/monthly_2023_07/003Body-posts-part-1.png.b126f39c0111e96a27304e1dc8db32e6.png" rel=""><img alt="003 Body-posts-part-1.png" class="ipsImage ipsImage_thumbnailed" data-fileid="130139" data-unique="zd1i00sz3" src="https://academy.hsoub.com/uploads/monthly_2023_07/003Body-posts-part-1.thumb.png.796aa75dc7c4d102d7803d0f07392956.png"> </a>
</p>

<p>
	والجزء الثاني كالتالي:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="130138" href="https://academy.hsoub.com/uploads/monthly_2023_07/004body-posts-part-2.png.ab2adac14d130570cb137fbb04730bf8.png" rel=""><img alt="004 body-posts-part-2.png" class="ipsImage ipsImage_thumbnailed" data-fileid="130138" data-unique="g72p8g3wh" src="https://academy.hsoub.com/uploads/monthly_2023_07/004body-posts-part-2.thumb.png.283954a70d42d3ba79427a6e56f2b46c.png"> </a>
</p>

<h3>
	تصميم القسم السفلي للصفحة أو التذييل Footer
</h3>

<p>
	سيكون القسم التالي هو التذييل الخاص بالصفحة، ويصمم بوضع خلفية بنفس اللون الرئيسي للمدونة ثم يعرض قائمة في التذييل تضم مجموعة من العناصر هي على سبيل المثال أحدث المقالات، والأكثر قراءة، والوسوم والتصنيفات وطرق التواصل وتحت قائمة التذييل سنعرض عبارة جميع الحقوق محفوظة واسم المدونة كما هو موضح بالشكل التالي:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="130137" href="https://academy.hsoub.com/uploads/monthly_2023_07/005footer-background-and-menus.png.c7bfa8228508b267a9c0416762b344be.png" rel=""><img alt="005 footer-background-and-menus.png" class="ipsImage ipsImage_thumbnailed" data-fileid="130137" data-unique="p940u3sdl" src="https://academy.hsoub.com/uploads/monthly_2023_07/005footer-background-and-menus.thumb.png.b036f2888b17c1f1240983e5cd3d6f78.png"> </a>
</p>

<h3>
	تصميم الموقع النهائي للصفحة على الحاسب
</h3>

<p>
	يظهر في الشكل التالي التصميم النهائي للصفحة الرئيسية للمدونة:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="130136" href="https://academy.hsoub.com/uploads/monthly_2023_07/06home-page-finishing.png.5da83fce0ffd31dd4776fc6cccc91948.png" rel=""><img alt="06 home-page-finishing.png" class="ipsImage ipsImage_thumbnailed" data-fileid="130136" data-ratio="181.82" data-unique="s8gabr12p" width="330" src="https://academy.hsoub.com/uploads/monthly_2023_07/06home-page-finishing.thumb.png.563bc5a3affc3fb137106e85df062a35.png"></a>
</p>

<h3>
	تصميم الموقع النهائي للصفحة على الشاشات الصغيرة
</h3>

<p>
	يتم بعد ذلك عمل تصميم بشكل يناسب الحاسوب اللوحي وآخر للجوال كما بالشكل النهائي التالي لهما.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="130135" href="https://academy.hsoub.com/uploads/monthly_2023_07/07home-tablet-mobile-finishing.png.8e3a13330ef6e9ae979e88368a5b459a.png" rel=""><img alt="07 home-tablet-mobile-finishing.png" class="ipsImage ipsImage_thumbnailed" data-fileid="130135" data-ratio="169.97" data-unique="2hl4ytagw" width="353" src="https://academy.hsoub.com/uploads/monthly_2023_07/07home-tablet-mobile-finishing.thumb.png.2760b5885594d5724c1c4b8fbc62097b.png"></a>
</p>

<h3>
	التصميم مع وجود شريط جانبي Sidebar
</h3>

<p>
	إن أردت أن يكون هناك شريط جانبي في الصفحة الرئيسية، فيمكنك عمل ذلك كما بالشكل التالي:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="130134" href="https://academy.hsoub.com/uploads/monthly_2023_07/08home-page-with-sidebar.png.ff584c37886f2a73a5b18a2ad5342c5b.png" rel=""><img alt="08 home-page-with-sidebar.png" class="ipsImage ipsImage_thumbnailed" data-fileid="130134" data-ratio="150.75" data-unique="141fj4pr5" width="398" src="https://academy.hsoub.com/uploads/monthly_2023_07/08home-page-with-sidebar.thumb.png.320086f11163e407b3124ebbd145f0aa.png"></a>
</p>

<p>
	وستجد في المقالات التالية أن عملية إضافة شريط جانبي تشابه عملية إضافة التذييل للصفحة فكلاهما يحتاج نفس الدوال الجاهزة التي توفرها ووردبريس.
</p>

<p>
	يمكنك متابعة تصميم باقي صفحات الموقع مثل صفحة من نحن، وصفحات الأرشيف، وصفحة نتائج البحث لكننا سنكتفي بتصميم الصفحة الرئيسية لموقعنا وستكون باقي الصفحات بتصميم مشابه مع بعض الاختلافات الطفيفة التي سنشرحها في حينها.
</p>

<h2>
	خاتمة
</h2>

<p>
	بهذا نكون وصلنا لنهاية هذه المقالة من سلسلة برمجة قالب ووردبريس من الصفر والتي بدأناها بتصميم الشكل العام للموقع والأقسام المهمة له بداية من الترويسة إلى المحتوى الأساسي للصفحة وانتهاء بالتذييل والشريط الجانبي وما يحتويه كل قسم من مكونات، سوف يكون الجزء الثاني في السلسلة هو شرح كيفية برمجة ملفات القالب الأساسية التي تعرض هذا المحتوى المطلوب وسنخصص الجزء الثالث والرابع لتنسيق طريقة عرض هذا المحتوى بالشكل المناسب لهذا التصميم.
</p>

<p>
	<em>كتب المسودة الأولية للمقال <a href="https://academy.hsoub.com/profile/3732499-hesham-hussain2/" rel="">هشام حسين</a>.</em>
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
	<li>
		المقال التالي: <a href="https://academy.hsoub.com/programming/php/wordpress/%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A7%D8%AA-%D8%AA%D8%B7%D9%88%D9%8A%D8%B1-%D9%82%D8%A7%D9%84%D8%A8-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r2027/" rel="">أساسيات تطوير قالب ووردبريس</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/php/wordpress/%D8%AA%D8%B9%D9%84%D9%85-%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D9%88%D8%AA%D8%B7%D9%88%D9%8A%D8%B1-%D9%85%D9%88%D8%A7%D9%82%D8%B9-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r1461/" rel="">تعلم برمجة وتطوير مواقع ووردبريس</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/php/wordpress/%D8%A5%D9%86%D8%B4%D8%A7%D8%A1-%D9%82%D8%A7%D8%B9%D8%AF%D8%A9-%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA-%D9%84%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r1360/" rel="">إنشاء قاعدة بيانات لووردبريس</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/apps/web/wordpress/%D8%A7%D9%84%D8%AF%D9%84%D9%8A%D9%84-%D8%A7%D9%84%D8%B4%D8%A7%D9%85%D9%84-%D9%84%D9%88%D8%AF%D8%AC%D8%A7%D8%AA-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r467/" rel="">الدليل الشامل لودجات ووردبريس</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">2017</guid><pubDate>Sun, 02 Jul 2023 13:00:00 +0000</pubDate></item><item><title>&#x637;&#x631;&#x642; &#x625;&#x639;&#x627;&#x62F;&#x629; &#x636;&#x628;&#x637; &#x643;&#x644;&#x645;&#x629; &#x627;&#x644;&#x645;&#x631;&#x648;&#x631; &#x641;&#x64A; &#x648;&#x648;&#x631;&#x62F;&#x628;&#x631;&#x64A;&#x633;</title><link>https://academy.hsoub.com/programming/php/wordpress/%D8%B7%D8%B1%D9%82-%D8%A5%D8%B9%D8%A7%D8%AF%D8%A9-%D8%B6%D8%A8%D8%B7-%D9%83%D9%84%D9%85%D8%A9-%D8%A7%D9%84%D9%85%D8%B1%D9%88%D8%B1-%D9%81%D9%8A-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r1696/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2022_08/6309cd8668130_------.png.4bf36e49bc5fb993879b170964ffd81a.png" /></p>
<p>
	يوجد ضمن ووردبريس أكثر من طريقة لإعادة ضبط كلمة المرور، وعادةً فإن الطريقة الأسهل هي إعادة ضبط كلمة المرور من خلال رابط "هل فقدت كلمة مرورك؟" ضمن صفحة تسجيل الدخول لموقعك أو مدونتك، لكن هناك حالات (خصوصًا إن لم يكن بريدك الإلكتروني يعمل بشكل صحيح) تُضطر فيها لاتباع خطوات مختلفة لإعادة ضبط كلمة مرورك.
</p>

<p>
	إليك قائمة بطرق مختلفة لإعادة ضبط كلمة المرور حيث تعتمد الطريقة التي تستخدمها على صلاحيات الوصول لموقعك التي تمتلكها.
</p>

<h2>
	تغيير كلمة المرور من لوحة التحكم
</h2>

<p>
	لتغيير كلمة مرورك في الإصدارات الحالية عليك التوجه إلى قسم <strong>أعضاء</strong> ضمن لوحة تحكم ووردبريس والضغط على تبويب <strong>كافة الأعضاء</strong>. الآن اضغط على اسم المستخدم الذي تريد تغيير كلمة المرور الخاصة به ضمن القائمة، ثم توجه ضمن نافذة تعديل المستخدم إلى قسم كلمة مرور جديدة واضغط على <strong>توليد كلمة مرور</strong>.
</p>

<p>
	سوف تُوّلد كلمة مرور عشوائية ضمن الحقل تستطيع تغييرها بكتابة كلمة مرور جديدة واستعن بالمؤشر الموجود بجانب حقل كلمة المرور والذي يُشير لقوة الكلمة. اضغط بعد ذلك على <strong>تحديث الملف الشخصي</strong> لحفظ التعديلات السابقة وانتبه أنك تستطيع استخدام كلمة المرور الجديدة فورًا.
</p>

<h2>
	تغيير كلمة المرور من خلال البريد الإلكتروني التلقائي
</h2>

<p>
	إن كنت تعلم اسم المستخدم أو البريد الإلكتروني لحسابك تستطيع استخدام ميزة فقدان كلمة المرور في ووردبريس وذلك بالتوجه إلى صفحة تسجيل دخول ووردبريس ثم الضغط على <strong>هل فقدت كلمة مرورك؟</strong> ليُعاد توجيهك إلى صفحة تطلب منك إدخال بعض المعلومات حيث عليك إدخال اسم المستخدم أو عنوان البريد الإلكتروني المرتبط بحسابك.
</p>

<p>
	عليك بعد ذلك الانتظار ريثما تُرسل كلمة المرور الجديدة لك عبر بريدك الإلكتروني والتي تستطيع استخدامها لتسجيل الدخول لحسابك الشخصي وتغيير كلمة المرور هذه لشيء يسهل عليك تذكره أو تستطيع الإبقاء عليها.
</p>

<h2>
	تغيير كلمة المرور من خلال سطر أوامر MySQL
</h2>

<p>
	احصل على قيمة معمّاة MD5 لكلمة مرورك وذلك بالتوجه <a href="http://www.miraclesalad.com/webtools/md5.php" rel="external nofollow">لمولد القيم المعمّاة MD5</a> أو أنشئ مفتاحًا باستخدام بايثون أو ضمن أنظمة يونكس أو لينكس وذلك عبر إنشاء ملف يُدعى wp.txt لا يحوي شيئًا سوى كلمة المرور الجديدة ثم تنفيذ الأمر التالي:
</p>

<pre class="ipsCode">tr -d '\r\n' &lt; wp.txt | md5sum | tr -d ' -'
</pre>

<p>
	لا تنسى حذف ملف كلمة المرور wp.txt عبر تنفيذ الأمر <code>rm wp.txt</code> مثلًا أو حذفه يدويًا.
</p>

<p>
	أما ضمن أنظمة Mac OS X فبعد إنشاء ملف wp.txt نفذ الأمر التالي (إن أردت طباعة القيمة المعمّاة MD5):
</p>

<pre class="ipsCode">md5 -q ./wp.txt; rm ./wp.txt
</pre>

<p>
	أو إن أردت نسخ القيمة المعماة الناتجة مباشرة إلى حافظة النظام، فنفذ الأمر التالي
</p>

<pre class="ipsCode">md5 -q ./wp.txt | pbcopy; rm ./wp.txt
</pre>

<p>
	نفِّذ بعد ذلك الأمر التالي:
</p>

<pre class="ipsCode prettyprint lang-sql prettyprinted" id="ips_uid_7973_8" style=""><span class="pln">mysql </span><span class="pun">-</span><span class="pln">u root </span><span class="pun">-</span><span class="pln">p</span></pre>

<p>
	للدخول إلى <a href="https://academy.hsoub.com/devops/servers/databases/mysql/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D8%AC-%D8%A5%D8%AF%D8%A7%D8%B1%D8%A9-%D9%82%D9%88%D8%A7%D8%B9%D8%AF-%D8%A7%D9%84%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA-mysql-r28/" rel="">قاعدة بيانات MySQL</a> وأدخل كلمة المرور ثم اختر قاعدة بيانات ووردبريس عبر الأمر <code>use (name-of-database)‎</code> (ضع اسم قاعدة البيانات) ثم اعرض الجدول عبر <code>show tables</code> (أنت تبحث عن جدول ينتهي بكلمة users).
</p>

<p>
	نفذ بعدها الأمر التالي:
</p>

<pre class="ipsCode prettyprint lang-sql prettyprinted" id="ips_uid_7973_16" style=""><span class="pln">SELECT ID</span><span class="pun">,</span><span class="pln"> user_login</span><span class="pun">,</span><span class="pln"> user_pass FROM </span><span class="pun">(</span><span class="pln">name</span><span class="pun">-</span><span class="pln">of</span><span class="pun">-</span><span class="pln">table</span><span class="pun">-</span><span class="pln">you</span><span class="pun">-</span><span class="pln">found</span><span class="pun">);</span></pre>

<p>
	ضع مكان name-of-table-you-found اسم الجدول، وهذا يوفر لك فكرة عما يُنفذ ضمن قاعدة البيانات، ثم نفذ الأمر التالي لتغيير كلمة المرور:
</p>

<pre class="ipsCode prettyprint lang-sql prettyprinted" id="ips_uid_7973_14" style=""><span class="pln">UPDATE </span><span class="pun">(</span><span class="pln">name</span><span class="pun">-</span><span class="pln">of</span><span class="pun">-</span><span class="pln">table</span><span class="pun">-</span><span class="pln">you</span><span class="pun">-</span><span class="pln">found</span><span class="pun">)</span><span class="pln"> SET user_pass</span><span class="pun">=</span><span class="str">"(MD5-string-you-made)"</span><span class="pln"> WHERE ID </span><span class="pun">=</span><span class="pln"> </span><span class="pun">(</span><span class="pln">id</span><span class="pun">);</span></pre>

<p>
	ضع مكان MD5-string-you-made سلسلة MD5 المعماة التي ولدتها سابقًا، وضع مكان (id) مُعرِّف الحساب الذي تريد إعادة تعيين كلمة المرور له.
</p>

<p>
	تأكد أن كلمة المرور تغيرت عبر تنفيذ الأمر التالي:
</p>

<pre class="ipsCode prettyprint lang-sql prettyprinted" id="ips_uid_7973_12" style=""><span class="pln">SELECT ID</span><span class="pun">,</span><span class="pln"> user_login</span><span class="pun">,</span><span class="pln"> user_pass FROM </span><span class="pun">(</span><span class="pln">name</span><span class="pun">-</span><span class="pln">of</span><span class="pun">-</span><span class="pln">table</span><span class="pun">-</span><span class="pln">you</span><span class="pun">-</span><span class="pln">found</span><span class="pun">);</span></pre>

<p>
	أخيرًا، اضغط على CTRL + D للخروج من mysql client.
</p>

<p>
	<strong>ملاحظة</strong>: إن كنت تملك إصدارًا حديثًا من MySQL (الإصدار 5 وما بعد)، تستطيع جعل MySQL يحسب القيمة المعمّاة MD5، لذا تجاوز خطوة توليد قيمة MD5 من الخطوات السابقة ونفذ ما يلي لتغيير كلمة المرور فعليًا:
</p>

<pre class="ipsCode prettyprint lang-sql prettyprinted" id="ips_uid_7973_10" style=""><span class="pln">UPDATE </span><span class="pun">(</span><span class="pln">name</span><span class="pun">-</span><span class="pln">of</span><span class="pun">-</span><span class="pln">table</span><span class="pun">-</span><span class="pln">you</span><span class="pun">-</span><span class="pln">found</span><span class="pun">)</span><span class="pln"> SET user_pass </span><span class="pun">=</span><span class="pln"> MD5</span><span class="pun">(</span><span class="str">'(new-password)'</span><span class="pun">)</span><span class="pln"> WHERE ID </span><span class="pun">=</span><span class="pln"> </span><span class="pun">(</span><span class="pln">id</span><span class="com">#-of-account-you-are-reseting-password-for);</span></pre>

<p>
	<strong>ملاحظة</strong>: تضيف ووردبريس عند تحويل كلمة المرور إلى MD5 قيمة إضافية تدعى غُفل salt ثم تحولها مرة أخرى إلى MD5 وتخزنها في قاعدة البيانات، ولكن في حالتنا تلك لم نضف قيمة الغفل تلك وحولنا كلمة المرور إلى MD5 مرة واحدة فقط ومع ذلك تسمع ووردبريس بتسجيل الدخول بدونها طبعًا باستعمال كلمة المرور الأصلية قبل التحويل.
</p>

<h2>
	تغيير كلمة المرور من خلال phpMyAdmin
</h2>

<p>
	هذا المقال لمن يمتلك وصولًا للوحة <a href="https://academy.hsoub.com/apps/web/wordpress/%D8%AF%D9%84%D9%8A%D9%84-%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-filezilla-%D9%84%D8%A5%D8%AF%D8%A7%D8%B1%D8%A9-%D9%85%D9%84%D9%81%D8%A7%D8%AA-%D9%85%D9%88%D9%82%D8%B9-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r367/" rel="">phpMyAdmin</a> لدخول قاعدة البيانات.
</p>

<p>
	<strong>ملاحظة</strong>: استخدم لوحة تحكم phpMyAdmin على مسؤوليتك الشخصية، فإن كنت تشك في قدرتك على استخدامها عليك البحث عن شخص ذو خبرة، فلسنا مسؤوليين عن فقدان أي بيانات أو حصول أي مشاكل.
</p>

<p>
	تبدأ الخطوة الأولى بتسجيل الدخول إلى phpMyAdmin والضغط على databases لتظهر لك قائمة بقواعد البيانات، اضغط على قاعدة بيانات ووردبريس الخاصة بك.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="106507" href="https://academy.hsoub.com/uploads/monthly_2022_08/001_changepw2.jpg.21de15523501294d820b800d5dddea85.jpg" rel="" data-fileext="jpg"><img alt="001_changepw2.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="106507" data-unique="48yt0tm2j" src="https://academy.hsoub.com/uploads/monthly_2022_08/001_changepw2.jpg.21de15523501294d820b800d5dddea85.jpg"></a>
</p>

<p>
	سوف تظهر الآن جميع جداول قاعدة البيانات، وإن لم تظهر اضغط على structure، ثم ابحث عن الجدول wp_users ضمن العمود Table وعندما تجده اضغط على أيقونة المتصفح. الآن عليك البحث عن اسم المستخدم الخاص بك تحت user_login، وعندما تجده اضغط على edit (ربما يظهر على شكل قلم في بعض إصدارات phpMyAdmin).
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="106508" href="https://academy.hsoub.com/uploads/monthly_2022_08/002_changepw3.jpg.c5bd9f5ecf23d9f9809548bf9c0ccc02.jpg" rel="" data-fileext="jpg"><img alt="002_changepw3.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="106508" data-unique="7b76286ge" src="https://academy.hsoub.com/uploads/monthly_2022_08/002_changepw3.jpg.c5bd9f5ecf23d9f9809548bf9c0ccc02.jpg"></a>
</p>

<p>
	سوف يظهر معرف المستخدم user_id الخاص بك، اضغط على Edit لتظهر لك قائمة طويلة من الأرقام والأحرف بجانب user_pass، وهنا عليك حذف هذه الأحرف والأرقام وكتابة كلمة المرور التي تريدها مكانها وانتبه إلى أنّ كلمة المرور حساسة لحالة الأحرف. استخدمت في مثال كلمة rabbitseatcarrots لتكون كلمة المرور الجديدة، ثم اخترت MD5 لتعمية كلمة المرور من القائمة المنسدلة الظاهرة في الصورة.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="106509" href="https://academy.hsoub.com/uploads/monthly_2022_08/003_changepw6.jpg.8c0b5847b63f6c7be389b6c115220f56.jpg" rel="" data-fileext="jpg"><img alt="003_changepw6.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="106509" data-unique="ig3rvlakf" src="https://academy.hsoub.com/uploads/monthly_2022_08/003_changepw6.jpg.8c0b5847b63f6c7be389b6c115220f56.jpg"></a>
</p>

<p>
	تحقق من كلمة مرورك الجديدة وأنك اخترت MD5.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="106510" href="https://academy.hsoub.com/uploads/monthly_2022_08/004_changepw7.jpg.f6a2eeab115dbd77abce96886e13fec0.jpg" rel="" data-fileext="jpg"><img alt="004_changepw7.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="106510" data-unique="1tuzma4dk" src="https://academy.hsoub.com/uploads/monthly_2022_08/004_changepw7.jpg.f6a2eeab115dbd77abce96886e13fec0.jpg"></a>
</p>

<p>
	اضغط على Go في الزاوية السفلى اليمنى، ثم استخدم كلمة المرور الجديدة ضمن صفحة تسجيل الدخول، وإن لم تعمل تحقق من أنك اتبعت الخطوات السابقة دون نقصان.
</p>

<h2>
	تغيير كلمة المرور من خلال FTP
</h2>

<p>
	يوجد طريقة سهلة لإعادة ضبط كلمة المرور من خلال FTP إن كنت تستخدم حساب المدير حيث عليك الدخول لموقعك من خلال FTP لتحميل ملف functions.php للقالب النشط. عليك الآن تحرير الملف وإضافة الشيفرة التالية تمامًا بعد بداية الملف بعد وسم <code>‎&lt;?php</code>:
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_7973_18" style=""><span class="pln">wp_set_password</span><span class="pun">(</span><span class="pln"> </span><span class="str">'password'</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="pun">);</span></pre>

<p>
	أدخل كلمة مرورك الجديدة لحساب المدير مكان password والرقم 1 يُشير لمعرف حساب المدير ضمن جدول wp_users ثم ارفع الملف المُعدّل إلى موقعك وحاول تسجيل الدخول من جديد باستخدام كلمة المرور الجديدة وتذكر أنه حالما تتمكن من تسجيل الدخول للموقع عليك إزالة الشيفرة السابقة كونها تُهيئ كلمة مرورك عند كل تحميل لأي صفحة ضمن الموقع.
</p>

<h2>
	تغيير كلمة المرور من خلال واجهة WP CLI
</h2>

<p>
	إن WP CLI عبارة أداة أوامر سطرية لإدارة تثبيت ووردبريس، ولاستخدامها عليك التوجه إلى مسار ووردبريس وكتابة <code>wp user list</code> لعرض جميع المستخدمين. ابحث الآن عن معرف المستخدم الذي تريد تعديله واستخدم الشيفرة التالية لإنجاز عملية التعديل:
</p>

<pre class="ipsCode">wp user update 1 --user_pass=$UP3RstrongP4$w0rd
</pre>

<p>
	وتذكر استبدال الرقم 1 بمعرف المستخدم الذي تريد تعديله.
</p>

<h2>
	استخدام شيفرة الطوارئ لإعادة ضبط كلمة المرور
</h2>

<p>
	إن لم تعمل أي من الحلول السابقة عليك تجريب شيفرة الطوارئ لإعادة ضبط كلمة المرور وانتبه أن هذه الشيفرة ليست عبارة عن إضافة بل هي شيفرة PHP.
</p>

<p>
	إن أردت استخدام هذه الطريقة، انسخ شيفرة أو سكربت الطوارئ من <a href="https://codex.wordpress.org/User:MichaelH/Orphaned_Plugins_needing_Adoption/Emergency" rel="external nofollow">سكربت الطوارئ لكلمة المرور</a> وضعها في ملف يُدعى emergency.php ضمن المسار الرئيسي لتثبيت ووردبريس، وهو المسار نفسه الذي يتضمن الملف wp-config.php.
</p>

<p>
	افتح الرابط <a href="http://example.com/emergency.php" ipsnoembed="true" rel="external nofollow">http://example.com/emergency.php</a> ضمن متصفحك، وأدخل اسم المستخدم لحساب المدير كما هو مطلوب (عادة يكون admin) وكلمة المرور الجديدة ثم اضغط على Update Options، وسوف تُعرض لك رسالة تخبرك بتغيير كلمة المرور وسوف يُرسل لك بريد إلكتروني لحساب المدير يتضمن تغيير كلمة المرور.
</p>

<p>
	احذف ملف emergency.php من خادمك بعد تغيير كلمة المرور، ولا تبقه على خادمك كي لا يستخدمه شخص آخر لتغيير كلمة مرورك والدخول لموقعك.
</p>

<p>
	بعض التحذيرات في حال استخدام هذه الآلية:
</p>

<ol>
	<li>
		تتطلب شيفرة الطوارئ لإعادة ضبط كلمة المرور أن تعلم اسم مستخدم حساب المدير.
	</li>
	<li>
		تعمل هذه الشيفرة على تحديث كلمة مرور المدير وتُرسل بريدًا إلكترونيًا لعنوان البريد الإلكتروني للمدير.
	</li>
	<li>
		حتى إن لم تستقبل أي بريد إلكتروني سوف تتغير كلمة المرور بجميع الأحوال.
	</li>
	<li>
		لا تحتاج تسجيل الدخول لاستخدام هذه الشيفرة. (فإن كنت تستطيع الدخول لن تكون بحاجة لاستخدام هذه الشيفرة)
	</li>
	<li>
		عليك وضع هذه الشيفرة ضمن المسار الرئيسي لتثبيت ووردبريس أي لا تضعها ضمن مجلد إضافات ووردبريس.
	</li>
	<li>
		لأسباب أمنية عليك مسح هذه الشيفرة عند الانتهاء من استخدامها.
	</li>
</ol>

<p>
	إليك <a href="http://kuttler.eu/code/wordpress-password-reset/" rel="external nofollow">شيفرة أخرى لإعادة ضبط كلمة المرور</a> يُمكن استخدامها بدون معرفة اسم المستخدم أو البريد الإلكتروني.
</p>

<p>
	ترجمة -وبتصرف- للمقال <a href="https://wordpress.org/support/article/resetting-your-password/" rel="external nofollow">Resetting Your Password</a> من موقع <a href="https://wordpress.org/" rel="external nofollow">ووردبريس</a>.
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
	<li>
		<a href="https://academy.hsoub.com/wordpress/" rel="">تعلم ووردبريس</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/apps/web/wordpress/%D8%A7%D9%84%D8%AF%D9%84%D9%8A%D9%84-%D8%A7%D9%84%D8%B4%D8%A7%D9%85%D9%84-%D9%84%D8%AA%D8%A3%D9%85%D9%8A%D9%86-%D9%83%D9%84%D9%85%D8%A9-%D8%B3%D8%B1-%D8%A7%D9%84%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r331/" rel="">الدليل الشامل لتأمين كلمة سر الوردبريس</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/apps/web/wordpress/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%AA%D8%BA%D9%8A%D9%8A%D8%B1-%D9%88%D8%AA%D9%87%D9%8A%D8%A6%D8%A9-%D9%83%D9%84%D9%85%D8%A9-%D8%A7%D9%84%D9%85%D8%B1%D9%88%D8%B1-%D9%81%D9%8A-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r498/" rel="">كيفية تغيير وتهيئة كلمة المرور في ووردبريس</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/apps/web/wordpress/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%A7%D9%84%D9%88%D8%B5%D9%88%D9%84-%D9%84%D8%B5%D9%81%D8%AD%D8%A9-%D8%AA%D8%B3%D8%AC%D9%8A%D9%84-%D8%A7%D9%84%D8%AF%D8%AE%D9%88%D9%84-%D9%81%D9%8A-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r479/" rel="">كيفية الوصول لصفحة تسجيل الدخول في ووردبريس</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/apps/web/wordpress/%D9%85%D8%B4%D8%A7%D9%83%D9%84-%D8%AA%D8%B3%D8%AC%D9%8A%D9%84-%D8%A7%D9%84%D8%AF%D8%AE%D9%88%D9%84-%D8%A5%D9%84%D9%89-%D9%85%D9%88%D9%82%D8%B9-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r644/" rel="">مشاكل تسجيل الدخول إلى موقع ووردبريس</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">1696</guid><pubDate>Fri, 07 Oct 2022 16:05:00 +0000</pubDate></item><item><title>&#x627;&#x644;&#x623;&#x633;&#x626;&#x644;&#x629; &#x627;&#x644;&#x634;&#x627;&#x626;&#x639;&#x629; &#x62D;&#x648;&#x644; &#x625;&#x635;&#x644;&#x627;&#x62D; &#x627;&#x644;&#x623;&#x62E;&#x637;&#x627;&#x621; &#x641;&#x64A; &#x648;&#x648;&#x631;&#x62F;&#x628;&#x631;&#x64A;&#x633;</title><link>https://academy.hsoub.com/programming/php/wordpress/%D8%A7%D9%84%D8%A3%D8%B3%D8%A6%D9%84%D8%A9-%D8%A7%D9%84%D8%B4%D8%A7%D8%A6%D8%B9%D8%A9-%D8%AD%D9%88%D9%84-%D8%A5%D8%B5%D9%84%D8%A7%D8%AD-%D8%A7%D9%84%D8%A3%D8%AE%D8%B7%D8%A7%D8%A1-%D9%81%D9%8A-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r1695/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2022_08/6309cab5d960f_------.png.2e20731b1ad176a25abf4ad7186d73e3.png" /></p>
<p>
	سنناقش في هذا المقال الأسئلة التي تدور حول استكشاف الأخطاء وإصلاحها، ويمكنك الاطلاع على <a href="https://academy.hsoub.com/programming/php/wordpress/%D8%A3%D8%AE%D8%B7%D8%A7%D8%A1-%D8%B4%D8%A7%D8%A6%D8%B9%D8%A9-%D9%81%D9%8A-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-%D9%88%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%AD%D9%84%D9%87%D8%A7-r1694/" rel="">أخطاء ووردبريس الشائعة</a> لتتعرف على أكثر الأخطاء التي تواجه مستخدمي ووردبريس مثل:
</p>

<ul>
	<li>
		الشاشة البيضاء
	</li>
	<li>
		خطأ الخادم الداخلي
	</li>
	<li>
		خطأ في إنشاء اتصال مع قاعدة البيانات
	</li>
	<li>
		فشل التحديث التلقائي
	</li>
	<li>
		نفاذ زمن الاتصال
	</li>
	<li>
		نمط الصيانة الذي يلي التحديث
	</li>
	<li>
		أخطاء PHP أو أخطاء قاعدة بيانات MySQL
	</li>
</ul>

<h2>
	تعطيل جميع الإضافات دون الوصول للوحة تحكم ووردبريس
</h2>

<p>
	من الضروري في بعض الأحيان تعطيل جميع الإضافات لكنك غير قادر على الوصول للوحة تحكم ووردبريس لعمل ذلك، وهنا عليك اتباع طريقة من اثنتين لتعطيل كامل الإضافات.
</p>

<p>
	استخدم <a href="https://academy.hsoub.com/apps/web/wordpress/%D8%AF%D9%84%D9%8A%D9%84-%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-filezilla-%D9%84%D8%A5%D8%AF%D8%A7%D8%B1%D8%A9-%D9%85%D9%84%D9%81%D8%A7%D8%AA-%D9%85%D9%88%D9%82%D8%B9-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r367/" rel="">phpMyAdmin</a> لتعطيل جميع الإضافات.
</p>

<ol>
	<li>
		ابحث ضمن جدول wp_options عن السطر active_plugins ضمن عمود options_name.
	</li>
	<li>
		غير قيمة الحقل option_value إلى <code>a:0:{}‎</code>
	</li>
</ol>

<p>
	أو هيئ مجلد الإضافات باستخدام <a href="https://academy.hsoub.com/apps/web/wordpress/%D8%AF%D9%84%D9%8A%D9%84-%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-filezilla-%D9%88-phpmyadmin-%D9%84%D8%A5%D8%AF%D8%A7%D8%B1%D8%A9-%D9%85%D9%84%D9%81%D8%A7%D8%AA-%D9%88%D9%82%D9%88%D8%A7%D8%B9%D8%AF-%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA-%D9%85%D9%88%D9%82%D8%B9-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r367/" rel="">FTP</a> أو مدير الملفات الذي توفره الاستضافة حيث تحافظ هذه الطريقة على خيارات الإضافة لكنها تتطلب إعادة تفعيل الإضافات يدويًا.
</p>

<p>
	نفذ ما يلي باستخدام اتصال FTP مدير ملفات الاستضافة:
</p>

<ol>
	<li>
		توجه إلى المجلد wp-contents
	</li>
	<li>
		أعد تسمية مجلد الإضافات plugins إلى plugins_old
	</li>
	<li>
		ادخل إلى لوحة تحكم ووردبريس ثم توجه إلى الإضافات ‎/wp-admin/plugins.php وهذا سوف يعطل أي إضافة مفقودة.
	</li>
	<li>
		أعد تسمية المجلد plugins_old إلى plugins
	</li>
</ol>

<h2>
	كيفية التخلص من رسالة الموقع في الصيانة التي تظهر بعد التحديث التلقائي
</h2>

<p>
	يعمل ووردبريس على إضافة ملف اسمه ‎.maintenance ضمن المجلد الرئيسي للمدونة وذلك كجزء من عملية التحديث التلقائي -المجلد الذي يحتوي مجلد wp-admin، ووجود هذا الملف سيظهر للزوار الرسالة التالية والتي تعني أن الموقع غير متاح حاليًا لأعمال الصيانة:
</p>

<blockquote class="ipsQuote" data-ipsquote="">
	<div class="ipsQuote_citation">
		اقتباس
	</div>

	<p data-gramm="false">
		"Briefly unavailable for scheduled maintenance. Check back in a minute".
	</p>
</blockquote>

<p>
	لإيقاف ظهور هذه الرسالة للزوار عليك حذف ملف ‎.maintenance حيث يجب عليك تنفيذ التحديث التلقائي في حال فشل في المرة الأولى.
</p>

<h2>
	أُصدر تحديث جديد لكن مدونتي لا ترى أن هذا الإصدار متوفر
</h2>

<p>
	يظهر إشعار بتوفر نسخة جديدة من ووردبريس عند إطلاق إصدار جديد ويُعرض هذا الإشعار في أعلى لوحة تحكم ووردبريس يقول <strong>ووردبريس x.x.x متاحة! يرجى التحديث الآن.</strong> لن تظهر هذه الرسالة في جميع المدونات في نفس الوقت، حيث أن مدونتك مبرمجة لتتحقق من التحديثات كل 12 ساعة وبالتالي فإن توقيت التحقق لكل مدونة عشوائي، لذا إن كانت مدونتك تحققت من التحديثات قبل إصدار التحديث بدقائق فهذا يعني أنك لن ترى هذه الرسالة إلا بعد 12 ساعة لاحقة.
</p>

<p>
	إن أردت لمدونتك أن تتحقق الآن عن وجود تحديثات تستطيع حذف الخيار update_core ضمن جدول wp_options، كما أن لكل إضافة وقالب دورة التحقق الخاصة بها التي يتحكم بها الخيارين update_plugins و update_themes ضمن جدول wp_options.
</p>

<h2>
	زوال تعديلات مخصصة على قالب ووردبريس بعد التحديث التلقائي الأخير
</h2>

<p>
	ينسخ تحديث نواة ووردبريس جميع الملفات الجديدة ويستبدل بها الملفات القديمة لذا إن أجريت تعديلات على ملفات ضمن قالب ووردبريس الافتراضي مثل تعديل الملف wp-content/themes/twentysixteen/style.css فإن هذه التغييرات سوف تختفي ويحل محلها النسخة الجديدة من الملف.
</p>

<p>
	انتبه إلى أن تحديث نواة ووردبريس يُطبق على قائمة بالملفات القديمة المعرفة ضمن wp-admin/includes/update-core.php ويحذفها، وأي ملف ليس ضمن هذه القائمة وليس ضمن توزيعة الإصدار الجديد لن تتأثر.
</p>

<p>
	تذكر أنه عليك أخذ نسخة احتياطية عن ملفات ووردبريس وقاعدة البيانات الخاصة به قبل التحديثات سواء التلقائية أو اليدوية كما هو مشروح في <a href="https://academy.hsoub.com/apps/web/wordpress/%D8%A7%D9%84%D9%86%D8%B3%D8%AE-%D8%A7%D9%84%D8%A7%D8%AD%D8%AA%D9%8A%D8%A7%D8%B7%D9%8A-%D9%88%D8%A7%D9%84%D8%A7%D8%B3%D8%AA%D8%B9%D8%A7%D8%AF%D8%A9-%D9%84%D9%85%D9%88%D9%82%D8%B9-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r640/" rel="">النسخ الاحتياطية لووردبريس</a>.
</p>

<p>
	الطريقة الأفضل لتعديل ملفات القالب الافتراضي هي باستخدام قالب ابن Child Theme الذي يتطلب منك المزيد من العمل بعض الشيء لكنه يستحق ذلك لأن تعديلات سوف تكون بأمان عند تحديث القالب الأب.
</p>

<h2>
	كيفية إصلاح جدول قاعدة بيانات MySQL
</h2>

<p>
	من الضروري كل فترة إجراء إصلاح لجدول أو أكثر لقاعدة بيانات MySQL، ووفقًا <a href="https://dev.mysql.com/doc/refman/8.0/en/myisam-repair.html" rel="external nofollow">لكيفية إصلاح جداول MyISAM في dev.mysql.com</a> هناك عدة أسباب لإصلاح الجدول بما فيها الأخطاء مثل:
</p>

<pre class="ipsCode">- "tbl_name.frm is locked against change"
- "Can’t find file tbl_name.MYI (Errcode: nnn)"
- "Unexpected end of file"
- "Record file is crashed"
- "Got error nnn from table handler"
</pre>

<p>
	إليك خطوات إصلاح جدول في قاعدة بيانات MySQL باستخدام <a href="https://academy.hsoub.com/apps/web/wordpress/%D8%AF%D9%84%D9%8A%D9%84-%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-filezilla-%D9%84%D8%A5%D8%AF%D8%A7%D8%B1%D8%A9-%D9%85%D9%84%D9%81%D8%A7%D8%AA-%D9%85%D9%88%D9%82%D8%B9-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r367/" rel="">phpMyAdmin</a>:
</p>

<ol>
	<li>
		ادخل لحساب الاستضافة
	</li>
	<li>
		ادخل إلى phpMyAdmin
	</li>
	<li>
		اختر قاعدة البيانات المُصابة أما إن كان لديك قاعدة بيانات فسوف تكون اختيرت تلقائيًا.
	</li>
	<li>
		ستجد قائمة بجداول قاعدة البيانات ضمن اللوحة الرئيسية. ضع علامة ضمن الصناديق بجانب الأعمدة التي تحتاج إصلاح.
	</li>
	<li>
		أسفل النافذة أي أسفل قائمة الجداول سوف تجد قائمة منسدلة. اختر Repair Table
	</li>
</ol>

<p>
	تذكر أنه يُنصح بامتلاك نسخة احتياطية عن قاعدة البيانات في جميع الأوقات. ألق نظرة على <a href="https://academy.hsoub.com/apps/web/wordpress/%D8%A7%D9%84%D9%86%D8%B3%D8%AE-%D8%A7%D9%84%D8%A7%D8%AD%D8%AA%D9%8A%D8%A7%D8%B7%D9%8A-%D9%88%D8%A7%D9%84%D8%A7%D8%B3%D8%AA%D8%B9%D8%A7%D8%AF%D8%A9-%D9%84%D9%85%D9%88%D9%82%D8%B9-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r640/" rel="">النسخ الاحتياطية لووردبريس</a>.
</p>

<h2>
	لا تصل رسائل البريد الإلكتروني الخاصة بكلمات المرور
</h2>

<p>
	عندما يحاول المستخدم التسجيل ضمن مدونتك أو تغيير كلمة مروره من خلال إدخال اسم المستخدم أو البريد الإلكتروني ثم يخبره ووردبريس أن كلمة المرور أرسلت إليه عبر البريد الإلكتروني والمشكلة التي تحصل أن البريد لا يصل أبدًا إلى ذلك المستخدم.
</p>

<p>
	الأسباب والحلول المقترحة، يستخدم ووردبريس دالة <code>mail()‎</code> القياسية والتي تستخدم sendmail حيث لا حاجة لمعلومات الحساب، وهذه ليست مشكلة عادةً إن كنت تستخدم خدمة استضافة لكن إن كنت تستخدم بريدك الخاص ولا تمتلك خادم SMTP عندها لن يُرسل البريد الإلكتروني. إن كنت تستخدم نظام لينكس عندها يجب أن يكون لديك postfix أو sendmail على خادمك. يتعين عليك ضبطهما فقط (ابحث ضمن شبكة الإنترنت عن كيفية عمل ذلك). إن كنت لا تريد خوض عناء ضبط خادم البريد الإلكتروني ضمن خادمك ربما تجد msmtp مفيدًا كونه يوفر طريقة سهلة وآمنة للحصول على بريد إلكتروني ضمن نظامك. تستطيع ضمن نظام ويندوز استخدام محاكي sendmail مثل <a href="http://glob.com.au/sendmail/" rel="external nofollow">Glob SendMail</a>.
</p>

<h3>
	خاص بمستضيف خادم ويندوز
</h3>

<p>
	تحقق من إعدادات Relay ضمن خادم SMTP الافتراضي وامنح وصولًا إلى 127.0.0.1 ثم اضبط إعدادات SMTP ضمن ملف php.ini على نفس عنوان IP، واضبط أيضًا smtp_port إلى 25.
</p>

<h3>
	تأكد من استخدام عنوان استقبال صحيح
</h3>

<p>
	افتراضيًا يملأ مرسل البريد الإلكتروني في ووردبريس حقل المرسل بالبريد الخاص بموقعك مثل wordpress@yourdomain.com وحقل الاسم بالاسم WordPress.
</p>

<p>
	لا مشكلة في هذا إن كان عنوان البريد الإلكتروني صالحًا، فعلى سبيل المثال إن كان بريدك الإلكتروني الحقيقي هو wordpress@yourdomain.com عندها يجب على مُضيف تمرير البريد الإلكتروني لاستقباله. سوف يُرسل بريدك غالبًا طالما أن النطاق yourdomain.com مُجهر لإرسال واستقبال البريد الإلكتروني حتى إن لم يكن wordpress صندوق بريد إلكتروني صالح، لكن ضبط بريدك الإلكتروني الحقيقي على أنه من: عنوان مثل wpgod@gmail.com ربما لن يُرسل البريد الإلكتروني لأن gmail.com ليس نطاقًا يديره خادم البريد الإلكتروني.
</p>

<h3>
	يعامل البريد على أنه بريد مهمل
</h3>

<p>
	يُمكن أن يُعاد توجيه رسائل البريد الإلكتروني الخاصة بك إلى مجلد البريد المُهمل والاحتمال الأسوأ أن يعتبر بريدًا يحتوي ملفات ضارة ويُحذف. يوجد بعض الإجراءات التي تستطيع اتخاذها لإقناع خوادم البريد الإلكتروني للمستقبلين أن رسالتك شرعية ويجب إيصالها للعنوان المطلوب.
</p>

<h3>
	إطار عمل سياسة المُرسل Sender Policy Framework
</h3>

<p>
	هذا هو الإجراء الأكثر استخدامًا لمعالجة رسائل البريد الإلكتروني المزعجة، وإن كنت تستخدم استضافة مشتركة فاحتمال كبير أن تكون استضافتك تستخدم إطار العمل هذا لخادم البريد الإلكتروني. اجعل موقعك على ووردبريس يُرسل لك بريدًا إلكترونيًا وابحث ضمن ترويسة الرسالة عن دليل يُشير أن الرسالة فُحصت من خلال SPF أي Sender Policy Framework. تستطيع جعل الموقع يُرسل لك بريدًا باستخدام رابط فقدان كلمة المرور، وإن لم يجتز البريد نظام تحقق SPF تستطيع ضبط إعداداته إن كنت تمتلك وصول لسجلات DNS ونطاق خادم البريد الإلكتروني الخاص بك. تحقق من مسار العودة للبريد الإلكتروني الذي أرسلته، فإن كان خادم البريد الإلكتروني الموجود ضمن القائمة يمتلك اسم نطاقك تستطيع ضبط معلومات SPF حيث تستطيع الاستعانة بعدة مقالات على الإنترنت حول كيفية عمل ذلك.
</p>

<h3>
	مفتاح النطاق المُحدد للبريد Domain Key Identified Mail
</h3>

<p>
	هذا النظام مُستخدم أيضًا حيث تستطيع استخدام كل من SPF وDKIM -اختصار إلى Domain Key Identified Mail- ضمن نفس الرسالة، وكما هو الحال في SPF تستطيع التحقق من كون خادم البريد الإلكتروني المستقبل تعرف على مفتاح نطاق مُضيفك من خلال فحص ترويسة البريد الإلكتروني. هناك احتمال كبير أن مفتاح التوقيع لم يُضف مما يُشير إلى أن المُضيف اختار ألا يستخدم هذا البروتوكول.
</p>

<p>
	إن كنت تستطيع تعديل سجلات DNS وخادم البريد الإلكتروني التابع لنطاقك عندها تستطيع ضبط معلومات DKIM بنفسك، وتستطيع البحث على الإنترنت عن كيفية عمل ذلك.
</p>

<h2>
	لم لا أستطيع رؤية منشوراتي؟
</h2>

<p>
	قد تواجه مشكلة بعدم رؤية المنشورات في موقع ووردبريس وكل ما تراه هو نعتذر، لا يوجد منشورات توافق معاييرك.
</p>

<p>
	يُمكن أن تُحل هذه المشكلة من خلال حذف ملفات التخزين وملفات تعريف الارتباط ضمن متصفحك.
</p>

<h2>
	ظهور تحذير بأن الترويسات أرسلت بالفعل
</h2>

<p>
	تظهر لك رسالة تحذير ضمن متصفحك تقول:
</p>

<pre class="ipsCode">Warning: Cannot modify header information - headers already sent by
(output started at
</pre>

<p>
	ومعناه أنه لا يمكن تعديل معلومات الترويسة، أرسلت الترويسات مسبقًا.
</p>

<p>
	يظهر هذا التحذير عادةً بسبب وجود فراغات أو أسطر فارغة أو ما شابهها قبل وسم <code>‎&lt;?php</code> أو بعد وسم الإغلاق <code>‎?&gt;‎</code> غالبًا ضمن ملف wp-config.php. ينطبق هذا الأمر على بعض الملفات الأخرى أيضًا لذا عليك التحقق من رسالة الخطأ كونها تذكر اسم الملف حيث ظهر هذا الخطأ (ألق نظرة على "تفسير رسالة الخطأ" في الأسفل). إن استبدال الملف الذي يتضمن المشكلة بنسخة من آخر نسخة احتياطية هي الفرصة الأكبر لك لحل هذه المشكلة لكن في حال استمرت المشكلة في الظهور يوجد عدة خطوات تستطيع اتباعها.
</p>

<p>
	في هذه الحالة اتبع الخطوات التالية:
</p>

<ol>
	<li>
		عليك تنزيل الملف المذكور في رسالة الخطأ باستخدام اتصال <a href="https://academy.hsoub.com/apps/web/wordpress/%D8%AF%D9%84%D9%8A%D9%84-%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-filezilla-%D9%88-phpmyadmin-%D9%84%D8%A5%D8%AF%D8%A7%D8%B1%D8%A9-%D9%85%D9%84%D9%81%D8%A7%D8%AA-%D9%88%D9%82%D9%88%D8%A7%D8%B9%D8%AF-%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA-%D9%85%D9%88%D9%82%D8%B9-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r367/" rel="">FTP</a> أو باستخدام مدير الملفات الذي توفره استضافتك.
	</li>
	<li>
		افتح هذا الملف باستخدام محرر نصي (لا تستخدم برنامج Microsoft Word أو ما يُشابهه بل استخدم Notepad أو BBEdit).
	</li>
	<li>
		تحقق أن المحارف الأولى ليست عبارة عن فراغات أو سطور فارغة.
	</li>
	<li>
		قبل حفظ الملف تحقق من كون ترميز الملف ليس UTF-8 BOM حيث تستطيع استخدام الترميز UTF-8 أو أي ترميز لا ينتهي باللاحقة BOM.
	</li>
</ol>

<p>
	للتحقق من نهاية الملف اتبع ما يلي:
</p>

<ol>
	<li>
		ضع مؤشر الفأرة بين إشارة ? وإشارة &lt;
	</li>
	<li>
		اضغط الآن على مفتاح الحذف ضمن حاسوبك. بالنسبة لمستخدمي ماك عليكم الانتباه أن زر الحذف Delete يحذف المحارف إلى يمين المؤشر.
	</li>
	<li>
		استمر بالضغط على هذا الزر.
	</li>
	<li>
		على الأقل لمدة 15 ثانية.
	</li>
	<li>
		اكتب المحرف &lt; واحفظ الملف دون الضغط على أي زر آخر.
	</li>
	<li>
		إن ضغطت على أي زر آخر سوف تعود هذه المشكلة للظهور.
	</li>
	<li>
		لا تُضف أي شيفرة برمجية ضمن كتل غير ضرورية بل أضفها ضمن كتلة PHP واحدة.
	</li>
</ol>

<p>
	مثال خاطئ:
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_3020_7" style=""><span class="pun">&lt;?</span><span class="pln">php some code</span><span class="pun">;</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln"> </span><span class="pun">&lt;?</span><span class="pln">php some other codes</span><span class="pun">;</span><span class="pln"> </span><span class="pun">?&gt;</span></pre>

<p>
	مثال صحيح:
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_3020_9" style=""><span class="pun">&lt;?</span><span class="pln">php code</span><span class="pun">;</span><span class="pln"> some other code</span><span class="pun">;</span><span class="pln"> </span><span class="pun">?&gt;</span></pre>

<p>
	ارفع الملف إلى الخادم بعد الانتهاء من تعديله وحفظه.
</p>

<p>
	<strong>ملاحظة</strong>: تحقق أيضًا من ترميز الملف، فإن كان الملف مُرمزًا باستخدام UTF-8 BOM عليك استخدام ترميز آخر لا يتضمن اللاحقة BOM.
</p>

<p>
	إن كانت رسالة الخطأ تتضمن ما يلي:
</p>

<pre class="ipsCode">Warning: Cannot modify header information - headers already sent by (output started at /path/blog/wp-config.php:34) in /path/blog/wp-login.php on line 42
</pre>

<p>
	هذا يعني أن المشكلة موجودة في السطر 34 للملف wp-config.php وليس السطر 42 للملف wp-login.php، ففي هذا المثال السطر 42 من الملف wp-login.php هو المتأثر بوجود مسافة بيضاء زائدة ضمن السطر 34 من ملف wp-config.php.
</p>

<p>
	إن كانت رسالة الخطأ تتضمن ما يلي:
</p>

<pre class="ipsCode">Warning: Cannot modify header information - headers already sent by (output started at /path/wp-admin/admin-header.php:8) in /path/wp-admin/post.php on line 569
</pre>

<p>
	عندها المشكلة موجودة في السطر 8 للملف admin-header.php وليس السطر 569 للملف post.php، ففي هذا المثال السطر 569 للملف post.php هو المتأثر بالمسافة البيضاء الموجودة ضمن السطر 8 من الملف admin-header.php.
</p>

<h2>
	لماذا لا يعمل زر "نشر" أو "حفظ كمسودة"؟
</h2>

<p>
	لحل هذه المشكلة أو مشكلة مشابهة عليك تعطيل إضافاتك واحدة تلو الأخرى حتى تعثر على مصدر المشكلة، وعادةً تظهر مثل هذه المشاكل بسبب محاولة إضافة أو أكثر استخدام نفس الموارد (مثل أدوات <a href="https://wiki.hsoub.com/jQuery" rel="external">jQuery</a> أو أدوات تعتمد على Java).
</p>

<p>
	ربما هناك مشكلة في متصفحك أيضًا، والحل الشائع هو حذف ملفات تخزين المتصفح، وهنا عليك الرجوع لتوثيق المتصفح الذي تستخدمه لمعرفة كيفية تنفيذ هذا.
</p>

<h2>
	كيفية إصلاح الخطأ 404 عند استخدام الروابط الدائم
</h2>

<p>
	إن ظهر الخطأ 404 عند استخدام <a href="https://academy.hsoub.com/apps/web/wordpress/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%A7%D9%84%D8%AA%D8%AF%D9%88%D9%8A%D9%86-%D9%88%D9%86%D8%B4%D8%B1-%D8%A7%D9%84%D9%85%D8%AF%D9%88%D9%86%D8%A7%D8%AA-%D9%88%D9%85%D8%A7-%D9%8A%D8%AA%D8%B9%D9%84%D9%82-%D8%A8%D9%87%D8%A7-%D8%B9%D8%A8%D8%B1-%D9%85%D9%86%D8%B5%D8%A9-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r416/" rel="">الروابط الدائمة</a> مثل اليوم والاسم ضمن <a href="https://academy.hsoub.com/apps/web/wordpress/%D8%AF%D9%84%D9%8A%D9%84-%D9%86%D9%82%D9%84-%D9%85%D9%88%D9%82%D8%B9-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-%D9%88%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%A7%D9%84%D8%AA%D8%B9%D8%A7%D9%85%D9%84-%D9%85%D8%B9-%D8%B5%D9%81%D8%AD%D8%A9-%D8%A5%D8%B9%D8%AF%D8%A7%D8%AF%D8%A7%D8%AA-%D8%A7%D9%84%D8%B1%D9%88%D8%A7%D8%A8%D8%B7-%D8%A7%D9%84%D8%AB%D8%A7%D8%A8%D8%AA%D8%A9-r417/" rel="">نافذة الروابط الدائمة</a> في قسم <a href="https://academy.hsoub.com/apps/web/wordpress/%D8%B4%D8%B1%D8%AD-%D9%85%D9%81%D8%B5%D9%84-%D9%84%D8%B5%D9%81%D8%AD%D8%A7%D8%AA-%D8%A7%D9%84%D8%A5%D8%AF%D8%A7%D8%B1%D8%A9-%D9%88%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%A7%D9%84%D8%AA%D8%AD%D9%83%D9%85-%D8%A7%D9%84%D9%83%D8%A7%D9%85%D9%84-%D8%A8%D9%85%D9%88%D9%82%D8%B9-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r399/" rel="">الإعدادات</a> للوحة تحكم ووردبريس فهذا ربما لأن وحدة mod_rewrite غير نشطة أو غير مثبتة، والحل يكون بتفعيل هذه الوحدة لخادم <a href="https://academy.hsoub.com/devops/servers/web/apache/%D8%AA%D8%AB%D8%A8%D9%8A%D8%AA-%D9%88%D8%B6%D8%A8%D8%B7-%D9%88%D8%AD%D8%AF%D8%A7%D8%AA-%D8%A3%D8%A8%D8%A7%D8%AA%D8%B4%D9%8A-%D8%B9%D9%84%D9%89-%D8%A3%D9%88%D8%A8%D9%86%D8%AA%D9%88-r192/" rel="">أباتشي Apache</a>. تحقق من ملف apache\conf\httpd.conf وابحث عن السطر التالي:
</p>

<pre class="ipsCode"># LoadModule rewrite_module modules/mod_rewrite.so 
</pre>

<p>
	واحذف إشارة # في بداية السطر ثم أوقف خادم أباتشي Apache وأعد تشغيله.
</p>

<p>
	<strong>ملاحظة</strong>: ربما سوف تحتاج للتواصل مع مزود الاستضافة لتفعيل وضع mod_rewrite.
</p>

<p>
	ألق نظرة على <a href="https://academy.hsoub.com/programming/php/wordpress/%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A7%D9%84%D8%B1%D9%88%D8%A7%D8%A8%D8%B7-%D8%A7%D9%84%D8%AF%D8%A7%D8%A6%D9%85%D8%A9-%D9%81%D9%8A-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r1343/" rel="">استخدام الروابط الدائمة</a>.
</p>

<h2>
	لماذا حساب المدير لا يملك صلاحيات تعديل المنشورات كمستخدم مؤلف؟
</h2>

<p>
	لا تعلم ما سبب هذه المشكلة بالضبط إذًا عليك اتباع أحد الطريقتين التاليتين لمحاولة حل المشكلة.
</p>

<p>
	تحل هذه الخطوات هذه المشكلة عادةً:
</p>

<ol>
	<li>
		أنشئ حساب مدير جديد (مثل newadmin) برتبة مدير.
	</li>
	<li>
		سجل دخول على أنك المستخدم newadmin
	</li>
	<li>
		خفض رتبة المدير السابق admin لمشترك واحفظ التغييرات.
	</li>
	<li>
		أعد رفع مرتبة المدير السابق admin إلى مدير واحفظ التغييرات.
	</li>
	<li>
		سجل دخول بحساب المدير القديم.
	</li>
</ol>

<p>
	إن لم تعمل الطريقة السابقة جرب الطريقة التالية:
</p>

<ol>
	<li>
		أنشئ اسم مستخدم جديد (مثل newadmin) برتبة مدير.
	</li>
	<li>
		سجل دخول على أنك المستخدم newadmin
	</li>
	<li>
		احذف حساب المدير السابق وعيين أي منشورات للمدير الجديد newadmin
	</li>
	<li>
		أنشئ حساب admin برتبة مدير
	</li>
	<li>
		سجل دخول بحساب المستخدم admin
	</li>
	<li>
		احذف المستخدم newadmin وعيّن المنشورات للمستخدم admin
	</li>
</ol>

<p>
	قد تواجه مشكلة في هذا الصدد أيضًا، وهي عرض اسم خاطئ للمؤلف ضمن منشور على المدونة؟، وحل هذه المشكلة هو نفسه الحل المذكور للتو تمامًا.
</p>

<p>
	إن واجهتك أي مشكلة أخرى لم تجد حلًا لها هنا أو استعصت عليك إحدى المشاكل سابقة الذكر، فيمكنك نشرها في قسم <a href="https://academy.hsoub.com/questions/c3-programming/" rel="">الأسئلة والأجوبة</a> في أكاديمية حسوب لطلب المساعدة والدعم، ويمكنك أيضًا طلب المساعدة من مجتمع <a href="https://io.hsoub.com/" rel="external">حسوب IO</a> التقني. ترجمة -وبتصرف- للمقال <a href="https://wordpress.org/support/article/faq-troubleshooting/" rel="external nofollow">FAQ Troubleshooting</a> من موقع <a href="https://wordpress.org/" rel="external nofollow">ووردبريس</a>.
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
	<li>
		<a href="https://academy.hsoub.com/wordpress/" rel="">تعلم ووردبريس</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/apps/web/wordpress/%D8%A7%D9%83%D8%AA%D8%B4%D8%A7%D9%81-%D9%88%D8%A5%D8%B5%D9%84%D8%A7%D8%AD-%D8%A3%D8%AE%D8%B7%D8%A7%D8%A1-%D8%B4%D8%A7%D8%B4%D8%A9-%D8%A7%D9%84%D9%85%D9%88%D8%AA-%D8%A7%D9%84%D8%A8%D9%8A%D8%B6%D8%A7%D8%A1-%D9%81%D9%8A-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r135/" rel="">اكتشاف وإصلاح أخطاء شاشة الموت البيضاء في ووردبريس</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/apps/web/wordpress/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%A5%D8%B5%D9%84%D8%A7%D8%AD-%D8%A7%D9%84%D8%AE%D8%B7%D8%A3-502-bad-gateway-%D9%81%D9%8A-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r565/" rel="">كيفية إصلاح الخطأ 502 Bad Gateway في ووردبريس</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/php/wordpress/%D8%AA%D8%B9%D8%A7%D8%B1%D8%B6-%D8%A5%D8%B6%D8%A7%D9%81%D8%A7%D8%AA-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-%D9%83%D9%8A%D9%81-%D8%AA%D9%83%D8%AA%D8%B4%D9%81%D9%87%D8%A7-%D9%88%D9%85%D8%A7%D8%B0%D8%A7-%D8%AA%D9%81%D8%B9%D9%84-%D8%AD%D9%8A%D8%A7%D9%84%D9%87%D8%A7-r727/" rel="">تعارض إضافات ووردبريس: كيف تكتشفها وماذا تفعل حيالها</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/apps/web/wordpress/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D9%85%D8%AF%D9%82%D9%82-%D8%AE%D8%B1%D9%8A%D8%B7%D8%A9-%D8%A7%D9%84%D9%85%D9%88%D9%82%D8%B9-%D9%84%D8%A7%D8%B3%D8%AA%D9%83%D8%B4%D8%A7%D9%81-%D8%A7%D9%84%D8%A3%D8%AE%D8%B7%D8%A7%D8%A1-%D9%88%D8%A5%D8%B5%D9%84%D8%A7%D8%AD%D9%87%D8%A7-%D9%81%D9%8A-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D8%B3-r767/" rel="">كيفية استخدام مدقق خريطة الموقع لاستكشاف الأخطاء وإصلاحها في ووردبرس</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">1695</guid><pubDate>Fri, 30 Sep 2022 16:00:00 +0000</pubDate></item><item><title>&#x623;&#x62E;&#x637;&#x627;&#x621; &#x634;&#x627;&#x626;&#x639;&#x629; &#x641;&#x64A; &#x648;&#x648;&#x631;&#x62F;&#x628;&#x631;&#x64A;&#x633; &#x648;&#x643;&#x64A;&#x641;&#x64A;&#x629; &#x62D;&#x644;&#x647;&#x627;</title><link>https://academy.hsoub.com/programming/php/wordpress/%D8%A3%D8%AE%D8%B7%D8%A7%D8%A1-%D8%B4%D8%A7%D8%A6%D8%B9%D8%A9-%D9%81%D9%8A-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-%D9%88%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%AD%D9%84%D9%87%D8%A7-r1694/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2022_08/6309c8b51f004_-----.png.978584f81e1dbbb9cc8dc716fdf39af8.png" /></p>
<p>
	لا تخف إن ظهر لك رسالة خطأ من ووردبريس أو شاشة بيضاء، فلا بد أن شخصًا ما واجه نفس الأمر ووجد حلًا له. يُلخص هذا المقال قائمة بأكثر الأخطاء الشائعة في ووردبريس التي واجهها مستخدمو ووردبريس، كما توفر نقطة بداية توجه نحو حل هذه الأخطاء.
</p>

<h2>
	شاشة الموت البيضاء
</h2>

<p>
	يُمكن أن تؤدي أخطاء PHP وأخطاء قاعدة البيانات لظهور شاشة بيضاء فارغة لا تتضمن أي معلومات والمعروفة ضمن مجتمع ووردبريس بشاشة الموت البيضاء. يوجد عدة أسباب تؤدي لظهور هذه الشاشة البيضاء سوف أذكرها قبل التطرق للإجراءات التي تستطيع اتباعها لحل هذه المشكلة.
</p>

<ul>
	<li>
		<strong>تُسبب أحد الإضافات مشاكل عدم توافقية.</strong> إن كنت تستطيع الوصول <a href="https://academy.hsoub.com/apps/web/wordpress/%D9%84%D9%85%D8%AD%D8%A9-%D8%B9%D9%86-%D9%84%D9%88%D8%AD%D8%A9-%D8%AA%D8%AD%D9%83%D9%85-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r394/" rel="">للوحة تحكم المدير</a> عليك أن تُجرب تعطيل جميع الإضافات ثم أعد تفعيلها واحدة تلو الأخرى. إن كنت لا تستطيع الوصول للوحة تحكم المدير عليك الدخول للموقع باستخدام اتصال <a href="https://academy.hsoub.com/apps/web/wordpress/%D8%AF%D9%84%D9%8A%D9%84-%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-filezilla-%D9%88-phpmyadmin-%D9%84%D8%A5%D8%AF%D8%A7%D8%B1%D8%A9-%D9%85%D9%84%D9%81%D8%A7%D8%AA-%D9%88%D9%82%D9%88%D8%A7%D8%B9%D8%AF-%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA-%D9%85%D9%88%D9%82%D8%B9-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r367//" rel="">FTP</a> ثم تحديد موقع المجلد wp-content/plugins وإعادة تسميته إلى plugins_old مثلًا. هذا سوف يُعطل جميع الإضافات، وتستطيع قراءة المزيد عن طريقة تعطيل الإضافات يدويًا في <a href="https://academy.hsoub.com/programming/php/wordpress/%D8%A7%D9%84%D8%A3%D8%B3%D8%A6%D9%84%D8%A9-%D8%A7%D9%84%D8%B4%D8%A7%D8%A6%D8%B9%D8%A9-%D8%AD%D9%88%D9%84-%D8%A5%D8%B5%D9%84%D8%A7%D8%AD-%D8%A7%D9%84%D8%A3%D8%AE%D8%B7%D8%A7%D8%A1-%D9%81%D9%8A-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r1695/" rel="">حل مشاكل الأسئلة المتكررة</a>.
	</li>
	<li>
		<strong>يُمكن أن يُسبب القالب الذي تستخدمه هذه المشكلة</strong>: هذا السبب مُرجح إن واجهتك مشكلة الصفحة البيضاء مباشرةً بعد تفعيل قالب جديد أو بعد إنشاء موقع جديد ضمن شبكة ووردبريس. ادخل للوحة تحكم ووردبريس وفعّل قالب ووردبريس الافتراضي (مثلًا قالب Twenty Seventeen). إن كنت لا تستطيع الدخول للوحة تحكم ووردبريس عندها عليك الوصول لموقعك باستخدام اتصال FTP والتوجه للمجلد /wp-content/themes/ ثم إعادة تسمية مجلد القالب الفعّال.
	</li>
</ul>

<p>
	توفر ميزة <a href="https://academy.hsoub.com/programming/php/wordpress/%D8%AA%D8%B9%D8%AF%D9%8A%D9%84-%D9%85%D9%84%D9%81-wp-configphp-%D9%84%D8%B6%D8%A8%D8%B7-%D8%A5%D8%B9%D8%AF%D8%A7%D8%AF%D8%A7%D8%AA-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r1252/" rel="">إصلاح الأخطاء</a> بعض المعلومات الإضافية.
</p>

<h2>
	خطأ الخادم الداخلي Internal Server Error
</h2>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="106504" href="https://academy.hsoub.com/uploads/monthly_2022_08/001_internalservererror2.jpg.b705a61f9dc21326b6c33961e40d539d.jpg" rel="" data-fileext="jpg"><img alt="001_internalservererror2.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="106504" data-unique="jrt83p78s" src="https://academy.hsoub.com/uploads/monthly_2022_08/001_internalservererror2.jpg.b705a61f9dc21326b6c33961e40d539d.jpg"></a>
</p>

<p>
	يوجد مجموعة من الأسباب التي تؤدي لحصول خطأ خادم داخلي، إليك بعض الخطوات التي يُمكن أن تحل هذه المشكلة.
</p>

<ul>
	<li>
		إن المشكلة الأكثر تكرارًا هي ملف ‎.htaccess تالف. عليك الدخول للمسار الرئيسي للموقع باستخدام FTP وإعادة تسمية ملف htaccess للاسم htaccess_old ثم حاول الدخول لموقعك مرة أخرى لترى إن حُلّت المشكلة وفي حال عاد الموقع للعمل عليك ألا تنسى التوجه إلى تبويب <a href="https://academy.hsoub.com/programming/php/wordpress/%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A7%D9%84%D8%B1%D9%88%D8%A7%D8%A8%D8%B7-%D8%A7%D9%84%D8%AF%D8%A7%D8%A6%D9%85%D8%A9-%D9%81%D9%8A-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r1343/" rel="">الروابط الدائمة</a> في قسم <a href="https://academy.hsoub.com/apps/web/wordpress/%D8%B4%D8%B1%D8%AD-%D9%85%D9%81%D8%B5%D9%84-%D9%84%D8%B5%D9%81%D8%AD%D8%A7%D8%AA-%D8%A7%D9%84%D8%A5%D8%AF%D8%A7%D8%B1%D8%A9-%D9%88%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%A7%D9%84%D8%AA%D8%AD%D9%83%D9%85-%D8%A7%D9%84%D9%83%D8%A7%D9%85%D9%84-%D8%A8%D9%85%D9%88%D9%82%D8%B9-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r399/" rel="">الإعدادات</a> لتهيئة <a href="https://academy.hsoub.com/programming/php/wordpress/%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A7%D9%84%D8%B1%D9%88%D8%A7%D8%A8%D8%B7-%D8%A7%D9%84%D8%AF%D8%A7%D8%A6%D9%85%D8%A9-%D9%81%D9%8A-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r1343/" rel="">الروابط الدائمة</a> وإنشاء ملف htaccess جديد لك.
	</li>
	<li>
		جرب تعطيل جميع الإضافات لترى إن كان سبب المشكلة هو أحد الإضافات، وإن كنت غير قادر على الوصول للوحة تحكم ووردبريس عليك تعطيل الإضافات باستخدام اتصال FTP باتباع الخطوات التالية.
	</li>
	<li>
		غيّر القالب المستخدم لقالب ووردبريس الافتراضي (مثل قالب Twenty Seventeen) لإقصاء أي مشكلة مرتبطة بالقالب.
	</li>
	<li>
		ارفع <a href="https://academy.hsoub.com/programming/php/wordpress/%D8%AA%D8%B9%D8%AF%D9%8A%D9%84-%D9%85%D9%84%D9%81-wp-configphp-r1252/" rel="">حدود ذاكرة PHP</a>.
	</li>
	<li>
		جرب إعادة رفع مجلدي wp-admin وwp-includes من <a href="https://wordpress.org/download/" rel="external nofollow">تثبيت جديد لووردبريس</a>.
	</li>
</ul>

<h2>
	خطأ إنشاء اتصال بقاعدة البيانات
</h2>

<p>
	إن كنت تحصل على رسالة خطأ تفيد بوجود خطأ في إنشاء اتصال بقاعدة البيانات فهذا يعني وجود مشكلة بالاتصال بقاعدة البيانات الخاصة بموقعك وهناك عدة أسباب لهذا الخطأ. ما يلي هي الأسباب المُحتملة مع الحلول الخاصة بها.
</p>

<h3>
	معلومات غير صحيحة في ملف wp-config.php
</h3>

<p>
	يظهر خطأ إنشاء اتصال بقاعدة البيانات عادةً بسبب خطأ في ملف <a href="https://academy.hsoub.com/programming/php/wordpress/%D8%AA%D8%B9%D8%AF%D9%8A%D9%84-%D9%85%D9%84%D9%81-wp-configphp-r1252//" rel="">wp-config.php</a>، لذا عليك الدخول لهذا الملف باستخدام اتصال FTP والتأكد من أن المعلومات التالية صحيحة.
</p>

<ul>
	<li>
		اسم قاعدة البيانات
	</li>
	<li>
		اسم مستخدم قاعدة البيانات
	</li>
	<li>
		كلمة مرور قاعدة البيانات
	</li>
	<li>
		مُضيف قاعدة البيانات
	</li>
</ul>

<p>
	<span ipsnoautolink="true">تعلم </span>أكثر عن <a href="https://academy.hsoub.com/programming/php/wordpress/%D8%AA%D8%B9%D8%AF%D9%8A%D9%84-%D9%85%D9%84%D9%81-wp-configphp-r1252/" rel="">تحرير ملف wp-config.php</a>. 
</p>

<p>
	إن كنت واثقًا أن جميع المعلومات صحيحة، تستطيع <a href="https://academy.hsoub.com/programming/php/wordpress/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%AA%D8%AB%D8%A8%D9%8A%D8%AA-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r1248/" rel="">تجريب تهيئة كلمة مرور MySQL يدويًا</a>.
</p>

<h3>
	مشاكل ضمن الاستضافة
</h3>

<p>
	الخطوة التالية هي التواصل مع الاستضافة حيث يُمكن أن تسبب مشاكل الاستضافة التالية هذا الخطأ.
</p>

<ul>
	<li>
		استهلكت قاعدة البيانات المصادر المخصصة لها لذا أوقفت عن العمل.
	</li>
	<li>
		الخادم متوقف.
	</li>
</ul>

<p>
	تواصل مع مزود الاستضافة لمعرفة إن كان أي من الأسباب السابقة هو ما يؤدي لظهور رسالة خطأ إنشاء اتصال بقاعدة البيانات.
</p>

<h3>
	الموقع مُخترق
</h3>

<p>
	إن تأكدت خلو ملف wp-config.php من الأخطاء وتواصلت مع الاستضافة وتأكدت أيضًا من عدم وجود أي مشاكل لديهم، فمن المحتمل أن يكون موقعك تعرض للاختراق.
</p>

<p>
	تفحّص موقعك باستخدام <a href="http://sitecheck.sucuri.net/" rel="external nofollow">خدمة Sucuri</a> للتحقق من كونه غير مخترق، وإن كان مُخترقًا عليك الاطلاع على مقال <a href="https://academy.hsoub.com/apps/web/wordpress/%D8%A3%D8%B3%D8%A6%D9%84%D8%A9-%D9%85%D8%AA%D9%83%D8%B1%D8%B1%D8%A9-%D9%84%D8%A3%D8%B5%D8%AD%D8%A7%D8%A8-%D8%A7%D9%84%D9%85%D9%88%D8%A7%D9%82%D8%B9-%D8%A7%D9%84%D9%85%D8%AE%D8%AA%D8%B1%D9%82%D8%A9-r597/" rel="">موقعي تعرض للاختراق</a>.
</p>

<h2>
	فشل عملية الترقية التلقائية
</h2>

<p>
	يحدث في بعض الحالات أن تفشل ميزة ووردبريس للتحديث التلقائي حيث تتضمن الأعراض ما يلي.
</p>

<ul>
	<li>
		صفحة بيضاء فارغة لا تتضمن أي معلومات.
	</li>
	<li>
		تحذير يُشير أن التحديث فشل.
	</li>
	<li>
		رسالة خطأ من PHP.
	</li>
</ul>

<p>
	يُمكن أن تفشل ميزة ووردبريس للتحديث التلقائي بسبب مشكلة في الاتصال مع ملفات ووردبريس الرئيسية أو مشكلة باتصال الإنترنت عند إجراء التحديث أو صلاحيات ملف غير صحيحة.
</p>

<p>
	اطلع على مقال <a href="https://academy.hsoub.com/apps/web/wordpress/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%AA%D8%AD%D8%AF%D9%8A%D8%AB-%D9%86%D8%B8%D8%A7%D9%85-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-updating-wordpress-r390/" rel="">التحديث اليدوي</a> لتحديث ووردبريس يدويًا.
</p>

<h2>
	نفاد زمن الاتصال Connection Timed Out
</h2>

<p>
	يظهر خطأ نفاد زمن الاتصال عندما يحاول الموقع تنفيذ مهمات أكثر مما يستطيع الخادم عمله، وهذا شائع في الاستضافات المشتركة حيث تكون الذاكرة محدودة، وإليك بعض الأمور التي تستطيع تجريبها لحل المشكلة:
</p>

<ul>
	<li>
		<strong>تعطيل جميع الإضافات.</strong> إن حل تعطيل جميع الإضافات المشكلة على موقعك عليك تفعيلها واحدة تلو الأخرى لمعرفة أي منها هو سبب المشكلة، وإن كنت لا تستطيع الوصول للوحة تحكم ووردبريس اقرأ عن <a href="https://academy.hsoub.com/programming/php/wordpress/%D8%A7%D9%84%D8%A3%D8%B3%D8%A6%D9%84%D8%A9-%D8%A7%D9%84%D8%B4%D8%A7%D8%A6%D8%B9%D8%A9-%D8%AD%D9%88%D9%84-%D8%A5%D8%B5%D9%84%D8%A7%D8%AD-%D8%A7%D9%84%D8%A3%D8%AE%D8%B7%D8%A7%D8%A1-%D9%81%D9%8A-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r1695/" rel="">كيفية تعطيل الإضافات يدويًا</a>.
	</li>
	<li>
		<strong>استخدم قالب ووردبريس الافتراضي.</strong> هذه الخطوة تستبعد أي مشاكل مرتبطة بالقالب.
	</li>
	<li>
		<strong>ارفع <a href="https://academy.hsoub.com/programming/php/wordpress/%D8%AA%D8%B9%D8%AF%D9%8A%D9%84-%D9%85%D9%84%D9%81-wp-configphp-r1252/" rel="">حدود الذاكرة في ملف wp-config.php</a>.</strong> إن كنت تستخدم استضافة مشتركة، ربما عليك الطلب من مزود الاستضافة رفع حدود الذاكرة لك.
	</li>
	<li>
		<strong>ارفع زمن التنفيذ الأقصى ضمن ملف <a href="http://php.net/manual/en/ini.core.php" rel="external nofollow">php.ini</a></strong> هذا ليس ملفًا تابعًا لووردبريس لذا إن كنت لا تملك أي معلومات عن كيفية تعديله عليك التواصل مع مزود الاستضافة وطلب زيادة زمن التنفيذ الأقصى. ألق نظرة على التعليمات الآتية لزيادة زمن التنفيذ الأقصى.
	</li>
</ul>

<h2>
	وضع الصيانة بعد التحديث
</h2>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="106505" href="https://academy.hsoub.com/uploads/monthly_2022_08/002_maintenancemode1.jpg.81a1bcb5dbba0ae0adec43f1ee1458fe.jpg" rel="" data-fileext="jpg"><img alt="002_maintenancemode1.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="106505" data-unique="2svjrp3yt" src="https://academy.hsoub.com/uploads/monthly_2022_08/002_maintenancemode1.jpg.81a1bcb5dbba0ae0adec43f1ee1458fe.jpg"></a>
</p>

<p>
	يُثبت ووردبريس تلقائيًا ملف ‎.maintenance عند تحديث ووردبريس، وسوف تظهر لك رسالة تُخبرك بوجود صيانة للموقع وتطلب منك التحقق منه بعد فترة قصيرة لكن المشكلة عندما تنتهي عملية تحديث ووردبريس لكن تبقى هذه الرسالة عالقة والسبب هو أن ملف ‎.maintenance لم يُزل بطريقة صحيحة.
</p>

<p>
	لإزالة هذه الرسالة عليك اتباع ما يلي:
</p>

<ol>
	<li>
		الدخول لموقع ووردبريس باستخدام اتصال FTP.
	</li>
	<li>
		حذف ملف ‎.maintenance الذي تجده في المسار الرئيسي لموقع ووردبريس.
	</li>
</ol>

<h2>
	تُنفذ بعض التغييرات لكن لا شيء يحصل
</h2>

<p>
	إن كنت تُنفذ تغييرات في موقعك لكنك لا ترى أي تغيير ضمن المتصفح، ربما عليك حذف ملفات تخزين المتصفح، إذ يعمل متصفحك على تخزين معلومات عن المواقع التي زرتها، فهذا يجعل عملية تحميل الموقع أسرع عند زيارته من جديد لأن المتصفح لن يحتاج لتحميل الملفات المُخزنة على حاسوبك.
</p>

<p>
	إن نفذت أي تغييرات على موقعك لكن المتصفح يعتقد أنها غير مهمة، فهذا سوف يؤدي لتحميل الملفات من الملفات المخزنة القديمة ضمن المتصفح وبالتالي لن تظهر لك التغييرات. لإصلاح هذه المشكلة عليك تفريغ ملفات التخزين المؤقت للمتصفح أو إغلاق النافذة وفتح الرابط من جديد.
</p>

<h2>
	الروابط الدائمة وتعطل الصور
</h2>

<p>
	إن كنت تعاني من ظهور صفحة الخطأ 404 مع <a href="https://academy.hsoub.com/programming/php/wordpress/%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A7%D9%84%D8%B1%D9%88%D8%A7%D8%A8%D8%B7-%D8%A7%D9%84%D8%AF%D8%A7%D8%A6%D9%85%D8%A9-%D9%81%D9%8A-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r1343" rel="">الروابط الدائمة</a> الجميلة والشاشة البيضاء عند تحميل الصور فهذا ربما يُشير إلى أن الوضع mod_rewrite غير مُفعّل ضمن خادم Apache افتراضيًا، إذ هذا الوضع عبارة عن وحدة إضافية لخادم Apache تسمح لك بإعادة كتابة الروابط بسرعة، وهي ما تحتاجه لجعل الروابط الدائمة الجميلة تعمل.
</p>

<p>
	غالبًا ما تظهر هذه المشكلة في شبكة <a href="https://academy.hsoub.com/apps/web/wordpress/wordpress-multisite/%D8%AA%D8%AB%D8%A8%D9%8A%D8%AA-%D8%B9%D8%AF%D8%A9-%D9%85%D9%88%D8%A7%D9%82%D8%B9-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-%D9%88%D8%B6%D8%A8%D8%B7-%D9%82%D9%88%D8%A7%D8%B9%D8%AF-%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA%D9%87%D8%A7-r430/" rel="">ووردبريس متعدد المواقع</a> لكن يمكن أن تحصل أيضًا في الاستضافات المشتركة أو بعد <a href="https://academy.hsoub.com/apps/web/wordpress/%D8%AF%D9%84%D9%8A%D9%84-%D9%86%D9%82%D9%84-%D9%85%D9%88%D9%82%D8%B9-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-%D9%88%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%A7%D9%84%D8%AA%D8%B9%D8%A7%D9%85%D9%84-%D9%85%D8%B9-%D8%B5%D9%81%D8%AD%D8%A9-%D8%A5%D8%B9%D8%AF%D8%A7%D8%AF%D8%A7%D8%AA-%D8%A7%D9%84%D8%B1%D9%88%D8%A7%D8%A8%D8%B7-%D8%A7%D9%84%D8%AB%D8%A7%D8%A8%D8%AA%D8%A9-r417/" rel="">نقل الموقع لاستضافة جديدة</a>.
</p>

<p>
	تستطيع تهيئة الروابط الدائمة من خلال التوجه إلى تبويب الروابط الدائمة ضمن قسم الإعدادات، وإن لم يعمل هذا الخيار عليك تعديل ملف ‎.htaccess يدويًا.
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_6619_6" style=""><span class="com"># BEGIN WordPress</span><span class="pln">
</span><span class="pun">&lt;</span><span class="typ">IfModule</span><span class="pln"> mod_rewrite</span><span class="pun">.</span><span class="pln">c</span><span class="pun">&gt;</span><span class="pln">
</span><span class="typ">RewriteEngine</span><span class="pln"> </span><span class="typ">On</span><span class="pln">
</span><span class="typ">RewriteBase</span><span class="pln"> </span><span class="pun">/</span><span class="pln">
</span><span class="typ">RewriteRule</span><span class="pln"> </span><span class="pun">^</span><span class="pln">index\.php$ </span><span class="pun">-</span><span class="pln"> </span><span class="pun">[</span><span class="pln">L</span><span class="pun">]</span><span class="pln">
</span><span class="typ">RewriteCond</span><span class="pln"> </span><span class="pun">%{</span><span class="pln">REQUEST_FILENAME</span><span class="pun">}</span><span class="pln"> </span><span class="pun">!-</span><span class="pln">f
</span><span class="typ">RewriteCond</span><span class="pln"> </span><span class="pun">%{</span><span class="pln">REQUEST_FILENAME</span><span class="pun">}</span><span class="pln"> </span><span class="pun">!-</span><span class="pln">d
</span><span class="typ">RewriteRule</span><span class="pln"> </span><span class="pun">.</span><span class="pln"> </span><span class="pun">/</span><span class="pln">index</span><span class="pun">.</span><span class="pln">php </span><span class="pun">[</span><span class="pln">L</span><span class="pun">]</span><span class="pln">
</span><span class="pun">&lt;/</span><span class="typ">IfModule</span><span class="pun">&gt;</span><span class="pln">
</span><span class="com"># END WordPress</span></pre>

<p>
	إن لم تملك خبرة في تعديل ملف ‎.htaccess عليك التواصل مع مزود الاستضافة وطلب تشغيل قاعدة mod_rewrite حيث تستطيع الاطلاع على مزيد من المعلومات في مقال <a href="https://academy.hsoub.com/programming/php/wordpress/%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A7%D9%84%D8%B1%D9%88%D8%A7%D8%A8%D8%B7-%D8%A7%D9%84%D8%AF%D8%A7%D8%A6%D9%85%D8%A9-%D9%81%D9%8A-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r1343/" rel="">استخدام الروابط الدائمة في ووردبريس</a>.
</p>

<h2>
	أخطاء 404 للمنشورات المُخصصة
</h2>

<p>
	يُحتمل أن يظهر لك الخطأ 404 ضمن <a href="https://academy.hsoub.com/apps/web/wordpress/%D9%86%D8%B8%D8%B1%D8%A9-%D9%85%D8%AA%D9%82%D8%AF%D9%85%D8%A9-%D8%B9%D9%84%D9%89-%D8%A7%D9%84%D9%85%D9%86%D8%B4%D9%88%D8%B1%D8%A7%D8%AA-%D9%81%D9%8A-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r787/" rel="">المنشورات المخصصة</a>، عندها عليك محاولة ما يلي:
</p>

<ul>
	<li>
		تأكد أنه لا يوجد أي من صفحاتك الفردية والمنشورات المخصصة يحمل نفس الاسم، وإن وجد عليك إعادة تسمية الصفحة مع <a href="https://academy.hsoub.com/questions/16939-%D9%85%D8%A7-%D9%87%D9%88-slug-%D9%81%D9%8A-%D8%AC%D8%A7%D9%86%D8%BA%D9%88-django%D8%9F-%D9%88%D9%85%D8%AA%D9%89-%D9%8A%D8%B3%D8%AA%D8%AE%D8%AF%D9%85%D8%9F/" rel="">الاسم اللطيف slug</a> لها (اسم عنوان صالح).
	</li>
	<li>
		ادخل للوحة تحكم ووردبريس وتوجه إلى الروابط الدائمة ضمن الإعدادات ثم اختر الروابط الدائمة الافتراضية واضغط على <strong>حفظ</strong>، ثم أعد اختيار الروابط الدائمة التي تريد، فهذا سوف يزيل قواعد إعادة الكتابة ويحل المشكلة.
	</li>
</ul>

<h2>
	رسائل خطأ محددة
</h2>

<p>
	يوجد مجموعة من الأخطاء المختلفة التي سوف تظهر ضمن سجلات الخطأ، وللوصول لهذه السجلات عليك تفعيل <a href="https://academy.hsoub.com/programming/php/wordpress/%D8%AA%D8%B9%D8%AF%D9%8A%D9%84-%D9%85%D9%84%D9%81-wp-configphp-r1252/" rel="">نمط إصلاح الأخطاء</a> ثم تعيين موقع سجل الأخطاء عبر FTP، إذ سوف تُساعدك المعلومات التالية في فهم بعض رسائل الخطأ الشائعة.
</p>

<h3>
	أخطاء PHP
</h3>

<p>
	يوجد فيما يلي بعض رسائل أخطاء PHP الشائعة.
</p>

<h4>
	التحذيرات والأخطاء الجسيمة
</h4>

<blockquote class="ipsQuote" data-ipsquote="">
	<div class="ipsQuote_citation">
		اقتباس
	</div>

	<p data-gramm="false">
		Cannot modify header information - headers already sent
	</p>
</blockquote>

<p>
	هذه رسالة مفادها: "لا يمكن تعديل معلومات الترويسة - الترويسات أرسلت بالفعل" إن تلقيت تحذيرًا يفيد أن ووردبريس لا يستطيع تعديل معلومات الترويسة وأن الترويسات أرسلت، فهذا يعني عادةً وجود فراغات ومحارف قبل وسم البداية أو بعد وسم الإغلاق.
</p>

<p>
	إن واجهتك هذه المشكلة بعد أن ثبتت ووردبريس ربما السبب خطأ في الشيفرة البرمجية ضمن ملف wp-config.php، سوف تُساعدك التعليمات المذكورة في قسم "المشاكل الشائعة أثناء التثبيت" من مقال <a href="https://academy.hsoub.com/programming/php/wordpress/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%AA%D8%AB%D8%A8%D9%8A%D8%AA-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r1248/" rel="">كيفية تثبيت ووردبريس</a>.
</p>

<blockquote class="ipsQuote" data-ipsquote="">
	<div class="ipsQuote_citation">
		اقتباس
	</div>

	<p data-gramm="false">
		Call to undefined function
	</p>
</blockquote>

<p>
	هذه رسالة خطأ مفادها: "استدعاء دالة غير معرفة".
</p>

<p>
	إن ظهور هذا الخطأ ربما يعني أن إضافة ووردبريس تحاول العثور على ملف أو بيانات غير موجودة أو لا يمكن الوصول لها ضمن الشيفرة البرمجية، وتتضمن أسباب هذا الخطأ ما يلي:
</p>

<ul>
	<li>
		خطأ عند محاولة التثبيت التلقائي أو التحديث التلقائي لإضافة، <a href="https://academy.hsoub.com/programming/php/wordpress/%D8%A5%D8%AF%D8%A7%D8%B1%D8%A9-%D8%A7%D9%84%D8%A5%D8%B6%D8%A7%D9%81%D8%A7%D8%AA-%D9%81%D9%8A-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r1224/" rel="">جرب تثبيت أو تحديث الإضافة يدويًا</a>.
	</li>
	<li>
		خطأ عند محاولة التثبيت التلقائي لقالب أو التحديث التلقائي له، <a href="https://academy.hsoub.com/programming/php/wordpress/%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D9%82%D9%88%D8%A7%D9%84%D8%A8-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r1223/" rel="">جرب تثبيت أو تحديث القالب يدويًا</a>.
	</li>
	<li>
		ربما تستخدم <a href="https://academy.hsoub.com/programming/php/wordpress/%D8%A5%D8%AF%D8%A7%D8%B1%D8%A9-%D8%A7%D9%84%D8%A5%D8%B6%D8%A7%D9%81%D8%A7%D8%AA-%D9%81%D9%8A-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r1224/" rel="">إضافة ووردبريس غير متوافقة</a> أو قالب غير متوافق، وهذا يمكن أن يحصل مع الإصدارات القديمة من ووردبريس وإضافة ووردبريس جديدة أو إن كنت تحاول استخدام إضافة ووردبريس متعدد المواقع مع تثبيت ووردبريس لموقع وحيد، لذا عليك تحديث ووردبريس لحل هذه المشكلة.
	</li>
	<li>
		ربما تحاول استدعاء دالة غير موجودة، لذا عليك التحقق من ملف functions.php إن تضمن على أخطاء كتابية.
	</li>
</ul>

<p>
	جرب تعطيل إضافة ووردبريس أو تغيير قالب ووردبريس الذي سبب ظهور المشكلة، وإن كنت غير قادر على فعل ذلك من لوحة تحكم ووردبريس تستطيع تنفيذه من خلال اتصال FTP يدويًا.
</p>

<blockquote class="ipsQuote" data-ipsquote="">
	<div class="ipsQuote_citation">
		اقتباس
	</div>

	<p data-gramm="false">
		Allowed Memory Size Exhausted
	</p>
</blockquote>

<p>
	هذه رسالة خطأ مفادها: "لقد استنفدت حجم الذاكرة المسموح به".
</p>

<p>
	يعني هذا الخطأ أن تثبيت ووردبريس لا يمتلك ذاكرة كافية لتنفيذ ما تريد، تستطيع تجريب الخطوات التالية:
</p>

<ul>
	<li>
		رفع حدود الذكرة في <a href="https://academy.hsoub.com/programming/php/wordpress/%D8%AA%D8%B9%D8%AF%D9%8A%D9%84-%D9%85%D9%84%D9%81-wp-configphp-r1252/" rel="">ملف wp-config.php</a>.
	</li>
	<li>
		رفع حدود الذاكرة من خلال تعديل ملف php.ini وهذا ملف غير موجود ضمن تثبيت ووردبريس لذا إن كنت غير خبير في استخدامه عليك التواصل مع الاستضافة لزيادة حدود الذاكرة.
	</li>
</ul>

<blockquote class="ipsQuote" data-ipsquote="">
	<div class="ipsQuote_citation">
		اقتباس
	</div>

	<p data-gramm="false">
		Maximum Execution Time Exceeded
	</p>
</blockquote>

<p>
	هذه رسالة خطأ مفادها: "لقد تجاوزت زمن التنفيذ الأقصى".
</p>

<p>
	ربما تظهر لك رسالة مثل "Maximum execution time of 30 seconds exceeded" أو "Maximum execution time of 60 seconds exceeded"، وهذا يعني أن أحد العمليات تستغرق وقتًا أطول لإكمال مهمتها وبالتالي فإنها تستنفذ الزمن المسموح لها. يوجد عدة طرق لإصلاح هذا الخطأ.
</p>

<p>
	الطريقة الأولى هي تعديل ملف ‎.htaccess، وقبل ذلك، تأكد من أخذ نسخة احتياطية منه قبل البدء بتحريره ثم أضف السطر التالي له.
</p>

<pre class="ipsCode">php_value max_execution_time 60
</pre>

<p>
	أما الطريقة الثانية فهي بتحرير ملف php.ini بإضافة السطر التالي فيه:
</p>

<pre class="ipsCode">max_execution_time = 60
</pre>

<p>
	إن كنت غير واثق من كيفية عمل هذه التغييرات أو إن كنت تستخدم استضافة مشتركة تمنعك من تنفيذ هذه التعديلات بنفسك عليك التواصل مع فريق الاستضافة وطلب رفع زمن التنفيذ الأقصى.
</p>

<h4>
	أخطاء التحليل
</h4>

<p>
	وتنقسم الأخطاء المدرجة هذا النوع إلى الأخطاء التالية:
</p>

<h5>
	أخطاء الصيغة SYNTAX ERROR
</h5>

<p>
	هذا يعني أنك أخطأت في مكان ما عند إنشاء بنية PHP فربما على سبيل المثال:
</p>

<ul>
	<li>
		نسيت وضع الفاصلة المنقوطة ; في نهاية التعليمة.
	</li>
	<li>
		استخدمت علامات اقتباس مائلة بدلًا من الصحيحة ".
	</li>
	<li>
		نسيت إغلاق قوس مفتوح
	</li>
</ul>

<p>
	يخبرك هذا الخطأ عندما يظهر أين وقع الخطأ وفي أي سطر تقريبًا (ربما لا يكون دقيقًا بحيث يعطيك السطر الذي وقع فيه الخطأ تمامًا لذا تحقق من السطور التالية أو السابقة له) ضمن الشيفرة البرمجية.
</p>

<h5>
	غير متوقع Unexpected
</h5>

<p>
	إن ظهر لك خطأ يتضمن "parse error: unexpected"، فهذا يعني عادةً أنك نسيت تضمين محرف ما، والمحارف الشائعة النسيان في مثل هذه الأخطاء هي:
</p>

<ul>
	<li>
		Unexpected '='‎: يعني أنك نسيت استخدام $ عند الإشارة إلى متغير.
	</li>
	<li>
		Unexpected '('‎: يعني أنك نسيت تضمين قوس البداية.‎‎
	</li>
	<li>
		Unexpected ')'‎: يعني أنك نسيت تضمين قوس النهاية (إغلاق قوس مفتوح).
	</li>
	<li>
		Unexpected 'T_String'‎: يعني أنك نسيت استخدام علامات التنصيص أو الفاصلة المنقوطة في نهاية السطر السابق.
	</li>
	<li>
		Unexpected 'T_ELSE'‎: يعني أنك استخدمت التعبير Else بدون وجود تعبير if سابق له.
	</li>
</ul>

<h5>
	استخدام ثابت غير معرف Use of an undefined constant
</h5>

<p>
	هذا الخطأ يعني أنك أغفلت محرفًا ما ويمكن أن يكون أحد المحارف التالية:
</p>

<ul>
	<li>
		إغفال المحرف $ عند الإشارة إلى متغير
	</li>
	<li>
		إغفال علامات التنصيص ضمن المصفوفة
	</li>
</ul>

<h3>
	أخطاء قاعدة البيانات
</h3>

<p>
	يمكن أن تظهر الأخطاء التالية بسبب أمور مرتبطة بقاعدة بيانات ووردبريس.
</p>

<h4>
	Error 13 - Cannot Create/Write to File
</h4>

<p>
	يوجد عدة عوامل تُسبب ظهور هذا الخطأ نعرض رسائل الخطأ المحتملة منها.
</p>

<blockquote class="ipsQuote" data-ipsquote="">
	<div class="ipsQuote_citation">
		اقتباس
	</div>

	<p data-gramm="false">
		MySQL cannot create a temporary file
	</p>
</blockquote>

<p>
	متغير MySQL الذي يُدعى tmpdir مضبوط لمسار لا يمكن الكتابة عليه عند استخدام PHP للوصول لقاعدة بيانات MySQL. للتحقق من هذا عليك الوصول إلى قاعدة البيانات MySQL ضمن لوحة الأوامر ثم كتابة <code>show variable</code>، وسوف تحصل على قائمة طويلة واحدة منها تتضمن tmpdir = /somedir/‎ (أيًا كانت إعداداتك).
</p>

<p>
	لحل هذه المشكلة عليك استبدال قيمة المتغير tmpdir ليُشير إلى مسار قابل للكتابة.
</p>

<ol>
	<li>
		ابحث عن الملف my.cnf حيث تجده في أنظمة لينكس ضمن المسار /etc/ أما في أنظمة ويندوز عليك البحث عن my.ini.
	</li>
	<li>
		عليك فتح هذا الملف عند العثور عليه باستخدام محرر نصي ثم ابحث عن قسم [mysqld].
	</li>
	<li>
		ضمن هذا القسم ابحث عن السطر tmpdir فإن كان هذا السطر موجودًا تعليق (أي يوجد # في بداية السطر) عليك حذف إشارة # وتعديل السطر ليتضمن tmpdir = /writeable/dir حيث أن ‎/writeable/dir هو مسار قابل للكتابة، ويستخدم البعض المسار ‎/tmp أو تستطيع استخدام ‎/var/tmp أو ‎/usr/tmp في لينكس أو C:/Windows/tmp في ويندوز.
	</li>
	<li>
		احفظ الملف.
	</li>
	<li>
		أغلق MySQL من خلال كتابة الأمر <code>mysqlshutdown -u -p shutdown</code>.
	</li>
	<li>
		شغّل MySQL من خلال التوجه إلى مسار MySQL وكتابة <code>‎./bin/safe_mysqld &amp;‎</code>. يكون مسار MySQL عادةً هو ‎/usr/local أو ‎/usr/‎ ضمن أنظمة لينكس.
	</li>
</ol>

<p>
	 
</p>

<blockquote class="ipsQuote" data-ipsquote="">
	<div class="ipsQuote_citation">
		اقتباس
	</div>

	<p data-gramm="false">
		The file permissions are incorrect
	</p>
</blockquote>

<p>
	هذه رسالة خطأ مفادها حصول خطأ في أذونات الملف، لذا عليك <a href="https://academy.hsoub.com/apps/web/wordpress/%D8%AA%D8%BA%D9%8A%D9%8A%D8%B1-%D8%B5%D9%84%D8%A7%D8%AD%D9%8A%D8%A7%D8%AA-%D8%A7%D9%84%D9%85%D9%84%D9%81-%D9%81%D9%8A-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r574/" rel="">تصحيح أذونات الملف</a>.
</p>

<p>
	إن لم تفهم أي مما سبق ولديك شخص يدير نظامك عندها عليك عرض ما سبق له وهو سوف يعلم ما يفعله.
</p>

<h4>
	CREATE Command Denied to User
</h4>

<p>
	يحدث هذا الخطأ عندما لا يمتلك المستخدم المُسند لقاعدة البيانات صلاحيات كافية لإجراء أمر ما أو إنشاء أعمدة وجداول ضمن قاعدة البيانات. تحتاج الدخول للوحة التحكم <a href="https://academy.hsoub.com/apps/web/wordpress/%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D9%84%D9%88%D8%AD%D8%A9-%D8%AA%D8%AD%D9%83%D9%85-cpanel-%D9%84%D8%AA%D8%AB%D8%A8%D9%8A%D8%AA-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r365/" rel="">cPanel</a> أو Plesk لإسناد صلاحيات كافية لمستخدم قاعدة البيانات.
</p>

<p>
	أو تستطيع إنشاء مستخدم جديد وإسناده لقاعدة البيانات ولا تنسى في هذه الحالة تحديث ملف wp-config.php.
</p>

<h4>
	Error 28
</h4>

<p>
	يمكن أن يظهر بسبب:
</p>

<ul>
	<li>
		لا يوجد لديك مساحة كافية ضمن المجلد ‎/tmp (حيث يوجد مسار tmpdir) أو
	</li>
	<li>
		يوجد لديك الكثير من الملفات في ‎/tmp (حتى عند وجود مساحة فارغة) أو
	</li>
	<li>
		أن مساحة ملفات التخزين المؤقت ضمن الخادم ممتلئة.
	</li>
</ul>

<p>
	هذا الخطأ مرتبط بMySQL ولا علاقة مباشرة له مع ووردبريس لذا عليك التواصل مع الاستضافة لحله. أخبر بعض المستخدمين أن تشغيل الأمر <code>repair table</code> أصلح المشكلة.
</p>

<h4>
	Error 145
</h4>

<p>
	يُشير هذا الخطأ إلى وجود جدول تالف ضمن قاعدة البيانات، لذا إن كنت لا تألف استخدام <a href="https://academy.hsoub.com/apps/web/wordpress/%D8%AF%D9%84%D9%8A%D9%84-%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-filezilla-%D9%84%D8%A5%D8%AF%D8%A7%D8%B1%D8%A9-%D9%85%D9%84%D9%81%D8%A7%D8%AA-%D9%85%D9%88%D9%82%D8%B9-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r367//" rel="">phpMyAdmin</a> تستطيع استخدام هذه التعليمات لإصلاح جداول قاعدة بيانات MySQL.
</p>

<p>
	عليك دومًا أخذ <a href="https://academy.hsoub.com/apps/web/wordpress/%D9%83%D9%8A%D9%81-%D8%AA%D9%86%D8%B3%D8%AE-%D9%82%D8%A7%D8%B9%D8%AF%D8%A9-%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA%D9%83-%D8%A7%D8%AD%D8%AA%D9%8A%D8%A7%D8%B7%D9%8A%D9%8B%D8%A7-%D9%81%D9%8A-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r366/" rel="">نسخة احتياطية عن قاعدة البيانات</a> قبل إجراء أي عملية عليها.
</p>

<p>
	إن لم تستخدم phpMyAdmin من قبل أو كنت غير معتاد على استعماله تستطيع التواصل مع الاستضافة وطلب تشغيل أوامر CHECK/REPAIR على قاعدة بياناتك.
</p>

<h4>
	Unknown Column
</h4>

<p>
	يُمكن أن يتسبب في هذا الخطأ عمود مفقود في قاعدة البيانات، فمثلًا إن حدثت ووردبريس ثم حاولت التحديث يدويًا مرة ثانية. لتحديث ووردبريس يدويًا ألق نظرة على <a href="https://academy.hsoub.com/apps/web/wordpress/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%AA%D8%AD%D8%AF%D9%8A%D8%AB-%D9%86%D8%B8%D8%A7%D9%85-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-updating-wordpress-r390/" rel="">مقال التحديث</a>.
</p>

<p>
	إن كنت شغلت استعلامًا في قاعدة البيانات عند ظهور هذا الخطأ فهذا يعني أنك تستخدم علامات تنصيص خاطئة لمحرف التعريف. يوفر <a href="http://stackoverflow.com/questions/1346209/unknown-column-in-field-list-error-on-mysql-update-query" rel="external nofollow">هذا السؤال على Stack Overflow المزيد من التفاصيل</a>، أيضًا تستطيع الاطلاع على <a href="http://dev.mysql.com/doc/refman/en/identifiers.html" rel="external nofollow">توثيق MySQL</a>.
</p>

<p>
	ترجمة -وبتصرف- للمقال <a href="https://wordpress.org/support/article/common-wordpress-errors/" rel="external nofollow">Common WordPress Errors</a> من موقع <a href="https://wordpress.org/" rel="external nofollow">ووردبريس</a>.
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
	<li>
		<a href="https://academy.hsoub.com/wordpress/" rel="">تعلم ووردبريس</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/apps/web/wordpress/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%A5%D8%B5%D9%84%D8%A7%D8%AD-%D8%A3%D8%AE%D8%B7%D8%A7%D8%A1-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r575/" rel="">كيفية إصلاح أخطاء ووردبريس</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/php/wordpress/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%AA%D9%86%D9%82%D9%8A%D8%AD-%D8%A3%D8%AE%D8%B7%D8%A7%D8%A1-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-%D8%A8%D8%AE%D8%B7%D9%88%D8%A7%D8%AA-%D8%A7%D8%AD%D8%AA%D8%B1%D8%A7%D9%81%D9%8A%D8%A9-r1275/" rel="">كيفية تنقيح أخطاء ووردبريس بخطوات احترافية</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/php/wordpress/%D8%A7%D9%84%D8%A3%D8%AE%D8%B7%D8%A7%D8%A1-%D8%A7%D9%84%D8%B9%D8%B4%D8%B1%D8%A9-%D8%A7%D9%84%D8%A3%D9%83%D8%AB%D8%B1-%D8%B4%D9%8A%D9%88%D8%B9%D9%8B%D8%A7-%D9%84%D8%AF%D9%89-%D9%85%D8%B7%D9%88%D8%B1%D9%8A-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r429/" rel="">الأخطاء العشرة الأكثر شيوعًا لدى مطوري ووردبريس</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/apps/web/wordpress/%D9%86%D8%B8%D8%B1%D8%A9-%D8%B9%D9%84%D9%89-%D9%86%D8%A7%D9%81%D8%B0%D8%A9-%D8%B5%D8%AD%D8%A9-%D9%85%D9%88%D9%82%D8%B9-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r573/" rel="">نظرة على نافذة صحة موقع ووردبريس</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">1694</guid><pubDate>Sat, 24 Sep 2022 16:07:00 +0000</pubDate></item><item><title>&#x643;&#x64A;&#x641;&#x64A;&#x629; &#x627;&#x633;&#x62A;&#x643;&#x634;&#x627;&#x641; &#x623;&#x62E;&#x637;&#x627;&#x621; &#x648;&#x648;&#x631;&#x62F;&#x628;&#x631;&#x64A;&#x633;</title><link>https://academy.hsoub.com/programming/php/wordpress/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%A7%D8%B3%D8%AA%D9%83%D8%B4%D8%A7%D9%81-%D8%A3%D8%AE%D8%B7%D8%A7%D8%A1-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r1693/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2022_08/6308e3045ae34_---.png.66cb124f52baebe68f784d279988d90a.png" /></p>
<p>
	استكشاف الأخطاء التي تظهر في شيفرة PHP وتنقيحها هي جزء من أي مشروع لكن ووردبريس يتضمن نظام استكشاف أخطاء خاص به مُصمم لتبسيط هذه العملية قدر الإمكان إضافةً إلى فرض معيار للشيفرة ضمن نواة ووردبريس والإضافات والقوالب. يشرح هذا المقال أدوات استكشاف الأخطاء المتنوعة في ووردبريس في محاولة لإصلاحها وتحسين شيفرتك ورفع جودتها.
</p>

<p>
	يُمكن استخدام هذه الخيارات لغير المبرمجين أو المستخدمين العاديين لعرض معلومات تفصيلية عن الأخطاء.
</p>

<h2>
	مثال عن ملف wp-config.php لاستكشاف الأخطاء
</h2>

<p>
	سوف تُسجل الشيفرة التالية إن أضفتها ضمن ملف <a href="https://academy.hsoub.com/programming/php/wordpress/%D8%AA%D8%B9%D8%AF%D9%8A%D9%84-%D9%85%D9%84%D9%81-wp-configphp-r1252/" rel="">wp-config.php</a> جميع الأخطاء والملاحظات والتحذيرات ضمن ملف يُدعى debug.log في مسار wp-content، كما أنها سوف تمنع الأخطاء من الظهور عند توليد صفحات موقعك.
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_403_6" style=""><span class="com">// Enable WP_DEBUG mode</span><span class="pln">
define</span><span class="pun">(</span><span class="pln"> </span><span class="str">'WP_DEBUG'</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">true</span><span class="pln"> </span><span class="pun">);</span><span class="pln">

</span><span class="com">// Enable Debug logging to the /wp-content/debug.log file</span><span class="pln">
define</span><span class="pun">(</span><span class="pln"> </span><span class="str">'WP_DEBUG_LOG'</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">true</span><span class="pln"> </span><span class="pun">);</span><span class="pln">

</span><span class="com">// Disable display of errors and warnings</span><span class="pln">
define</span><span class="pun">(</span><span class="pln"> </span><span class="str">'WP_DEBUG_DISPLAY'</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">false</span><span class="pln"> </span><span class="pun">);</span><span class="pln">
</span><span class="lit">@ini_set</span><span class="pun">(</span><span class="pln"> </span><span class="str">'display_errors'</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="pun">);</span><span class="pln">

</span><span class="com">// Use dev versions of core JS and CSS files (only needed if you are modifying these core files)</span><span class="pln">
define</span><span class="pun">(</span><span class="pln"> </span><span class="str">'SCRIPT_DEBUG'</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">true</span><span class="pln"> </span><span class="pun">);</span></pre>

<p>
	<strong>ملاحظة</strong>: عليك إضافة هذه الشيفرة قبل عبارة /* That's all, stop editing! Happy blogging. */ ضمن ملف wp-config.php.
</p>

<h2>
	وضع تنقيح الأخطاء WP_DEBUG
</h2>

<p>
	WP_DEBUG عبارة عن ثابت PHP (متغير شامل دائم) يُمكن استخدامه لتفعيل نمط تنقيح الأخطاء واستكشافها في ووردبريس، حيث تكون قيمته الافتراضية false وعادةً تُضبط للقيمة true ضمن الملف wp-config.php عند تطوير نسخ من ووردبريس.
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_403_8" style=""><span class="com">// هذا يفعل وضع تنقيح الأخطاء</span><span class="pln">
define</span><span class="pun">(</span><span class="pln"> </span><span class="str">'WP_DEBUG'</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">true</span><span class="pln"> </span><span class="pun">);</span></pre>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_403_10" style=""><span class="com">// هذا يعطل وضع تنقيح الأخطاء</span><span class="pln">
define</span><span class="pun">(</span><span class="pln"> </span><span class="str">'WP_DEBUG'</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">false</span><span class="pln"> </span><span class="pun">);</span></pre>

<p>
	<strong>ملاحظة</strong>: إن قيم true و false ضمن المثال غير مُحاطة بعلامة تنصيص ' لأنها قيمة منطقية، وإن ضبط الثوابت للقيمة 'false' سوف تُفسر على أنها true لأن علامتي التنصيص تحولها إلى سلسلة نصية بدلًا من أن تكون قيمة منطقية.
</p>

<p>
	لا يُنصح باستخدام وضع التنقيح WP_DEBUG أو أي أداة إصلاح أخطاء أخرى ضمن مواقع تعمل لأن الهدف من هذه الأوضاع استخدامها لاختبار الموقع محليًا وفي مراحل التطوير قبل نشره على الإنترنت.
</p>

<h3>
	أخطاء PHP وتحذيراتها
</h3>

<p>
	سوف تُعرض أخطاء PHP وتحذيراتها وملاحظاتها عند تفعيل الوضع WP_DEBUG، وهذا لتعديل السلوك الافتراضي للغة PHP الذي يعرض فقط الأخطاء الفادحة و/أو يعرض شاشة الموت البيضاء عند وجود أخطاء.
</p>

<p>
	إن عرض ملاحظات PHP وتحذيراتها عادةً يُفضي إلى رسائل خطأ لأمور لا تبدو أن فيها مشكلة لكنها لا تتبع استراتيجية معالجة صحيحة للبيانات ضمن PHP. يسهل إصلاح هذه التحذيرات عند التعرف على الشيفرة المسؤولة عنها وتصبح الشيفرة بعد تصحيحها أفضل وأقل عرضة للأخطاء بكثير ومن السهل صيانتها لاحقًا.
</p>

<h3>
	الدوال والوسائط المُهملة
</h3>

<p>
	عند تفعيل وضع التنقيح WP_DEBUG سوف تظهر ملاحظات عن الدوال والوسائط المهملة ضمن ووردبريس والمستخدمة ضمن موقعك. وهي دوال أو وسائط ضمن الدوال لم تُزل بعد من نواة شيفرتك لكن مخطط لها أن تُحذف في المستقبل القريب وعادةً تُشير ملاحظات الدوال المهملة لوجود دوال جديدة يجب أن تستخدمها بدلًا من القديمة المستعملة.
</p>

<h2>
	سجل الأخطاء WP_<em>DEBUG_</em>LOG
</h2>

<p>
	يُرافق سجل الأخطاء WP_DEBUG_LOG تفعيل نمط استكشاف الأخطاء WP_DEBUG الذي يُسجل جميع الأخطاء في ملف debug.log، وهذا مفيد إن أردت مراجعة الملاحظات لاحقًا أو تحتاج الاطلاع على ملاحظات فاتتك أو لم تظهر على الشاشة (مثلًا خلال طلب <a href="https://academy.hsoub.com/programming/javascript/jquery/%D9%85%D9%8F%D9%82%D8%AF%D9%91%D9%85%D8%A9-%D8%A5%D9%84%D9%89-ajax-%D9%88%D8%A7%D9%84%D9%83%D8%A7%D8%A6%D9%86%D8%A7%D8%AA-%D8%A7%D9%84%D9%85%D9%8F%D8%A4%D8%AC%D9%91%D9%84%D8%A9-deferred-objects-%D8%B9%D9%84%D9%89-jquery-r64/" rel="">AJAX</a> أو عند تشغيل wp-cron).
</p>

<p>
	انتبه إلى أن هذا الوضع يسمح لك بالكتابة على ملف السجل باستخدام دالة PHP المبينة ضمنه <code>error_log()‎</code> التي يُمكن الاستفادة منها عند تنقيح أخطاء أحداث AJAX. فعند ضبط WP_DEBUG_LOG للقيمة true يُحفظ السجل في ملف debug.log ضمن مسار wp-content في ملفات نظامك، وتستطيع اختيار مسار آخر لحفظ التسجيلات.
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_403_12" style=""><span class="pln">define</span><span class="pun">(</span><span class="pln"> </span><span class="str">'WP_DEBUG_LOG'</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">true</span><span class="pln"> </span><span class="pun">);</span><span class="pln">
</span><span class="pun">-</span><span class="kwd">or</span><span class="pun">-</span><span class="pln">
define</span><span class="pun">(</span><span class="pln"> </span><span class="str">'WP_DEBUG_LOG'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'/tmp/wp-errors.log'</span><span class="pln"> </span><span class="pun">);</span></pre>

<p>
	<strong>ملاحظة</strong>: لكي يعمل وضع التسجيل WP_DEBUG_LOG يجب تفعيل وضع التنقيح WP_DEBUG، وتذكر أنك تستطيع تعطيل وضع العرض WP_DEBUG_DISPLAY بشكل مستقل.
</p>

<h2>
	وضع عرض الأخطاء WP_<em>DEBUG_</em>DISPLAY
</h2>

<p>
	ثابت آخر يُرافق وضع التنقيح WP_DEBUG يتحكم بعرض أو عدم عرض الرسائل ضمن صفحات HTML والقيمة الافتراضية له هي true والتي تعرض الأخطاء والتحذيرات كما هي. تستطيع إخفاء هذه الأخطاء بضبط قيمة هذا الثابت إلى false، حيث يجب استخدام هذه القيمة بالتزامن مع وضع التسجيل WP_DEBUG_LOG لمراجعة الأخطاء لاحقًا.
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_403_16" style=""><span class="pln">define</span><span class="pun">(</span><span class="pln"> </span><span class="str">'WP_DEBUG_DISPLAY'</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">false</span><span class="pln"> </span><span class="pun">);</span></pre>

<p>
	<strong>ملاحظة</strong>: لكي يعمل وضع العرض WP_DEBUG_DISPLAY يجب تفعيل وضع التنقيح WP_DEBUG، وتذكر أنك تستطيع تعطيل وضع التسجيل WP_DEBUG_LOG بشكل مستقل.
</p>

<h2>
	تنقيح ملفات CSS و JavaScript عبر الوضع SCRIPT_DEBUG
</h2>

<p>
	يعد SCRIPT_DEBUG ثابتًا مهمًا أيضًا يعمل على إجبار ووردبريس استخدام إصدار التطوير dev من ملفات CSS وجافاسكريبت JavaScript بدلًا من إصدار الإنتاج المختصر منها، وهذا مفيد عند اختبار تعديلات معينة لملفات ‎.css أو ‎.js والقيمة الافتراضية لهذا الثابت هي false.
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_403_14" style=""><span class="pln">define</span><span class="pun">(</span><span class="pln"> </span><span class="str">'SCRIPT_DEBUG'</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">true</span><span class="pln"> </span><span class="pun">);</span></pre>

<h2>
	حفظ استعلامات قاعدة البيانات عبر SAVEQUERIES
</h2>

<p>
	يحفظ هذا الثابت عندما يحمل القيمة true جميع استعلامات قاعدة البيانات ضمن مصفوفة ويُمكن عرض هذه المصفوفة لتُساعدك على تحليل هذه الاستعلامات، حيث يُحفظ كل استعلام مع الزمن الذي استغرقه للتنفيذ وما هي الدالة التي استدعاها.
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_403_18" style=""><span class="pln">define</span><span class="pun">(</span><span class="pln"> </span><span class="str">'SAVEQUERIES'</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">true</span><span class="pln"> </span><span class="pun">);</span></pre>

<p>
	تُخزن المصفوفة ضمن المتغير العام <code>‎$wpdb-&gt;queries</code>.
</p>

<p>
	<strong>ملاحظة</strong>: يؤثر هذا على أداء الموقع لذلك عليك تعطيله عند انتهائك من البحث عن الأخطاء أو تحليل الاستعلامات.
</p>

<h2>
	استكشاف أخطاء الإضافات
</h2>

<p>
	يوجد العديد من <a href="https://wordpress.org/plugins/search.php?q=debug" rel="external nofollow">إضافات استكشاف الأخطاء</a> في ووردبريس والتي تعرض المزيد من المعلومات عن المكونات الداخلية سواء مكونات معينة أو عامة، وإليك بعض الأمثلة عنها:
</p>

<ul>
	<li>
		<a href="https://wordpress.org/plugins/query-monitor/" rel="external nofollow">Query Monitor</a>
	</li>
	<li>
		<a href="https://wordpress.org/plugins/debug-bar/" rel="external nofollow">Debug Bar</a>
	</li>
	<li>
		<a href="https://wordpress.org/plugins/log-deprecated-notices/" rel="external nofollow">Log Deprecated Notices</a>
	</li>
</ul>

<h2>
	استخدام المتصفح لتحليل أخطاء جافاسكريبت
</h2>

<p>
	إن كنت تواجه مشاكل مع وظائف موقعك التفاعلية، فهذا ربما بسبب أخطاء أو تعارض في لغة جافاسكريبت، فعلى سبيل المثال ربما قوائمك معطلة أو صناديق الوصف لا تستطيع سحبها أو زر إضافة الوسائط لا يعمل، ويُفضل معرفة ما هو خطأ جافا سكريبت لكي تتمكن من تحديد مشكلتك بالضبط ليتمكن المطور أو فريق الدعم لديك من مساعدتك آنذاك.
</p>

<p>
	سوف تتعرف في هذا القسم على كيفية تحليل مشاكل جافا سكريبت ضمن متصفحات مختلفة.
</p>

<h3>
	الخطوة الأولى: جرب أكثر من متصفح
</h3>

<p>
	عليك التأكد أن الخطأ هو خطأ جافاسكريبت وليس خطأ من متصفح، لذا تكون الخطوة الأولى هي تصفح الموقع من متصفح مختلف.
</p>

<ul>
	<li>
		إن لم تظهر المشكلة نفسها على الموقع في المتصفح الجديد عندها الخطأ ناتج عن المتصفح نفسه.
	</li>
	<li>
		إن ظهرت نفس المشكلة على المتصفح الجديد عندها لا يكون هذا الخطأ مرتبطًا بمتصفح واحد.
	</li>
</ul>

<p>
	سجل ملاحظة بأي المتصفحات تواجه مشكلة فيها، حيث تستطيع استخدام هذه المعلومات عند تقديم طلب دعم.
</p>

<h3>
	الخطوة الثانية: تفعيل وضع SCRIPT_DEBUG
</h3>

<p>
	عليك تفعيل استكشاف الأخطاء وتنقيحها من خلال فتح ملف wp-config.php وإضافة السطر التالي قبل عبارة "That’s all, stop editing! Happy blogging" كما تحدثنا في الأعلى.
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_403_20" style=""><span class="pln">define</span><span class="pun">(</span><span class="str">'SCRIPT_DEBUG'</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">);</span></pre>

<p>
	تحقق إن كنت ما تزال تواجه نفس المشكلة.
</p>

<ul>
	<li>
		<strong>حُلّت المشكلة</strong> - عطّل وضع اسكتشاف الأخطاء في الشيفرة البرمجية وأرسل تقريرًا بالمشكلة إلى فريق الدعم لتخبرهم أنك فعّلت اكتشاف أخطاء الشيفرة البرمجية وحُلّت المشكلة.
	</li>
	<li>
		<strong>ما زالت المشكلة موجودة</strong> - تابع الخطوة الثالثة.
	</li>
</ul>

<h3>
	الخطوة الثالثة: التشخيص
</h3>

<p>
	الآن وبما أنك تعرف المتصفحات التي تظهر عليها المشكلة تستطيع البدء بتشخيص المشكلة.
</p>

<h4>
	متصفح جوجل كروم ومتصفح Edge
</h4>

<p>
	أولًا، افتح <a href="https://academy.hsoub.com/programming/workflow/%D9%83%D9%8A%D9%81-%D8%AA%D8%B3%D8%AA%D8%AE%D8%AF%D9%85-%D8%A3%D8%AF%D9%88%D8%A7%D8%AA-%D8%A7%D9%84%D9%85%D8%B7%D9%88%D9%90%D9%91%D8%B1-devtools-%D9%81%D9%8A-chrome-r554/" rel="">أدوات المطور DevTools</a> بالضغط على الاختصار CTRL + Shift + J (في أنظمة ويندوز ولينكس وكروم OS) والاختصار Command + Option + J (في أجهزة ماك) للانتقال مباشرةً إلى لوحة منصة أدوات المطور لجوجل كروم أو توجه إلى <strong>المزيد من الأدوات</strong> ثم <strong>أدوات مطوري البرامج</strong> واضغط على قسم Console.
</p>

<p>
	ثانيًا، تعرف على الخطأ، فسوف تظهر الطرفية console فإن لم يُكتب فيها أي خطأ عليك إعادة تحميل الصفحة فمن المُحتمل أن يظهر الخطأ عند تحميل الصفحة، إذ توفر لك الطرفية معلومات عن الخطأ مثل نوعه وموقعه ورقم السطر انظر مثلًا.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="106442" href="https://academy.hsoub.com/uploads/monthly_2022_08/001_chrome-devtools.png.07a92618abc4bf7027b3cf0bf5393526.png" rel="" data-fileext="png"><img alt="001_chrome-devtools.png" class="ipsImage ipsImage_thumbnailed" data-fileid="106442" data-unique="zvqj91373" src="https://academy.hsoub.com/uploads/monthly_2022_08/001_chrome-devtools.png.07a92618abc4bf7027b3cf0bf5393526.png"></a>
</p>

<h4>
	متصفح فايرفوكس
</h4>

<p>
	أولًا، افتح <a href="https://academy.hsoub.com/programming/workflow/%D8%A3%D8%AF%D9%88%D8%A7%D8%AA-%D9%85%D8%B7%D9%88%D8%B1%D9%8A-%D8%A7%D9%84%D9%88%D9%8A%D8%A8-%D8%A7%D9%84%D9%85%D8%AF%D9%85%D8%AC%D8%A9-%D9%81%D9%8A-%D8%A7%D9%84%D9%85%D8%AA%D8%B5%D9%81%D8%AD%D8%A7%D8%AA-r1439/" rel="">أدوات المطور DevTools</a>، بالضغط على الاختصار CTRL + Shift + K (في أنظمة ويندوز ولينكس وكروم OS) والاختصار Command + Option + K (في أجهزة ماك) للانتقال مباشرةً إلى لوحة منصة أدوات المطور لفايرفوكس أو توجه إلى <strong>أدوات أكثر</strong> ثم <strong>أدوات مطوري الوب</strong> واضغط على قسم Console.
</p>

<p>
	ثانيًا، تعرف على الخطأ، فسوف تعرض الطرفية console الخطأ وإن لم يظهر لك أي خطأ عليك إعادة تحميل الصفحة فمن المُحتمل أن يظهر عند تحميل الصفحة، إذ توفر لك الطرفية معلومات عن الخطأ مثل نوعه وموقعه ورقم السطر.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="106443" href="https://academy.hsoub.com/uploads/monthly_2022_08/002_firefox-webconsole.png.ab35048138efcaf6af5b6c35579982e4.png" rel="" data-fileext="png"><img alt="002_firefox-webconsole.png" class="ipsImage ipsImage_thumbnailed" data-fileid="106443" data-unique="asvuyz7ae" src="https://academy.hsoub.com/uploads/monthly_2022_08/002_firefox-webconsole.png.ab35048138efcaf6af5b6c35579982e4.png"></a>
</p>

<h4>
	متصفح Internet Explorer
</h4>

<p>
	يختلف سلوك متصفح Internet Explorer كثيرًا عن المتصفحات الأخرى عندما يتعلق الأمر بأخطاء جافاسكريبت حيث يُظهر تقارير عنها بطرق مختلفة. أول ما عليك التحقق منه عندما تواجهك مشكلة في متصفح Internet Explorer هي هل هذه المشكلة تظهر فقط في هذا المتصفح، وعليك الانتباه إلى أن أدوات المطورين لاكتشاف المشاكل المبينة ضمن هذا المتصفح محدودة وغير متوفرة احيانًا في بعض الإصدارات.
</p>

<p>
	<strong>ملاحظة</strong>: أوقف ووردبريس دعم الإصدار 11 من متصفح Internet Explorer في ووردبريس 5.8، لذا إن كنت تستخدمه حاليًا فالأفضل أن <a href="https://browsehappy.com/" rel="external nofollow">تستبدله بمتصفح متطور</a> مثل جوجل كروم أو فايرفوكس أو سفاري أو مايكروسوفت إيدج.
</p>

<p>
	أولًا، توجه إلى الصفحة التي تعاني فيها من الخطأ ثم ضمن متصفح IE توجه إلى الإعدادات ومنها اختر Developers Tools أو اضغط على F12 ثم اضغط على Console.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="106444" href="https://academy.hsoub.com/uploads/monthly_2022_08/003_ie_console1.jpg.067f8f9a02bca09a74d77d130eadeb49.jpg" rel="" data-fileext="jpg"><img alt="003_ie_console1.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="106444" data-unique="1ed25u0px" src="https://academy.hsoub.com/uploads/monthly_2022_08/003_ie_console1.jpg.067f8f9a02bca09a74d77d130eadeb49.jpg"></a>
</p>

<p>
	سوف تظهر طرفية الخطأ فإن لم يظهر لك أي خطأ عليك إعادة تحميل الصفحة فمن المُحتمل أن يظهر الخطأ عند تحميل الصفحة.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="106445" href="https://academy.hsoub.com/uploads/monthly_2022_08/004_ie_console2.jpg.6ba2b531ae252df61e266c93cc284193.jpg" rel="" data-fileext="jpg"><img alt="004_ie_console2.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="106445" data-unique="8rt7br5jn" src="https://academy.hsoub.com/uploads/monthly_2022_08/004_ie_console2.jpg.6ba2b531ae252df61e266c93cc284193.jpg"></a>
</p>

<p>
	تعرض الصورة السابقة خطأ موجودًا في ملف jquery.js في السطر الثاني.
</p>

<h4>
	متصفح سفاري
</h4>

<p>
	فعل أولًا أدوات المطور بالتوجه إلى متصفح سفاري ثم إلى Preference ومنه اضغط على Advanced ثم اختر <strong>Show Develop menu in menu bar</strong>.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="106446" href="https://academy.hsoub.com/uploads/monthly_2022_08/005_debug_safari.jpg.14555e5ae6c500486167e92857c40d43.jpg" rel="" data-fileext="jpg"><img alt="005_debug_safari.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="106446" data-unique="mzmxp3bbo" src="https://academy.hsoub.com/uploads/monthly_2022_08/005_debug_safari.jpg.14555e5ae6c500486167e92857c40d43.jpg"></a>
</p>

<p>
	توجه إلى الموقع حيث تواجهك المشكلة وضمن متصفح سفاري توجه إلى Develop ثم اختر Show Error console.
</p>

<p>
	سوف تظهر طرفية الخطأ فإن لم يظهر لك أي خطأ عليك إعادة تحميل الصفحة فمن المُحتمل أن يظهر الخطأ عند تحميل الصفحة.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="106447" href="https://academy.hsoub.com/uploads/monthly_2022_08/006_debug_safari4.jpg.2a45d62a27e7684588e74e4922df962d.jpg" rel="" data-fileext="jpg"><img alt="006_debug_safari4.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="106447" data-unique="3in0m5rfq" src="https://academy.hsoub.com/uploads/monthly_2022_08/006_debug_safari4.jpg.2a45d62a27e7684588e74e4922df962d.jpg"></a>
</p>

<p>
	تُظهر الصورة السابقة أن الخطأ في ملف jquery.js ضمن السطر الثاني.
</p>

<p>
	<strong>ملاحظة</strong>: إن كنت لا تستطيع رؤية الخطأ اضغط على زر الرجوع ضمن الطرفية.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="106448" href="https://academy.hsoub.com/uploads/monthly_2022_08/007_debug_safari3.jpg.51cb0e2cceb1dc3bc9d84e04bc8f9fab.jpg" rel="" data-fileext="jpg"><img alt="007_debug_safari3.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="106448" data-unique="z87g83gpx" src="https://academy.hsoub.com/uploads/monthly_2022_08/007_debug_safari3.jpg.51cb0e2cceb1dc3bc9d84e04bc8f9fab.jpg"></a>
</p>

<h4>
	متصفح أوبرا
</h4>

<p>
	توجه إلى الموقع حيث تواجهك المشكلة ثم اضغط على CTRL + Shift + J في ويندوز أو Command + Options + J في ماك لتظهر لك الطرفية.
</p>

<p>
	سوف تظهر طرفية الأخطاء، اختر JavaScript وErrors من القائمتين المنسدلتين، ولتعثر على موقع الخطأ عليك توسيع أحد الأخطاء عندها سوف يظهر لك الخطأ ومكانه وفي أي سطر هو.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="106449" href="https://academy.hsoub.com/uploads/monthly_2022_08/008_opera_console.jpg.b0f7f5f675df729c603f91f3a53eaa0a.jpg" rel="" data-fileext="jpg"><img alt="008_opera_console.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="106449" data-unique="uicpc8pdd" src="https://academy.hsoub.com/uploads/monthly_2022_08/008_opera_console.jpg.b0f7f5f675df729c603f91f3a53eaa0a.jpg"></a>
</p>

<p>
	تُظهر الصورة السابقة أن الخطأ موجود في ملف jquery.js في السطر الثاني لكن تذكر أن تنسخ كامل معلومات الخطأ لأن معرفة السطر الذي يتواجد فيه الخطأ لا يكفي لتوفير المساعدة لك.
</p>

<h3>
	الخطوة الرابعة: التقرير
</h3>

<p>
	الآن وبعد أن عثرت على الخطأ إن استطعت حله فبها ونعمت أو عليك رفع تقرير إلى فريق التطوير أو الدعم لديك لحله وحاول قدم في تقريرك التفاصيل التالية: من فضلك اذكر المعلومات التالية:
</p>

<ul>
	<li>
		المتصفحات التي تواجه فيها المشكلة
	</li>
	<li>
		هل حل SCRIPT_DEBUG المشكلة أم لا
	</li>
	<li>
		اسم خطأ جافا سكريبت
	</li>
	<li>
		موقع الخطأ - اسم الملف ورقم السطر
	</li>
	<li>
		محتوى رسالة الخطأ - كامل محتوى الرسالة من أخطاء سوف يُساعد المطورين.
	</li>
</ul>

<p>
	ترجمة -وبتصرف- للمقال <a href="https://wordpress.org/support/article/debugging-in-wordpress/" rel="external nofollow">Debugging in WordPress</a> والمقال <a href="https://wordpress.org/support/article/using-your-browser-to-diagnose-javascript-errors/" rel="external nofollow">Using Your Browser to Diagnose JavaScript Errors</a> من موقع <a href="https://wordpress.org/" rel="external nofollow">ووردبريس</a>.
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
	<li>
		<a href="https://academy.hsoub.com/wordpress/" rel="">تعلم ووردبريس</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/apps/web/wordpress/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%A5%D8%B5%D9%84%D8%A7%D8%AD-%D8%A3%D8%AE%D8%B7%D8%A7%D8%A1-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r575/" rel="">كيفية إصلاح أخطاء ووردبريس</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/php/wordpress/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%AA%D9%86%D9%82%D9%8A%D8%AD-%D8%A3%D8%AE%D8%B7%D8%A7%D8%A1-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-%D8%A8%D8%AE%D8%B7%D9%88%D8%A7%D8%AA-%D8%A7%D8%AD%D8%AA%D8%B1%D8%A7%D9%81%D9%8A%D8%A9-r1275/" rel="">كيفية تنقيح أخطاء ووردبريس بخطوات احترافية</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/apps/web/wordpress/%D8%A7%D9%83%D8%AA%D8%B4%D8%A7%D9%81-%D9%88%D8%A5%D8%B5%D9%84%D8%A7%D8%AD-%D8%A3%D8%AE%D8%B7%D8%A7%D8%A1-%D8%B4%D8%A7%D8%B4%D8%A9-%D8%A7%D9%84%D9%85%D9%88%D8%AA-%D8%A7%D9%84%D8%A8%D9%8A%D8%B6%D8%A7%D8%A1-%D9%81%D9%8A-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r135/" rel="">اكتشاف وإصلاح أخطاء شاشة الموت البيضاء في ووردبريس</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/apps/web/wordpress/%D8%A5%D8%B5%D9%84%D8%A7%D8%AD-%D8%A7%D9%84%D9%85%D9%84%D9%81%D8%A7%D8%AA-%D8%A3%D9%88-%D9%82%D9%88%D8%A7%D8%B9%D8%AF-%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA-%D8%A7%D9%84%D8%AA%D8%A7%D9%84%D9%81%D8%A9-%D8%A3%D9%88-%D8%A7%D9%84%D9%85%D9%81%D9%82%D9%88%D8%AF%D8%A9-%D9%81%D9%8A-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r240/" rel="">إصلاح الملفات أو قواعد بيانات التالفة أو المفقودة في ووردبريس</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">1693</guid><pubDate>Mon, 19 Sep 2022 16:06:00 +0000</pubDate></item><item><title>&#x62A;&#x63A;&#x64A;&#x64A;&#x631; &#x631;&#x627;&#x628;&#x637; &#x645;&#x648;&#x642;&#x639; &#x648;&#x648;&#x631;&#x62F;&#x628;&#x631;&#x64A;&#x633;</title><link>https://academy.hsoub.com/programming/php/wordpress/%D8%AA%D8%BA%D9%8A%D9%8A%D8%B1-%D8%B1%D8%A7%D8%A8%D8%B7-%D9%85%D9%88%D9%82%D8%B9-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r1692/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2022_08/6308ddc6e1710_---.png.205d5f98c52589052cdc87d5ab782ae5.png" /></p>
<p>
	تجد ضمن تبويب عام في قسم الإعدادات في لوحة تحكم ووردبريس حقلين اسمهما "عنوان ووردبريس (URL)" و"عنوان الموقع (URL)"، وهي إعدادات مهمة كونها تتحكم بموقع ووردبريس، إذ تتحكم هذه الإعدادات بعرض الرابط ضمن قسم المدير لصفحتك إضافةً إلى الواجهة الأمامية وهي مستخدمة ضمن شيفرة ووردبريس.
</p>

<ul>
	<li>
		إن خيار "عنوان الموقع (URL)" هو العنوان الذي تريد للزوار كتابته ضمن المتصفح للوصول لمدونتك.
	</li>
	<li>
		إن خيار "عنوان ووردبريس (URL)" هو العنوان الذي توجد فيه ملفات نواة ووردبريس.
	</li>
</ul>

<p>
	<strong>ملاحظة</strong>: يجب أن يتضمن كلا الخيارين السابقين الجزء https://‎ في البداية لكن من دون "/" في النهاية.
</p>

<p>
	يحتاج كل فترة شخص ما لتغيير هذه الخيارات يدويًا، وعادةً يحصل هذا عندما يُغيّر هذا الشخص أحد أو كلا هذين الخيارين ثم يتفاجأ أن موقعه لا يعمل بالشكل الصحيح، لذا يشرح هذا المقال كيفية تغيير هذه الإعدادات مُباشرةً.
</p>

<p>
	سوف تجد أيضًا معلومات إضافية هنا في حال أردت نقل ووردبريس من موقع لآخر لأن هذا يتطلب أيضًا تغيير رابط الموقع، ويجب عليك ألا تحاول استخدام المعلومات الإضافية إن كنت تريد فقط إصلاح موقعك.
</p>

<p>
	<strong>تنبيه</strong>: التعليمات التالية هي فقط لتثبيت ووردبريس لموقع وحيد، لذا إن كنت تستخدم ووردبريس متعدد المواقع سوف تحتاج لتعديل قاعدة البيانات يدويًا.
</p>

<h2>
	طرق تغيير رابط موقع ووردبريس
</h2>

<p>
	إليك أربع طرق سهلة لتغيير رابط الموقع يدويًا، أي من هذه الطرق سوف يعمل ويؤدي نفس الوظيفة.
</p>

<h3>
	تحرير ملف wp-config.php
</h3>

<p>
	تستطيع ضبط رابط الموقع يدويًا باستخدام ملف wp-config.php حيث عليك إضافة السطرين التاليين له واستبدال "example.com" بالموقع لموقعك.
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_3451_6" style=""><span class="pln">define</span><span class="pun">(</span><span class="pln"> </span><span class="str">'WP_HOME'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'http://example.com'</span><span class="pln"> </span><span class="pun">);</span><span class="pln">
define</span><span class="pun">(</span><span class="pln"> </span><span class="str">'WP_SITEURL'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'http://example.com'</span><span class="pln"> </span><span class="pun">);</span></pre>

<p>
	لا تُعد هذه الطريقة الخيار الأفضل لإصلاح الموقع لكنها عبارة عن فرض قيم الروابط ضمن الشيفرة البرمجية، وهكذا لن تتمكن من تغيير هذه القيم ضمن تبويب عام من قسم الإعدادات.
</p>

<h3>
	تحرير ملف functions.php
</h3>

<p>
	إن كنت تمتلك وصولًا للموقع من خلال اتصال <a href="https://academy.hsoub.com/apps/web/wordpress/%D8%AF%D9%84%D9%8A%D9%84-%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-filezilla-%D9%88-phpmyadmin-%D9%84%D8%A5%D8%AF%D8%A7%D8%B1%D8%A9-%D9%85%D9%84%D9%81%D8%A7%D8%AA-%D9%88%D9%82%D9%88%D8%A7%D8%B9%D8%AF-%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA-%D9%85%D9%88%D9%82%D8%B9-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r367/" rel="">FTP</a> فهذه الطريقة يمكن أن تُساعدك لاستعادة موقعك سريعًا إن غيرت هذه القيم بطريقة غير صحيحة.
</p>

<p>
	أولًا، اتصل بالموقع باستخدام FTP ثم انسخ ملف functions.php للقالب الفعّال الذي تريد تعديله باستخدام محرر نصي بسيط وأعد رفعه إلى الموقع، ثم أضف السطرين البرمجيين التاليين مباشرةً بعد السطر <code>‎&lt;?php</code> (استخدام الرابط الخاص بك بدلًا من القيمة example.com):
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_3451_8" style=""><span class="pln">update_option</span><span class="pun">(</span><span class="pln"> </span><span class="str">'siteurl'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'http://example.com'</span><span class="pln"> </span><span class="pun">);</span><span class="pln">
update_option</span><span class="pun">(</span><span class="pln"> </span><span class="str">'home'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'http://example.com'</span><span class="pln"> </span><span class="pun">);</span></pre>

<p>
	ارفع الملف من جديد لموقعك بنفس المكان حيث يوفر تطبيق <a href="https://academy.hsoub.com/apps/web/wordpress/%D8%AF%D9%84%D9%8A%D9%84-%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-filezilla-%D9%84%D8%A5%D8%AF%D8%A7%D8%B1%D8%A9-%D9%85%D9%84%D9%81%D8%A7%D8%AA-%D9%85%D9%88%D9%82%D8%B9-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r367/" rel="">FileZilla</a> خيار تعديل الملف لتنفيذ ما سبق بسرعة إن كنت تستطيع استخدامه، ثم أعد تحميل صفحة تسجيل الدخول أو صفحة مدير الموقع عدة مرات، ويجب أن يعود الموقع للعمل الآن.
</p>

<p>
	<strong>ملاحظة مهمة</strong>: عليك إزالة الشيفرة البرمجية السابقة من ملف functions.php بعد تأكدك من عودة الموقع للعمل من جديد.
</p>

<p>
	<strong>ملاحظة</strong>: إن كان القالب الذي تستخدمه لا يمتلك ملف functions.php عليك إنشاء واحد جديد باستخدام محرر نصي وإضافة الوسم <code>‎&lt;?php</code> والسطرين البرمجيين السابقين مع استخدام الرابط الخاص بموقعك بدلًا من القيمة example.com.
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_3451_10" style=""><span class="pun">&lt;?</span><span class="pln">php
update_option</span><span class="pun">(</span><span class="pln"> </span><span class="str">'siteurl'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'http://example.com'</span><span class="pln"> </span><span class="pun">);</span><span class="pln">
update_option</span><span class="pun">(</span><span class="pln"> </span><span class="str">'home'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'http://example.com'</span><span class="pln"> </span><span class="pun">);</span></pre>

<p>
	ارفع هذا الملف إلى مسار القالب ثم أزل السطرين البرمجيين السابقين أو الملف كاملًا بعد عودة الموقع للعمل من جديد.
</p>

<p>
	إليك بعض المعلومات الإضافية خطوة بخطوة لنقل موقع ووردبريس معتمد على شبكة محلية إلى موقع قابل للوصول له خارجيًا إضافةً إلى تفعيل موقع ووردبريس من داخل الشبكة المحلية.
</p>

<p>
	عنصران مهمان جدًا هما تعديلات الموّجه router أو الجدار الناري firewall وانتظار ما يزيد من 10 دقائق بعد تنفيذ التعديلات النهائية. استخدم <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr></abbr> للدخول للخادم (<a href="https://academy.hsoub.com/programming/workflow/%D9%85%D9%82%D8%A7%D8%B1%D9%86%D8%A9-%D8%A8%D9%8A%D9%86-%D9%85%D8%AD%D8%B1%D8%B1-%D8%A7%D9%84%D9%86%D8%B5%D9%88%D8%B5-%D9%81%D9%8A%D9%85-vim-%D9%88%D9%86%D8%A7%D9%86%D9%88-nano-r1590/" rel="">المحر nano</a> هو محرر نصي مُثبت مُسبقًا على الخادم).
</p>

<pre class="ipsCode">$ nano /var/www/books/wp-content/themes/twentyeleven/functions.php
</pre>

<p>
	أضف السطور البرمجية بعد الوسم <code>‎&lt;?php</code>
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_3451_13" style=""><span class="pln">update_option</span><span class="pun">(</span><span class="pln"> </span><span class="str">'siteurl'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'http://your.site.url:port/yourblog'</span><span class="pun">);</span><span class="pln">
update_option</span><span class="pun">(</span><span class="pln"> </span><span class="str">'home'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'http://your.site.url:port/yourblog'</span><span class="pun">);</span></pre>

<p>
	أعد تحميل الموقع ضمن المتصفح باستخدام رابط خارجي.
</p>

<pre class="ipsCode">http://your.site.url:port/yourblog
</pre>

<p>
	أزل هذه السطور التي أضفتها (أو اجعلها عبارةً عن تعليق) عبر الأمر السابق نفسه:
</p>

<pre class="ipsCode">$ nano /var/www/books/wp-content/themes/twentyeleven/functions.php
</pre>

<p>
	ثم ادخل للموجه فالخطوات التالية هي من أجل pfSense حيث أن خطوات إعداد الموجهات الأخرى مشابهة.
</p>

<p>
	أضف إلى الجدار الناري/جدول nat سطرًا شبيه بالسطر التالي:
</p>

<pre class="ipsCode">wan/tcp/port/LAN.server.IP/80
</pre>

<p>
	أضف إلى الجداري الناري/جدول القواعد rules table السطر التالي:
</p>

<pre class="ipsCode">tcp/*/port/LAN.server.IP/port/*
</pre>

<p>
	ضمن النظام/متقدم/الشبكة ألغ اختيار Disable NAT Reflection:
</p>

<pre class="ipsCode">"Disables the automatic creation of NAT redirect rules for access to your public IP addresses from within your internal networks. Note: Reflection only works on port forward type items and does not work for large ranges &gt; 500 ports."
</pre>

<p>
	الآن انتظر لمدة عشر دقائق ثم جرب إن كان الرابط الخارجي http://your.site.url:port/yourblog من متصفح ضمن الشبكة المحلية يستطيع تحميل الموقع الصحيح.
</p>

<div class="banner-container ipsBox ipsPadding">
	<div class="inner-banner-container">
		<p class="banner-heading">
			دورة تطوير تطبيقات الويب باستخدام لغة PHP
		</p>

		<p class="banner-subtitle">
			احترف تطوير النظم الخلفية وتطبيقات الويب من الألف إلى الياء دون الحاجة لخبرة برمجية مسبقة
		</p>

		<div>
			<a class="ipsButton ipsButton_large ipsButton_primary ipsButton_important" href="https://academy.hsoub.com/learn/php-web-application-development/" rel="">اشترك الآن</a>
		</div>
	</div>

	<div class="banner-img">
		<img alt="دورة تطوير تطبيقات الويب باستخدام لغة PHP" src="https://academy.hsoub.com/learn/assets/images/courses/php-web-application-development.png">
	</div>
</div>

<h3>
	طريقة تعيين الموقع
</h3>

<p>
	يدعم ووردبريس طريقة تعيين موقع تلقائية الغرض منها المساعدة السريعة لإعادة موقعك للعمل عند نقل موقع من خادم لآخر.
</p>

<h4>
	الشيفرة البرمجية للدالة
</h4>

<p>
	عند ضبط <code>RELOCATE</code> بقيمة <code>true</code> ضمن ملف wp-config.php (انظر للقسم التالي) سوف تدخل الشيفرة التالية حيز العمل ضمن ملف wp-login.php:
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_3451_16" style=""><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln"> </span><span class="kwd">defined</span><span class="pun">(</span><span class="pln"> </span><span class="str">'RELOCATE'</span><span class="pln"> </span><span class="pun">)</span><span class="pln"> AND RELOCATE </span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">    
  </span><span class="com">// Move flag is set</span><span class="pln">
  </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln"> isset</span><span class="pun">(</span><span class="pln"> $_SERVER</span><span class="pun">[</span><span class="str">'PATH_INFO'</span><span class="pun">]</span><span class="pln"> </span><span class="pun">)</span><span class="pln"> AND </span><span class="pun">(</span><span class="pln">$_SERVER</span><span class="pun">[</span><span class="str">'PATH_INFO'</span><span class="pun">]</span><span class="pln"> </span><span class="pun">!=</span><span class="pln"> $_SERVER</span><span class="pun">[</span><span class="str">'PHP_SELF'</span><span class="pun">])</span><span class="pln"> </span><span class="pun">)</span><span class="pln">
        $_SERVER</span><span class="pun">[</span><span class="str">'PHP_SELF'</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> str_replace</span><span class="pun">(</span><span class="pln"> $_SERVER</span><span class="pun">[</span><span class="str">'PATH_INFO'</span><span class="pun">],</span><span class="pln"> </span><span class="str">""</span><span class="pun">,</span><span class="pln"> $_SERVER</span><span class="pun">[</span><span class="str">'PHP_SELF'</span><span class="pun">]</span><span class="pln"> </span><span class="pun">);</span><span class="pln">
    $url </span><span class="pun">=</span><span class="pln"> dirname</span><span class="pun">(</span><span class="pln"> set_url_scheme</span><span class="pun">(</span><span class="pln"> </span><span class="str">'http://'</span><span class="pun">.</span><span class="pln"> $_SERVER</span><span class="pun">[</span><span class="str">'HTTP_HOST'</span><span class="pun">]</span><span class="pln"> </span><span class="pun">.</span><span class="pln"> $_SERVER</span><span class="pun">[</span><span class="str">'PHP_SELF'</span><span class="pun">]</span><span class="pln"> </span><span class="pun">)</span><span class="pln"> </span><span class="pun">);</span><span class="pln">
    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln"> $url </span><span class="pun">!=</span><span class="pln"> get_option</span><span class="pun">(</span><span class="pln"> </span><span class="str">'siteurl'</span><span class="pln"> </span><span class="pun">)</span><span class="pln"> </span><span class="pun">)</span><span class="pln">
        update_option</span><span class="pun">(</span><span class="pln"> </span><span class="str">'siteurl'</span><span class="pun">,</span><span class="pln"> $url </span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	إليك خطوات العمل.
</p>

<p>
	أولًا، حرر ملف wp-config.php ثم أضف بعد عبارات <code>define</code> (قبل سطر التعليق الذي يقول "That’s all, stop editing!‎") التعليمة التالية <code>define('RELOCATE',true);‎</code> واحفظ الملف.
</p>

<p>
	ثانيًا، افتح المتصفح وتوجه يدويًا إلى الملف wp-login.php ضمن الخادم الجديد، فعلى سبيل المثال إن كان موقعك الجديد موجودًا على <a href="http://www.yourdomainname.com" ipsnoembed="true" rel="external nofollow">http://www.yourdomainname.com</a> عندها عليك كتابة <a href="http://www.yourdomainname.com/wp-login.php" ipsnoembed="true" rel="external nofollow">http://www.yourdomainname.com/wp-login.php</a> ضمن المتصفح.
</p>

<p>
	ثالثًا، سجل دخول كالمعتاد ثم ألق نظرة على حقل عنوان المتصفح للتحقق أنك دخلت إلى الخادم الصحيح، وفي حال كان ذلك توجه إلى تبويب عام في قسم الإعدادات من لوحة تحكم ووردبريس للتحقق من صحة عنوان الموقع وعنوان ووردبريس وتذكر أن تحفظ الإعدادات.
</p>

<p>
	أخيرًا، بعد أن أُصلحت المشكلة عليك تحرير ملف wp-config.php وإزالة السطر الذي أضفته أو تغيير القيمة من true إلى false إن كنت تعتقد أنك سوف تغيير رابط الموقع قريبًا.
</p>

<p>
	<strong>ملاحظة</strong>: عند ضبط <code>RELOCATE</code> إلى القيمة <code>true</code> سوف يُحدث رابط الموقع تلقائيًا إلى المسار الذي تستخدمه للوصول لصفحة تسجيل الدخول، وهذا سوف يعيد تشغيل قسم المدير على الرابط الجديد لكنه لن يُصحح أي جزء آخر من عملية التثبيت، لذا ما زال عليك تغييرها يدويًا.
</p>

<p>
	<strong>ملاحظة مهمة</strong>: الإبقاء على الثابت <code>RELOCATE</code> ضمن ملف wp-config.php غير آمن كونه يسمح للمهاجم تغيير رابط موقعك لأي شيء يريده في بعض الحالات، لذا عليك دومًا إزالة السطر <code>RELOCATE</code> من ملف wp-config.php بعد انتهائك من هذه الخطوات.
</p>

<h3>
	تغيير الرابط مباشرةً من قاعدة البيانات
</h3>

<p>
	إن كنت تعلم كيف تدخل إلى لوحة تحكم phpMyAdming ضمن استضافتك عندها تستطيع تعديل هذه القيم مباشرةً لتستعيد موقعك ويعود للعمل من جديد، لذا اتبع الخطوات التالية.
</p>

<p>
	أولًا، <a href="https://academy.hsoub.com/apps/web/wordpress/%D9%83%D9%8A%D9%81-%D8%AA%D9%86%D8%B3%D8%AE-%D9%82%D8%A7%D8%B9%D8%AF%D8%A9-%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA%D9%83-%D8%A7%D8%AD%D8%AA%D9%8A%D8%A7%D8%B7%D9%8A%D9%8B%D8%A7-%D9%81%D9%8A-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r366/" rel="">خذ نسخة احتياطية عن قاعدة البيانات</a> واحفظها في مكان مختلف عن الموقع ثم انتقل للوحة تحكم <a href="https://academy.hsoub.com/apps/web/wordpress/%D8%AF%D9%84%D9%8A%D9%84-%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-filezilla-%D9%84%D8%A5%D8%AF%D8%A7%D8%B1%D8%A9-%D9%85%D9%84%D9%81%D8%A7%D8%AA-%D9%85%D9%88%D9%82%D8%B9-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r367/" rel="">phpMyAdmin</a> واضغط على رابط قواعد البيانات.
</p>

<p>
	ثانيًا، سوف تظهر لك قائمة بقواعد البيانات، عليك اختيار القاعدة المرتبطة بموقعك، وسوف تظهر جميع الجداول ضمن قاعدة البيانات على الشاشة.
</p>

<p>
	ثالثًا، ابحث عن الجدول wp_options من القائمة مع الانتباه أن بادئة الجدول wp_‎ يمكن أن تكون مختلفة إن غيرتها أثناء تثبيت ووردبريس، ثم اضغط على الأيقونة الصغيرة التي تُشير إلى تصفح الجدول، وستظهر لك صفحة تتضمن قائمة بحقوله ثم ابحث ضمن حقل option_name عن site_url، واضغط على أيقونة تحرير الحقل التي تتواجد عادةً في أقصى يسار السطر وسوف تظهر نافذة تحرير الحقل، حينها غير معلومات الرابط ضمن حقل option_value للعنوان الجديد، وتحقق أنه صحيح ثم اضغط على Go لحفظ المعلومات الجديدة.
</p>

<p>
	رابعًا، يجب أن يظهر لك الآن جدول wp_options من جديد، ابحث عن الحقل home ضمن الجدول واضغط على أيقونة تحرير الحقل مع الانتباه لوجود عدة صفحات ضمن هذا الجدول إن لم تجد الحقل المطلوب في أول صفحة.
</p>

<p>
	أخيرًا، أدخل معلومات الرابط الجديدة ضمن حقل option_value، وتحقق أن المعلومات صحيحة ثم اضغط على Go لحفظ المعلومات.
</p>

<h2>
	نقل موقع ووردبريس
</h2>

<p>
	عند نقل الموقع من مكان لآخر من الضروري في بعض الأحيان تعديل هذه البيانات يدويًا ضمن قاعدة البيانات لضمان صحة معلومات الرابط الجديد للموقع. يوجد العديد من الأدوات التي تُساعد على هذا وهي ما يجب استخدامه بدلًا من عملية التعديل اليدوية.
</p>

<p>
	هذه المعلومات مذكورة هنا فقط لكنها ربما غير كاملة أو دقيقة. عليك قراءة مقال <a href="https://academy.hsoub.com/apps/web/wordpress/%D8%AF%D9%84%D9%8A%D9%84-%D9%86%D9%82%D9%84-%D9%85%D9%88%D9%82%D8%B9-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-%D9%88%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%A7%D9%84%D8%AA%D8%B9%D8%A7%D9%85%D9%84-%D9%85%D8%B9-%D8%B5%D9%81%D8%AD%D8%A9-%D8%A5%D8%B9%D8%AF%D8%A7%D8%AF%D8%A7%D8%AA-%D8%A7%D9%84%D8%B1%D9%88%D8%A7%D8%A8%D8%B7-%D8%A7%D9%84%D8%AB%D8%A7%D8%A8%D8%AA%D8%A9-r417/" rel="">نقل موقع ووردبريس</a> أولًا إن كنت تحاول نقل ووردبريس من نظام لآخر.
</p>

<h3>
	تبديل بادئة الجداول
</h3>

<p>
	ربما تُشغَّل عدة مواقع ووردبريس باستخدام قاعدة بيانات واحدة من خلال بعض التعديلات على ملف wp-config.php وهذا ما يفعله العديد من مدراء مواقع ووردبريس. تتضمن هذه التعديلات ضبط بادئة جداول قاعدة البيانات وإن حصل وغيرت بادئة جدول خاص بك عليك تحديث عدة مدخلات ضمن جدول اسمه يقابل الاسم prefix_usermeta أيضًا.
</p>

<p>
	تذكر أن تغييرات SQL دائمة لذا عليك أخذ نسخة احتياطية عن قاعدة البيانات أولًا قبل البدء بأي تعديلات.
</p>

<p>
	إن كنت تغير بادئة جداول قاعدة البيانات لموقع عليك أن تتذكر تغيير بادئة الجدول في جداول usermeta أيضًا، فهذا يسمح للموقع الجديد التعرف بدقة على صلاحيات المستخدم من الموقع القديم.
</p>

<pre class="ipsCode prettyprint lang-sql prettyprinted" id="ips_uid_3451_18" style=""><span class="pln">UPDATE </span><span class="str">`newprefix_usermeta`</span><span class="pln"> SET </span><span class="str">`meta_key`</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> REPLACE</span><span class="pun">(</span><span class="pln"> </span><span class="str">`meta_key`</span><span class="pln"> </span><span class="pun">,</span><span class="pln"> </span><span class="str">'oldprefix_'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'newprefix_'</span><span class="pln"> </span><span class="pun">);</span></pre>

<h3>
	تغيير قالب الملفات
</h3>

<p>
	افتح كل ملف قالب ضمن <a href="https://academy.hsoub.com/programming/php/wordpress/%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D9%82%D9%88%D8%A7%D9%84%D8%A8-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r1223/" rel="">قالب ووردبريس</a> وابحث عن مرجع أُدخل يدويًا لاسم نطاق موقعك القديم واستبدله باسم النطاق الجديد. ابحث عن روابط مكتوبة يدويًا ربما أضفتها ضمن ملفات القالب المتنوعة مثل sidebar.php و footer.php. يستخدم ووردبريس وسم القالب الذي يُدعى <code>bloginfo()‎</code> لتوليد عنوان موقعك تلقائيًا من المعلومات الموجودة ضمن تبويب <a href="https://academy.hsoub.com/apps/web/wordpress/%D8%B6%D8%A8%D8%B7-%D8%B4%D8%A7%D8%B4%D8%A9-%D8%A7%D9%84%D8%A5%D8%B9%D8%AF%D8%A7%D8%AF%D8%A7%D8%AA-%D8%A7%D9%84%D8%B9%D8%A7%D9%85%D8%A9-%D8%A8%D9%84%D9%88%D8%AD%D8%A9-%D8%AA%D8%AD%D9%83%D9%85-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r404/" rel="">عام من قسم الإعدادات</a> في <a href="https://academy.hsoub.com/apps/web/wordpress/%D8%B4%D8%B1%D8%AD-%D9%85%D9%81%D8%B5%D9%84-%D9%84%D8%B5%D9%81%D8%AD%D8%A7%D8%AA-%D8%A7%D9%84%D8%A5%D8%AF%D8%A7%D8%B1%D8%A9-%D9%88%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%A7%D9%84%D8%AA%D8%AD%D9%83%D9%85-%D8%A7%D9%84%D9%83%D8%A7%D9%85%D9%84-%D8%A8%D9%85%D9%88%D9%82%D8%B9-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r399/" rel="">لوحة تحكم ووردبريس</a>، ولا حاجة لتعديل هذا الوسم ضمن ملفات القالب.
</p>

<h3>
	تغيير ملف الإعدادات
</h3>

<p>
	سوف تحتاج لتحديث ملف إعدادات ووردبريس إن نُقلت قاعدة البيانات أو تغيرت بطريقة ما.
</p>

<ol>
	<li>
		تحتاج فقط لتعديل ملف الإعدادات إن:
	</li>
	<li>
		نُقلت قاعدة بياناتك من خادم لآخر ولا تعمل على الخادم المحلي localhost
	</li>
	<li>
		أعدت تسمية قاعدة بياناتك.
	</li>
	<li>
		غيّرت اسم مستخدم قاعدة البيانات.
	</li>
	<li>
		خذ نسخة احتياطية عن ملف wp-config.php
	</li>
	<li>
		افتح هذا الملف باستخدام محرر نصي
	</li>
	<li>
		راجع محتواه وابحث بالأخص عن <a href="https://academy.hsoub.com/programming/php/wordpress/%D8%AA%D8%B9%D8%AF%D9%8A%D9%84-%D9%85%D9%84%D9%81-wp-configphp-r1252/" rel="">مدخل مضيف قاعدة البيانات</a> database host.
	</li>
	<li>
		احفظ الملف.
	</li>
</ol>

<p>
	في هذه المرحلة يجب أن تعمل مدونة ووردبريس خاصتك.
</p>

<h3>
	تحقق من ملفك الشخصي
</h3>

<p>
	اتبع الخطوات التالية:
</p>

<ol>
	<li>
		عليك التحقق ضمن تبويب <a href="https://academy.hsoub.com/apps/web/wordpress/%D8%B6%D8%A8%D8%B7-%D8%B4%D8%A7%D8%B4%D8%A9-%D8%A7%D9%84%D8%A5%D8%B9%D8%AF%D8%A7%D8%AF%D8%A7%D8%AA-%D8%A7%D9%84%D8%B9%D8%A7%D9%85%D8%A9-%D8%A8%D9%84%D9%88%D8%AD%D8%A9-%D8%AA%D8%AD%D9%83%D9%85-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r404/" rel="">عام في قسم الإعدادات</a> من <a href="https://academy.hsoub.com/apps/web/wordpress/%D8%B4%D8%B1%D8%AD-%D9%85%D9%81%D8%B5%D9%84-%D9%84%D8%B5%D9%81%D8%AD%D8%A7%D8%AA-%D8%A7%D9%84%D8%A5%D8%AF%D8%A7%D8%B1%D8%A9-%D9%88%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%A7%D9%84%D8%AA%D8%AD%D9%83%D9%85-%D8%A7%D9%84%D9%83%D8%A7%D9%85%D9%84-%D8%A8%D9%85%D9%88%D9%82%D8%B9-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r399/" rel="">لوحة تحكم ووردبريس</a> أنك أجريت التغييرات الصحيحة للرابط.
	</li>
	<li>
		تحقق أن المرجع ضمن عنوان ووردبريس URL يتضمن العنوان الجديد.
	</li>
	<li>
		تحقق أن المرجع ضمن عنوان الموقع URL يتضمن العنوان الجديد.
	</li>
	<li>
		إن أجريت أي تعديل عليك حفظ التغييرات.
	</li>
</ol>

<h3>
	تحديث ملف ‎.htaccess
</h3>

<p>
	عليك تحديث ملف ‎.htaccess بعد تعديل المعلومات ضمن تبويب <a href="https://academy.hsoub.com/apps/web/wordpress/%D8%B6%D8%A8%D8%B7-%D8%B4%D8%A7%D8%B4%D8%A9-%D8%A7%D9%84%D8%A5%D8%B9%D8%AF%D8%A7%D8%AF%D8%A7%D8%AA-%D8%A7%D9%84%D8%B9%D8%A7%D9%85%D8%A9-%D8%A8%D9%84%D9%88%D8%AD%D8%A9-%D8%AA%D8%AD%D9%83%D9%85-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r404/" rel="">عام في قسم الإعدادات</a> من <a href="https://academy.hsoub.com/apps/web/wordpress/%D8%B4%D8%B1%D8%AD-%D9%85%D9%81%D8%B5%D9%84-%D9%84%D8%B5%D9%81%D8%AD%D8%A7%D8%AA-%D8%A7%D9%84%D8%A5%D8%AF%D8%A7%D8%B1%D8%A9-%D9%88%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%A7%D9%84%D8%AA%D8%AD%D9%83%D9%85-%D8%A7%D9%84%D9%83%D8%A7%D9%85%D9%84-%D8%A8%D9%85%D9%88%D9%82%D8%B9-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r399/" rel="">لوحة تحكم ووردبريس</a> إن كنت تستخدم <a href="https://academy.hsoub.com/programming/php/wordpress/%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A7%D9%84%D8%B1%D9%88%D8%A7%D8%A8%D8%B7-%D8%A7%D9%84%D8%AF%D8%A7%D8%A6%D9%85%D8%A9-%D9%81%D9%8A-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r1343/" rel="">الروابط الدائمة</a> أو أي إعادة توجيه أو إعادة كتابة للروابط، لذا اتبع الخطوات التالية.
</p>

<p>
	أولًا، خذ نسخة احتياطية عن ملف ‎.htaccess وهذا أمر مُفضل وليس واجبًا، ثم افتحه عبر محرر نصي.
</p>

<p>
	ثانيًا، راجع محتوى الملف وابحث عن أي قواعد إعادة كتابة مُخصصة أو إعادة توجيه أدخلتها سابقًا ثم انسخ هذه القواعد لملف آخر لحفظها في مكان آمن، ثم أغلق الملف.
</p>

<p>
	ثالثًا، اتبع التعليمات ضمن Permalink SubPanel لتحديث الروابط الدائمة ضمن ملف ‎ .htaccess.
</p>

<p>
	رابعًا، افتح ملف ‎.htaccess الجديد وتحقق إن كانت قواعد إعادة الكتابة وإعادة التوجيه خاصتك موجود فيه، وإن لم تكن موجودة انسخها من الملف المحفوظ سابقًا ثم ألصقها ضمنه ثم أجري أي تعديلات ضرورية لقواعد إعادة الكتابة أو إعادة التوجيه المخصصة لتعبر عن عنوان موقعك الجديد، ثم احفظ الملف.
</p>

<p>
	أخيرًا، اختبر إعادة التوجيه لتتأكد أنها تعمل جيدًا.
</p>

<p>
	لا تقلق إن حصل وارتكبت أي خطأ فتستطيع <a href="https://academy.hsoub.com/apps/web/wordpress/%D8%A7%D9%84%D9%86%D8%B3%D8%AE-%D8%A7%D9%84%D8%A7%D8%AD%D8%AA%D9%8A%D8%A7%D8%B7%D9%8A-%D9%88%D8%A7%D9%84%D8%A7%D8%B3%D8%AA%D8%B9%D8%A7%D8%AF%D8%A9-%D9%84%D9%85%D9%88%D9%82%D8%B9-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r640/" rel="">استعادة قاعدة البيانات من النسخة الاحتياطية</a> التي أخذتها والمحاولة من جديد، واحرص على أن تتبع الخطوات الصحيحة من أول مرة.
</p>

<h3>
	أمور إضافية عليك ملاحظتها
</h3>

<p>
	هناك أمور ربما ترغب بتغييرها لتصحيح الروابط عند نقل الموقع.
</p>

<ol>
	<li>
		روابط الصور: وهي مخزنة ضمن عمود post<em>content في جدول wp</em>posts. تستطيع استخدام شيفرة مشابهة لما ذكر في الأعلى لتحديث روابط الصور.
	</li>
	<li>
		wp-options: يوجد قيم أخرى غير القيمة siteurl والقيمة home يجب مراجعتها مثل upload_path وبعض عناصر الإضافات (يعتمد على ما ثبته من ودجات وخرائط موقع وغيرها).
	</li>
	<li>
		لإصلاح الودجات التي تتضمن روابط منتهية الصلاحية عليك تعديلها ضمن تبويب ودجات في قسم الإعدادات ضمن لوحة تحكم ووردبريس.
	</li>
	<li>
		ابحث ضمن كامل قاعدة المعطيات عن أي عنصر متبقي وتحقق مما تُغيره.
	</li>
	<li>
		إن كنت تعمل على <a href="https://academy.hsoub.com/apps/web/wordpress/wordpress-multisite/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-%D9%85%D9%8F%D8%AA%D8%B9%D8%AF%D9%91%D8%AF-%D8%A7%D9%84%D9%85%D9%88%D8%A7%D9%82%D8%B9-r176/" rel="">شبكة ووردبريس متعددة المواقع</a> سوف تحتاج لاستبدال وحدات من الرابط في قاعدة البيانات حيث تكون مخزنة في العديد من الجداول التي تتضمن كل واحدة من المواقع، لذا عليك أن تكون حذرًا لما تستبدله وتحقق من أنك تعرف معنى أو وظيفة الحقل قبل تغييره. ألق نظرة على ملاحظات هامة حول عمود GUID في الأسفل لمثال عما لا يجب تغييره.
	</li>
	<li>
		إن وجدت الرابط القديم في خيارات قاعدة البيانات ضمن dashboard<em>incoming</em>links تستطيع تجاهل أو حذف هذا الخيار فهو غير مستخدم منذ إصدار ووردبريس 3.8.
	</li>
</ol>

<h4>
	ملاحظة هامة حول عمود GUID
</h4>

<p>
	سوف تصادف عند تغييرك للروابط مباشرةً في قاعدة البيانات روابط موجودة ضمن عمود guid في جداول wp_posts، إذ <strong>من المهم ألا تغير محتويات هذا الحقل</strong>.
</p>

<p>
	يُشير المصطلح GUID للعبارة Globally Unique Identifier، والغرض من هذا الحقل حفظ معرف لكل منشور حيث يكون هذا المعرف فريدًا ولا يتغير أبدًا، ويُستخدم حقل GUID بشكل أساسي لإنشاء تغذيات ووردبريس.
</p>

<p>
	عندما يقرأ قارئ التغذية التغذيات سوف يستخدم محتويات حقل GUID لمعرفة إن كان عرض عنصرًا معينًا من قبل أم لا، وهو ينفذ ذلك من خلال طريقة من عدة طرق لكن الأكثر استخدامًا هي بتخزين قائمة بقيم GUID التي عرضها ويُعلمها على أنها مقروءة.
</p>

<p>
	إن تغيير GUID يعني أن العديد من قارئات التغذية سوف تعرض فجأةً محتواك مرة أخرى على أنه محتوًى جديدًا وهذا يمكن أن يُزعج القارئ، وليكون حقل GUID فريدًا على مجال واسع فإنه يستخدم رابط موقعك أو تمثيلًا معينًا له لذا إن كنت تملك الرابط example.com عندها أنت الوحيد الذي يستخدم هذا الرابط وبالتالي فهو فريد لك ولموقعك، ولذلك يستخدم ووردبريس الروابط الدائمة أو شكل منها لحقل GUID.
</p>

<p>
	إن السبب الثاني الذي يجب من أجله ألا يتغير حقل GUID هو أنه حتى إن غيرت النطاق فإن المقال يبقى نفس المقال حتى لو بموقع جديد، ويجب أن تعرف قارئات التغذيات عند الانتقال لموقعك الجديد أن المقالات هذه هي نفسها المقالات السابقة وليست محتوى جديد.
</p>

<p>
	بناءً على ما سبق، <strong>لا تغير أبدًا محتويات عمود GUID تحت أي ظرف كان</strong>.
</p>

<p>
	إن كان من الواجب تغيير مجلد المرفوعات لموقع آخر عندها يجب تغيير روابط ملفات الوسائط ضمن عمود post_content لجدول المنشورات، فعلى سبيل المثال إذا كان مجلد المرفوعات الافتراضي يتغير من wp-content/uploads إلى images:
</p>

<pre class="ipsCode prettyprint lang-sql prettyprinted" id="ips_uid_3451_20" style=""><span class="pln">UPDATE wp_posts SET post_content </span><span class="pun">=</span><span class="pln"> REPLACE</span><span class="pun">(</span><span class="pln">post_content</span><span class="pun">,</span><span class="str">'www.domain.com/wp-content/uploads'</span><span class="pun">,</span><span class="str">'www.domain.com/images'</span><span class="pun">);</span></pre>

<p>
	ملاحظة: ألق نظرة على <a href="https://academy.hsoub.com/apps/web/wordpress/%D8%AF%D9%84%D9%8A%D9%84-%D9%86%D9%82%D9%84-%D9%85%D9%88%D9%82%D8%B9-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-%D9%88%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%A7%D9%84%D8%AA%D8%B9%D8%A7%D9%85%D9%84-%D9%85%D8%B9-%D8%B5%D9%81%D8%AD%D8%A9-%D8%A5%D8%B9%D8%AF%D8%A7%D8%AF%D8%A7%D8%AA-%D8%A7%D9%84%D8%B1%D9%88%D8%A7%D8%A8%D8%B7-%D8%A7%D9%84%D8%AB%D8%A7%D8%A8%D8%AA%D8%A9-r417/" rel="">نقل ووردبريس متعدد المواقع</a> قسم نقل ووردبريس متعدد المواقع.
</p>

<h3>
	أداة wp-cli
</h3>

<p>
	إن <a href="http://wp-cli.org/" rel="external nofollow">wp-cli</a> أداة مفيدة جدًا للصدفة Shell.
</p>

<pre class="ipsCode prettyprint lang-sql prettyprinted" id="ips_uid_3451_25" style=""><span class="pln">wp search</span><span class="pun">-</span><span class="pln">replace </span><span class="str">'example.dev'</span><span class="pln"> </span><span class="str">'example.com'</span><span class="pln"> </span><span class="pun">--</span><span class="pln">skip</span><span class="pun">-</span><span class="pln">columns</span><span class="pun">=</span><span class="pln">guid</span></pre>

<p>
	أو إن أردت فقط تغيير الخيار تستطيع عمل التالي:
</p>

<pre class="ipsCode prettyprint lang-sql prettyprinted" id="ips_uid_3451_27" style=""><span class="pln">wp option update home </span><span class="str">'http://example.com'</span><span class="pln">
wp option update siteurl </span><span class="str">'http://example.com'</span></pre>

<p>
	ترجمة -وبتصرف- للمقال <a href="https://wordpress.org/support/article/common-wordpress-errors/" rel="external nofollow">Common WordPress Errors</a> من موقع <a href="https://wordpress.org/" rel="external nofollow">ووردبريس</a>.
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
	<li>
		<a href="https://academy.hsoub.com/wordpress/" rel="">تعلم ووردبريس</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/apps/web/wordpress/%D8%AF%D9%84%D9%8A%D9%84-%D9%86%D9%82%D9%84-%D9%85%D9%88%D9%82%D8%B9-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-%D9%88%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%A7%D9%84%D8%AA%D8%B9%D8%A7%D9%85%D9%84-%D9%85%D8%B9-%D8%B5%D9%81%D8%AD%D8%A9-%D8%A5%D8%B9%D8%AF%D8%A7%D8%AF%D8%A7%D8%AA-%D8%A7%D9%84%D8%B1%D9%88%D8%A7%D8%A8%D8%B7-%D8%A7%D9%84%D8%AB%D8%A7%D8%A8%D8%AA%D8%A9-r417/" rel="">دليل نقل موقع ووردبريس وكيفية التعامل مع صفحة إعدادات الروابط الثابتة</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/apps/web/wordpress/%D8%A7%D9%84%D9%86%D8%B3%D8%AE-%D8%A7%D9%84%D8%A7%D8%AD%D8%AA%D9%8A%D8%A7%D8%B7%D9%8A-%D9%88%D8%A7%D9%84%D8%A7%D8%B3%D8%AA%D8%B9%D8%A7%D8%AF%D8%A9-%D9%84%D9%85%D9%88%D9%82%D8%B9-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r640/" rel="">النسخ الاحتياطي والاستعادة لموقع ووردبريس</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/apps/web/wordpress/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%AA%D8%AD%D8%AF%D9%8A%D8%AB-%D9%86%D8%B8%D8%A7%D9%85-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-updating-wordpress-r390/" rel="">كيفية تحديث نظام ووردبريس Updating WordPress</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/php/wordpress/%D8%AA%D8%B9%D8%AF%D9%8A%D9%84-%D9%85%D9%84%D9%81-wp-configphp-%D9%84%D8%B6%D8%A8%D8%B7-%D8%A5%D8%B9%D8%AF%D8%A7%D8%AF%D8%A7%D8%AA-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r1252/" rel="">تعديل ملف wp-config.php لضبط إعدادات ووردبريس</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">1692</guid><pubDate>Thu, 15 Sep 2022 16:00:00 +0000</pubDate></item><item><title>&#x62A;&#x623;&#x645;&#x64A;&#x646; &#x645;&#x648;&#x642;&#x639; &#x648;&#x648;&#x631;&#x62F;&#x628;&#x631;&#x64A;&#x633;</title><link>https://academy.hsoub.com/programming/php/wordpress/%D8%AA%D8%A3%D9%85%D9%8A%D9%86-%D9%85%D9%88%D9%82%D8%B9-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r1691/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2022_08/6308d7428366a_-.png.3d6921f7d34b698f589779d1ac0aa490.png" /></p>
<p>
	يُنظر لأمن ووردبريس بجدية واهتمام كبيرين لكن كأي نظام آخر يُمكن أن تظهر مخاطر أمنية في حال أُغفلت بعض الاحتياطات الأمنية الأساسية. يتحدث هذا المقال عن المخاطر الشائعة الأساسية والخطوات التي تستطيع اتباعها لحماية تثبيت ووردبريس.
</p>

<p>
	لا يُعد هذا المقال حلًا سريعًا شاملًا لمخاوفك الأمنية لذا إن كان لديك بعض الشكوك أو المخاوف المرتبطة بأمن موقع ووردبريس عليك مناقشتها مع أشخاص تثق بهم ويمتلكون خبرة ومعرفة كافية بأمن الحاسوب وووردبريس.
</p>

<h2>
	ما هو أمن المواقع؟
</h2>

<p>
	لا يُعنى بالأمن الأنظمة الآمنة تمامًا فمثل هذه الأنظمة غير موجودة في الواقع، لذا فإن الأمن يُعنى بتقليل الخطر وليس منع الخطر إضافةً إلى توظيف عناصر التحكم المتوفرة لديك والتي تسمح لك بتحسين حالة النظام وتخفيض احتمالات تعرضك للهجوم.
</p>

<h3>
	استضافة الموقع
</h3>

<p>
	المكان الأفضل للانطلاق منه غالبًا عند الحديث عن أمن موقع إلكتروني هو بيئة الاستضافة، واليوم يوجد العديد من الخيارات المتوفرة، وبالرغم من أن الاستضافات تقدم مستوى أمان لدرجة معينة إلا أنه من المهم لك أن تفهم أين تنتهي مسؤوليتهم لتبدأ مسؤوليتك أنت.
</p>

<p>
	يجب أن تتضمن استضافة موقع موثوقة ما يلي:
</p>

<ul>
	<li>
		تناقش بوضوح مخاوفك الأمنية والميزات والإجراءات الأمنية التي توفرها.
	</li>
	<li>
		توفر أحدث النسخ المستقرة لجميع برمجيات الخادم.
	</li>
	<li>
		توفر طرق موثوقة للنسخ الاحتياطي واستعادة الموقع.
	</li>
</ul>

<p>
	عليك أن تقرر السوية الأمنية التي تحتاجها ضمن خادمك من خلال اختيار البرمجية والبيانات التي تحتاج حمايتها حيث يُساعدك في هذا ما هو مشروح في التالي من هذا الدليل.
</p>

<h2>
	تطبيقات الموقع
</h2>

<p>
	من السهل إلقاء مسؤولية أمن الموقع على استضافة الموقع لكن هناك جزء كبير من أمن الموقع يعتمد على مالكه أيضًا حيث تتكفل عادةً استضافة الموقع بالبنية التي يعمل عليها موقعك لكنها غير مسؤولة عن التطبيقات التي تثبتها، ولفهم أين ولماذا هذا مهم عليك أن تفهم <a href="https://academy.hsoub.com/apps/web/wordpress/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%A7%D8%B3%D8%AA%D8%B9%D8%A7%D8%AF%D8%A9-%D9%85%D9%88%D9%82%D8%B9-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-%D8%AA%D8%B9%D8%B1%D8%B6-%D9%84%D9%84%D8%A7%D8%AE%D8%AA%D8%B1%D8%A7%D9%82-r275/" rel="">كيف تعرض المواقع للاختراق</a>، فنادرًا ما يكون هذا بسبب بنية الاستضافة بل غالبًا مرتبط بالتطبيق نفسه (البيئة التي ثبتها على الخادم هي مسؤوليتك أنت).
</p>

<h2>
	المواضيع الأمنية
</h2>

<p>
	تذكر بعض الأفكار العامة وأبقها في ذهنك عند تأمين كل قسم من نظامك.
</p>

<ul>
	<li>
		تقييد الوصول: اعتماد خيارات ذكية تُقلل احتمالية توفر نقاط يستطيع المخترق استغلالها والدخول منها.
	</li>
	<li>
		الاحتواء: يجب أن يكون نظامك مصممًا لتقليل كمية الضرر عند وقوع مشكلة وتعرضه للاختراق.
	</li>
	<li>
		التحضيرات المسبقة والوعي: الاحتفاظ بنسخ احتياطية ومعرفة حالة تثبيت ووردبريس خلال فترات زمنية منتظمة أمر ضروي وبالتالي يجب أن تمتلك خطة واضحة لأخذ نسخة احتياطية عن الموقع واستعادتها في حال حصول أي مشكلة، فهذا يُساعدك على استعادة موقعك للعمل بسرعة مهما كانت المشكلة.
	</li>
	<li>
		مصادر موثوقة: لا تستخدم إضافات أو قوالب من مصادر غير موثوقة، واحرص على استخدام فقط مستودع ووردبريس أو شركات معروفة جيدًا حيث أن محاولة استخدام إضافات أو قوالب من مصادر خارجية <a href="https://academy.hsoub.com/apps/web/wordpress/%D9%84%D9%85%D8%A7%D8%B0%D8%A7-%D9%8A%D8%B3%D8%AA%D9%87%D8%AF%D9%81-%D8%A7%D9%84%D9%85%D8%AE%D8%AA%D8%B1%D9%82%D9%8A%D9%86-%D9%85%D9%88%D9%82%D8%B9-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-%D8%A7%D9%84%D8%AE%D8%A7%D8%B5-%D8%A8%D9%83%D8%9F-r342/" rel="">يُمكن أن يقودك لمشاكل</a> كثيرة.
	</li>
</ul>

<h2>
	الثغرات الأمنية في حاسوبك
</h2>

<p>
	تحقق أن حاسوبك الذي تستخدمه خال من برامج التجسس والبرامج الخبيثة والفيروسات حيث لن تفيدك أي إجراءات أمنية ضمن ووردبريس أو موقعك إن وجد برنامج تجسس لتسجيل كلمات مرورك Keylogger ضمن حاسوبك.
</p>

<p>
	يجب عليك الحفاظ على نظام التشغيل والبرامج الموجودة عليه خصوصًا المتصفح بأحدث إصدار لحمايتك من الثغرات الأمنية، وإن كنت تتصفح مواقع غير موثوقة أنصحك بتعطيل جافا سكريبت وجافا وFlash ضمن متصفحك.
</p>

<p>
	انظر في هذا الصدد كتاب <a href="https://academy.hsoub.com/files/20-%D8%AF%D9%84%D9%8A%D9%84-%D8%A7%D9%84%D8%A3%D9%85%D8%A7%D9%86-%D8%A7%D9%84%D8%B1%D9%82%D9%85%D9%8A/" rel="">دليل الأمان الرقمي</a>.
</p>

<div class="banner-container ipsBox ipsPadding">
	<div class="inner-banner-container">
		<p class="banner-heading">
			دورة تطوير تطبيقات الويب باستخدام لغة PHP
		</p>

		<p class="banner-subtitle">
			احترف تطوير النظم الخلفية وتطبيقات الويب من الألف إلى الياء دون الحاجة لخبرة برمجية مسبقة
		</p>

		<div>
			<a class="ipsButton ipsButton_large ipsButton_primary ipsButton_important" href="https://academy.hsoub.com/learn/php-web-application-development/" rel="">اشترك الآن</a>
		</div>
	</div>

	<div class="banner-img">
		<img alt="دورة تطوير تطبيقات الويب باستخدام لغة PHP" src="https://academy.hsoub.com/learn/assets/images/courses/php-web-application-development.png">
	</div>
</div>

<h2>
	الثغرات الأمنية في ووردبريس
</h2>

<p>
	يُحدث ووردبريس دوريًا لحل المشاكل الأمنية التي تظهر ضمنه حيث أن تحسين أمن البرنامج أمر ضروري في كل وقت، لذا عليك استخدام أحدث إصدار من ووردبريس دائمًا حيث أن الإصدارات الأقدم غير مدعومة بتحديثات أمنية.
</p>

<h3>
	تحديث ووردبريس
</h3>

<p>
	يتوفر أحدث إصدار من ووردبريس من موقع <a href="https://wordpress.org" rel="external nofollow">ووردبريس</a> الرئيسي، ولا توجد الإصدارات الرسمية في مواقع أخرى، لذا عليك ألا تُنزل أو تُثبت ووردبريس من أي موقع أخرى غير ووردبريس.
</p>

<p>
	يتضمن ووردبريس منذ الإصدار 3.7 ميزة التحديثات التلقائية، والتي تستطيع استخدامها لتسهيل الحفاظ على أحدث إصدار من ووردبريس، كما تستطيع استخدام لوحة تحكم ووردبريس لتبقى مُطلعًا على تحديثات ووردبريس. اقرأ الملاحظات ضمن لوحة التحكم أو مدونة مطور ووردبريس لمعرفة الخطوات التي عليها اتباعها للتحديث والحفاظ على أمن موقعك.
</p>

<p>
	إن اكتشف أي ثغرة ضمن ووردبريس وأُطلق إصدار جديد لمعالجة هذه المشكلة فإن المعلومات المطلوبة لاستغلال هذه الثغرة غالبًا تكون انتشرت للعلن، مما يجعل الإصدارات الأقدم من ووردبريس أكثر عرضة للهجمات لذا من المهم جدًا الحفاظ على أحدث إصدار من ووردبريس.
</p>

<p>
	إن كنت تدير مجموعة من مواقع ووردبريس عليك استخدام <a href="https://codex.wordpress.org/Installing/Updating_WordPress_with_Subversion" rel="external nofollow">النسخة الفرعية</a> لتسهيل عملية الإدارة.
</p>

<h2>
	الثغرات الأمنية في الخادم
</h2>

<p>
	يُمكن أن يتضمن الخادم الذي يُشغل ووردبريس والبرنامج الذي عليه ثغرات أمنية، لذا تأكد من أنك تستخدم خادم مؤمن وذو إصدار مستقر أو تحقق أنك تستخدم استضافة موثوقة تتكفل بهذه الأمور عنك.
</p>

<p>
	إن كنت تستخدم استضافة مشتركة (هذه الاستضافة مستخدمة من قبل عدة مواقع وليس موقعك فقط) واخترق أحد المواقع عندها يُمكن أن يحصل المثل لموقعك حتى لو اتبعت جميع التعليمات في هذا الدليل، لذا تواصل مع مسؤول الاستضافة التي تستخدمها عن التدابير الأمنية التي يتبعونها.
</p>

<h2>
	الثغرات الأمنية في الشبكة
</h2>

<p>
	يجب أن تكون الشبكة من كلا الطرفين -طرف خادم ووردبريس وطرف العميل- موثوقة، وهذا يعني أنه عليك تحديث قواعد الجدار الناري لجهاز <a href="https://academy.hsoub.com/certificates/cisco/ccna/%D8%B6%D8%A8%D8%B7-%D9%85%D9%88%D8%AC%D9%87%D8%A7%D8%AA-%D8%B3%D9%8A%D8%B3%D9%83%D9%88-cisco-router-%D8%B9%D9%86%D8%AF-%D8%A8%D9%86%D8%A7%D8%A1-%D8%A7%D9%84%D8%B4%D8%A8%D9%83%D8%A7%D8%AA-r25/" rel="">التوجيه Router</a> ضمن منزلك وأن تكون حذرًا باستخدام الشبكات التي تعمل منها. إن شبكة مقهى الإنترنت حيث تُرسل كلمات المرور عبر اتصال غير مشفر لاسلكي أو سلكي لا يُعد شبكة موثوقة.
</p>

<p>
	يجب أن تكون الاستضافة واثقة أن شبكتها آمنة وغير مخترقة وعليك فعل المثل أيضًا لأن الثغرات الأمنية في الشبكة يُمكن أن تسمح بتسريب كلمات المرور ومعلومات حساسة أخرى.
</p>

<h2>
	كلمات المرور
</h2>

<p>
	يُمكن تجنب العديد من الثغرات المُحتملة من خلال اتباع عادات أمنية جيدة، و<a href="https://academy.hsoub.com/apps/general/%D9%83%D9%84%D9%85%D8%A7%D8%AA-%D8%A7%D9%84%D9%85%D8%B1%D9%88%D8%B1-%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%AD%D9%81%D8%B8%D9%87%D8%A7-%D9%88%D8%A7%D8%B3%D8%AA%D8%B9%D9%85%D8%A7%D9%84%D9%87%D8%A7-%D9%81%D9%8A-%D8%A7%D9%84%D8%B9%D8%A7%D9%84%D9%85-%D8%A7%D9%84%D8%B1%D9%82%D9%85%D9%8A-r381/" rel="">استخدام كلمة مرور قوية</a> هو أحدها، فالهدف من كلمة المرور أن تُصعب على الآخرين توقعها وتُصعب كسرها من خلال <a href="https://academy.hsoub.com/programming/php/wordpress/%D9%87%D8%AC%D9%85%D8%A7%D8%AA-%D8%A7%D9%84%D9%82%D9%88%D8%A9-%D8%A7%D9%84%D8%BA%D8%A7%D8%B4%D9%85%D8%A9-%D8%B9%D9%84%D9%89-%D9%85%D9%88%D8%A7%D9%82%D8%B9-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-%D9%88%D8%A7%D9%84%D8%AD%D9%85%D8%A7%D9%8A%D8%A9-%D9%85%D9%86%D9%87%D8%A7-r1440/" rel="">هجوم القوى الغاشمة</a>. تتوفر العديد من <a href="https://academy.hsoub.com/apps/general/%D8%AF%D9%84%D9%8A%D9%84-%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%AA%D8%B7%D8%A8%D9%8A%D9%82-%D8%A5%D8%AF%D8%A7%D8%B1%D8%A9-%D9%83%D9%84%D9%85%D8%A7%D8%AA-%D8%A7%D9%84%D9%85%D8%B1%D9%88%D8%B1-keepassxc-r466/" rel="">مولدات كلمات</a> المرور ضمن شبكة الإنترنت التي تستطيع استخدامها لإنشاء كلمات مرور آمنة.
</p>

<p>
	يتضمن ووردبريس مقياس لقوة كلمة المرور يظهر عند تغيير كلمة المرور، تستطيع استخدامه عند تغيير كلمة المرور لضمان أن قوة هذه الكلمة مناسبة.
</p>

<p>
	أمور عليك تجنبها عند اختيار كلمة المرور:
</p>

<ul>
	<li>
		أي جزء من اسمك الحقيقي أو اسم المستخدم أو اسم الشركة أو اسم موقعك.
	</li>
	<li>
		كلمة من القاموس في أي لغة.
	</li>
	<li>
		كلمة مرور قصيرة.
	</li>
	<li>
		أي كلمة مرور رقمية فقط أو كلمة مرور تعتمد فقط على الحروف (مزيج من الاثنين هو الخيار الأفضل).
	</li>
</ul>

<p>
	إن كلمة المرور ضرورية ليس فقط لحماية محتوى مدونتك بل لأن المخترق الذي يتمكن من الوصول لحساب المدير يستطيع تثبيت برمجيات خبيثة يُمكن أن توقف خادمك كليًا.
</p>

<p>
	يُفضل تفعيل <a href="https://academy.hsoub.com/apps/web/wordpress/%D8%A7%D9%84%D8%A7%D8%B3%D8%AA%D9%8A%D8%AB%D8%A7%D9%82-%D8%A7%D9%84%D8%AB%D9%86%D8%A7%D8%A6%D9%8A-2fa-%D9%88%D8%A7%D8%B3%D8%AA%D8%B9%D9%85%D8%A7%D9%84%D9%87-%D9%84%D8%B2%D9%8A%D8%A7%D8%AF%D8%A9-%D8%A3%D9%85%D8%A7%D9%86-%D9%85%D9%88%D8%A7%D9%82%D8%B9-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r605/" rel="">الاستيثاق الثنائي</a> إلى جانب استخدام كلمة مرور قوية كإجراء أمني إضافي.
</p>

<h2>
	FTP
</h2>

<p>
	يجب عليك عند الاتصال بخادمك استخدام اتصال <a href="https://academy.hsoub.com/devops/linux/%D9%83%D9%8A%D9%81-%D8%AA%D8%B3%D8%AA%D8%AE%D8%AF%D9%90%D9%85-sftp-%D9%84%D9%86%D9%82%D9%84-%D8%A7%D9%84%D9%85%D9%84%D9%81%D9%91%D8%A7%D8%AA-%D8%A8%D8%A3%D9%85%D8%A7%D9%86-%D8%A5%D9%84%D9%89-%D8%AE%D8%A7%D8%AF%D9%88%D9%85-%D8%A8%D8%B9%D9%8A%D8%AF-r30/" rel="">SFTP</a> المُشفر إن كانت الاستضافة توفره وإن كنت غير متأكد من أن الاستضافة توفر هذا النوع من الاتصال تستطيع التواصل معها والاستفسار.
</p>

<p>
	لا يختلف استخدام SFTP عن استخدام <a href="https://academy.hsoub.com/apps/web/wordpress/%D9%83%D9%8A%D9%81-%D8%AA%D8%B3%D8%AA%D8%AE%D8%AF%D9%85-ftp-%D9%84%D9%86%D9%82%D9%84-%D9%85%D9%84%D9%81%D8%A7%D8%AA-%D9%85%D8%AF%D9%88%D9%86%D8%A9-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-%D8%A7%D9%84%D8%AE%D8%A7%D8%B5-%D8%A8%D9%83%D8%9F-r107/" rel="">FTP</a> إلا من ناحية تشفير كلمة مرورك والمعلومات الأخرى عند نقلها بين حاسوبك وموقعك، أي أن كلمة مرورك لا تُرسل غير مشفرة ولا يمكن اعتراضها من قبل مهاجم.
</p>

<h2>
	صلاحيات الملف
</h2>

<p>
	يتمتع ووردبريس ببعض الميزات القوية بسبب سماحه لملفات متنوعة أن تكون قابلة للكتابة من قبل الخادم لكن السماح بالكتابة لملفات موقع يحتمل الخطورة خصوصًا في بيئة الاستضافات المشتركة. يُفضل أن تُقيّد صلاحيات الملفات قدر الإمكان وتوفر صلاحيات أعلى فقط عند الحاجة للكتابة أو إنشاء مجلدات معينة بصلاحيات أقل تقييدًا بغرض استخدامها لرفع الملفات مثلًا.
</p>

<p>
	إليك احتمال ممكن لصلاحيات الملفات، يجب أن تكون جميع الملفات مملوكة من قبل مستخدم الحساب ويجب أن تكون قابلة للكتابة من قبلك، وأي ملف يحتاج صلاحية الكتابة من ووردبريس يجب أن يكون قابل للكتابة من قبل الخادم، وإن كانت استضافتك تتطلب هذا فهذا يعني أن هذه الملفات يجب أن تتبع للمجموعة التابع لها المستخدم الذي تستخدمه عمليات الخادم.
</p>

<ul>
	<li>
		<p>
			المجلد الرئيسي لووردبريس /: يجب أن تكون جميع الملفات قابلة للكتابة من قبل حساب المستخدم الخاص بك ما عدا ملف ‎.htaccess إن كنت تريد أن يولد ووردبريس تلقائيًا قواعد إعادة الكتابة لك.
		</p>
	</li>
	<li>
		<p>
			منطقة إدارة ووردبريس /wp-admin/: يجب أن تكون جميع الملفات قابلة للكتابة من قبل حساب المستخدم الخاص بك.
		</p>
	</li>
	<li>
		<p>
			المحتوى الخاص بالمستخدم /wp-content/: يجب أن يكون قابل للكتابة من قبل حساب المستخدم الخاص بك وعمليات الخادم. وسوف تجد ضمن مجلد wp-content:
		</p>
	</li>
	<li>
		<p>
			ملفات القوالب /wp-content/themes/: يجب أن تكون جميع الملفات قابلة للكتابة من قبل عمليات الخادم إن كنت تريد استخدام المحرر الخاص بالقالب لكن إن كنت لا تريد استخدامه يُمكن أن تكون جميع الملفات قابلة للكتابة من قبل حساب المستخدم الخاص بك فقط.
		</p>
	</li>
	<li>
		<p>
			ملفات الإضافات /wp-content/plugins/: يجب أن تكون جميع الملفات قابلة للكتابة من قبل حساب المستخدم.
		</p>
	</li>
</ul>

<p>
	يجب أن توثق المجلدات التي يُمكن أن تتواجد ضمن /wp-content/ ومطلوبة من قبل أي إضافة أو قالب حيث يمكن أن تتغير الصلاحيات.
</p>

<h3>
	تغيير صلاحيات الملف
</h3>

<p>
	إن كنت تملك وصول للصدفة shell لخادمك تستطيع تغيير صلاحيات الملف تباعًا باستخدام الأمر التالي:
</p>

<ul>
	<li>
		للمجلدات:
	</li>
</ul>

<pre class="ipsCode">find /path/to/your/wordpress/install/ -type d -exec chmod 755 {} \;
</pre>

<ul>
	<li>
		للملفات:
	</li>
</ul>

<pre class="ipsCode">find /path/to/your/wordpress/install/ -type f -exec chmod 644 {} \;
</pre>

<h3>
	التحديثات التلقائية
</h3>

<p>
	عندما تطلب من ووردبريس إجراء تحديث تلقائي تُنفذ جميع العمليات من خلال المستخدم الذي يملك الملفات وليس مستخدم الخادم. تُضبط جميع صلاحيات الملفات إلى 0644 وجميع المجلدات إلى 0755 قابلة للكتابة من قبل أي مستخدم وقابلة للقراءة من أي شخص بما في ذلك الخادم.
</p>

<h2>
	أمن قاعدة البيانات
</h2>

<p>
	إن كنت تُشغل عدة مدونات على نفس الخادم يُفضل أن تُبقي كل مدونة ضمن قاعدة بيانات منفصلة تُدار كل منها من قبل مستخدم مختلف، وهذا يُنفذ عند <a href="https://academy.hsoub.com/programming/php/wordpress/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%AA%D8%AB%D8%A8%D9%8A%D8%AA-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r1248/" rel="">تثبيت ووردبريس</a>. هذه استراتيجية احتواء ففي حال نجح مهاجم في اختراق تثبيت ووردبريس واحد، تُصعب هذه الخطوة عليه الوصول لمدوناتك الأخرى.
</p>

<p>
	إن كنت تُدير MySQL بنفسك عليك أن تفهم جيدًا آلية ضبط MySQL وتعطيل الميزات التي لا تحتاجها (مثل قبول اتصالات بعيدة TCP). ألق نظرة على <a href="https://academy.hsoub.com/devops/servers/databases/mysql/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%AA%D8%A3%D9%85%D9%8A%D9%86-%D9%82%D9%88%D8%A7%D8%B9%D8%AF-%D8%A7%D9%84%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA-mysql-mariadb-%D8%B9%D9%84%D9%89-%D8%AE%D9%88%D8%A7%D8%AF%D9%8A%D9%85-%D9%84%D9%8A%D9%86%D9%83%D8%B3-r54/" rel="">تأمين قاعدة بيانات MySQL</a>.
</p>

<h3>
	تقييد صلاحيات مستخدم قاعدة البيانات
</h3>

<p>
	يحتاج مستخدم قاعدة بيانات MySQL صلاحيات قراءة وكتابة البيانات لقاعدة البيانات SELECT و INSERT و UPDATE و DELETE لإجراء عمليات ووردبريس العادية مثل نشر مقالات المدونة أو رفع ملفات الوسائط أو نشر التعليقات أو وإنشاء مستخدمي ووردبريس جُدد أو تثبيت إضافات ووردبريس، لذا يُمكنك تعطيل أي صلاحيات أخرى ضمن قاعدة البيانات مثل DROP و ALTER و GRANT، وبهذا فأنت تُحسن من سياسات الاحتواء.
</p>

<p>
	<strong>ملاحظة</strong>: تتطلب بعض إضافات وقوالب وتحديثات ووردبريس الرئيسية إجراء تعديلات بنيوية مثل إضافة جداول جديدة أو تغيير في المخطط، وفي مثل هذه الحالات عليك السماح مؤقتًا لمستخدم قاعدة البيانات استخدام الصلاحيات المطلوبة قبل تثبيت الإضافة أو التحديث.
</p>

<p>
	<strong>تحذير</strong>: إن محاولة التحديث دون امتلاك هذه الصلاحيات يُمكن أن يُسبب بعض المشاكل عند تغيير بنية قاعدة البيانات، لذا لا يُصنح بتعطيل هذه الصلاحيات لكن إن كنت تشعر بالحاجة لفعل ذلك لضرورات أمنية عندها من فضلك تأكد من امتلاكك نسخة احتياطية تتضمن كامل قاعدة البيانات مجربة على أنها نسخة احتياطية سليمة يُمكن استخدامها لاستعادة الموقع بسهولة. يُمكن حل مشكلة تحديث فاشل لقاعدة البيانات من خلال استعادة قاعدة البيانات إلى النسخة القديمة ثم منح الصلاحيات اللازمة لمستخدم قاعدة البيانات ومحاولة التحديث مرة أخرى. استعادة قاعدة البيانات سوف يعيدها لنسختها القديمة وهنا سوف يكتشف ووردبريس هذه النسخة ويسمح لك بتشغيل أوامر SQL اللازمة عليها. لا تغير معظم تحديثات ووردبريس بنية قاعدة البيانات لكن هذا محتمل أحيانًا.
</p>

<h2>
	تأمين المجلد wp-admin
</h2>

<p>
	إن إضافة كلمة مرور من جهة الخادم للمجلد /wp-admin/ يُضيف طبقة ثانية من الحماية لمنطقة المدير في مدونتك وصفحة تسجيل الدخول وملفاتك، وهذا يُجبر المهاجم أو الروبوت على مهاجمة الطبقة الثانية هذه بدلًا من ملفات المدير نفسها. تُدار العديد من هجمات ووردبريس تلقائيًا من قبل روبوتات برمجيات خبيثة.
</p>

<p>
	يُحتمل أن يؤدي تأمين المجلد /wp-admin/ إلى تعطيل بعض وظائف ووردبريس مثل معالج AJAX في wp-admin/admin-ajax.php.
</p>

<p>
	تُصنف معظم هجمات ووردبريس الشائعة إلى صنفين هما:
</p>

<ol>
	<li>
		إرسال <a href="https://academy.hsoub.com/programming/general/http-%D9%84%D9%86%D9%86%D8%B7%D9%84%D9%82-%D8%B4%D8%B1%D8%AD-%D8%A7%D9%84%D8%AA%D8%AE%D8%A7%D8%B7%D8%A8-%D8%A8%D9%8A%D9%86-%D8%A7%D9%84%D8%B9%D9%85%D9%8A%D9%84-%D9%88%D8%A7%D9%84%D8%AE%D8%A7%D8%AF%D9%88%D9%85-r74/" rel="">طلبات HTTP</a> مشغولة يدويًا لخادمك مع محتوى مُخصص لاستغلال ثغرة مُعينة، وهذا يشمل الإضافات والبرمجيات القديمة غير المُحدثة.
	</li>
	<li>
		محاولة امتلاك وصول للمدونة من خلال تخمين كلمة المرور باستخدام هجوم القوى الغاشمة.
	</li>
</ol>

<p>
	إن الاستخدام الأفضل لطبقة الحماية الثانية باستخدام كلمة المرور هو فرض طلبات HTTPS مُشفرة لصفحات الإدارة لتكون جميع الاتصالات والبيانات الحساسة مُشفرة.
</p>

<h2>
	تأمين المجلد wp-includes
</h2>

<p>
	يُمكن إضافة طبقة ثانية من الحماية حيث لا يجب <strong>لأي مستخدم</strong> الوصول إلى الشيفرات، وأحد الطرق لفعل ذلك هي من خلال حجب الشيفرات التي تستخدم <code>mod_rewrite</code> ضمن ملف ‎.htaccess .
</p>

<p>
	<strong>ملاحظة</strong>: كي تضمن ألا يكتب ووردبريس فوق الشيفرة التالية عليك وضعها خارج وسمي <code>‎# BEGIN WordPress</code> و <code>‎# END WordPress</code> ضمن ملف ‎.htaccess إذ يستطيع ووردبريس الكتابة على أي شيء بين هذين الوسمين.
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_1583_18" style=""><span class="com"># Block the include-only files.</span><span class="pln">
</span><span class="pun">&lt;</span><span class="typ">IfModule</span><span class="pln"> mod_rewrite</span><span class="pun">.</span><span class="pln">c</span><span class="pun">&gt;</span><span class="pln">
</span><span class="typ">RewriteEngine</span><span class="pln"> </span><span class="typ">On</span><span class="pln">
</span><span class="typ">RewriteBase</span><span class="pln"> </span><span class="pun">/</span><span class="pln">
</span><span class="typ">RewriteRule</span><span class="pln"> </span><span class="pun">^</span><span class="pln">wp</span><span class="pun">-</span><span class="pln">admin</span><span class="pun">/</span><span class="pln">includes</span><span class="pun">/</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="pun">[</span><span class="pln">F</span><span class="pun">,</span><span class="pln">L</span><span class="pun">]</span><span class="pln">
</span><span class="typ">RewriteRule</span><span class="pln"> </span><span class="pun">!^</span><span class="pln">wp</span><span class="pun">-</span><span class="pln">includes</span><span class="pun">/</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="pun">[</span><span class="pln">S</span><span class="pun">=</span><span class="lit">3</span><span class="pun">]</span><span class="pln">
</span><span class="typ">RewriteRule</span><span class="pln"> </span><span class="pun">^</span><span class="pln">wp</span><span class="pun">-</span><span class="pln">includes</span><span class="pun">/[^/]+</span><span class="pln">\.php$ </span><span class="pun">-</span><span class="pln"> </span><span class="pun">[</span><span class="pln">F</span><span class="pun">,</span><span class="pln">L</span><span class="pun">]</span><span class="pln">
</span><span class="typ">RewriteRule</span><span class="pln"> </span><span class="pun">^</span><span class="pln">wp</span><span class="pun">-</span><span class="pln">includes</span><span class="pun">/</span><span class="pln">js</span><span class="pun">/</span><span class="pln">tinymce</span><span class="pun">/</span><span class="pln">langs</span><span class="pun">/.+</span><span class="pln">\.php </span><span class="pun">-</span><span class="pln"> </span><span class="pun">[</span><span class="pln">F</span><span class="pun">,</span><span class="pln">L</span><span class="pun">]</span><span class="pln">
</span><span class="typ">RewriteRule</span><span class="pln"> </span><span class="pun">^</span><span class="pln">wp</span><span class="pun">-</span><span class="pln">includes</span><span class="pun">/</span><span class="pln">theme</span><span class="pun">-</span><span class="pln">compat</span><span class="pun">/</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="pun">[</span><span class="pln">F</span><span class="pun">,</span><span class="pln">L</span><span class="pun">]</span><span class="pln">
</span><span class="pun">&lt;/</span><span class="typ">IfModule</span><span class="pun">&gt;</span><span class="pln">


</span><span class="com"># BEGIN WordPress</span></pre>

<p>
	لاحظ أن هذا لن يعمل جيدًا على تثبيت ووردبريس متعدد المواقع لأن القاعدة التالية:
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_1583_20" style=""><span class="typ">RewriteRule</span><span class="pln"> </span><span class="pun">^</span><span class="pln">wp</span><span class="pun">-</span><span class="pln">includes</span><span class="pun">/[^/]+</span><span class="pln">\.php$ </span><span class="pun">-</span><span class="pln"> </span><span class="pun">[</span><span class="pln">F</span><span class="pun">,</span><span class="pln">L</span><span class="pun">]</span></pre>

<p>
	سوف يمنع ملف ms-file.php من توليد الصور. حذف هذا السطر سوف يسمح للشيفرة بالعمل لكن يوفر سوية حماية أقل.
</p>

<h2>
	تأمين الملف wp-config.php
</h2>

<p>
	تستطيع نقل ملف <code>wp-config.php</code> إلى مجلد أعلى من مجلد تثبيت ووردبريس، وهذا يعني أنه عليك نقل ملف <code>wp-config.php</code> خارج المجلد الجذر في حال كان موقعك مثبتًا في المجلد الرئيسي.
</p>

<p>
	<strong>ملاحظة</strong>: يؤكد البعض أن <a href="http://wordpress.stackexchange.com/q/58391/3898" rel="external nofollow">نقل ملف wp-config.php يملك منافع أمنية بسيطة</a>، وإن لم تُنفذ العملية بحذر يُمكن أن تسبب ثغرات أمنية خطيرة. <a href="http://wordpress.stackexchange.com/a/74972/24425" rel="external nofollow">البعض الآخر يخالف هذا الرأي</a>.
</p>

<p>
	لاحظ أنه يُمكن تخزين ملف <code>wp-config.php</code> بمجلد أعلى من مجلد تثبيت ووردبريس بمستوى واحد فقط كما يجب عليك التحقق أنك أنت والخادم فقط من يستطيعون قراءة هذا الملف (هذا يعني عادةً استخدام صلاحيات 400 أو 440).
</p>

<p>
	إن استخدمت خادمًا مع ملف ‎.htaccess تستطيع إضافة التالي لهذا الملف (في أعلى الملف) لمنع وصول أي شخص يبحث عنه.
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_1583_22" style=""><span class="tag">&lt;files</span><span class="pln"> </span><span class="atn">wp-config</span><span class="pln">.</span><span class="atn">php</span><span class="tag">&gt;</span><span class="pln">
order allow,deny
deny from all
</span><span class="tag">&lt;/files&gt;</span></pre>

<h2>
	تعطيل تحرير الملفات
</h2>

<p>
	تسمح لك لوحة تحكم ووردبريس افتراضيًا للمدير بتعديل ملفات PHP مثل ملفات الإضافات والقوالب، وهذه عادةً الأداة الأولى التي يستخدمها المهاجم إن تمكن من الدخول بما أنها تسمح له بتنفيذ شيفرة برمجية. يمتلك ووردبريس ثابتًا لتعطيل تحرير الملفات من لوحة التحكم، وبالتالي إضافة هذا السطر ضمن ملف wp-config.php مكافئ لإزالة صلاحيات edit<em>themes وedit</em>plugins وedit_files من جميع المستخدمين.
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_1583_24" style=""><span class="pln">define</span><span class="pun">(</span><span class="str">'DISALLOW_FILE_EDIT'</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">);</span></pre>

<p>
	لن يمنع هذا السطر المهاجم من رفع ملفات خبيثة لموقعك لكنه يُحبط بعض الهجمات.
</p>

<h2>
	الإضافات
</h2>

<p>
	أولًأ عليك التحقق من أن إضافات جميعها بأحدث إصدار وإن كنت لا تستخدم إضافة ما عليك حذفها من نظامك.
</p>

<h3>
	الجدار الناري
</h3>

<p>
	يوجد العديد من الإضافات والخدمات التي تعمل كجدار ناري لموقعك الإلكتروني حيث يعمل بعضها من خلال تعديل ملف ‎.htaccess مع تقييد الوصول على مستوى <a href="https://academy.hsoub.com/devops/servers/web/apache/%D9%81%D9%8A%D8%AF%D9%8A%D9%88-%D8%AA%D8%AB%D8%A8%D9%8A%D8%AA-%D9%88%D8%B6%D8%A8%D8%B7-%D8%AE%D8%A7%D8%AF%D9%85-apache-r407/" rel="">خادم Apache</a> قبل أن يُعالج من قبل ووردبريس. تُعد إضافة <a href="https://wordpress.org/plugins/better-wp-security/" rel="external nofollow">iThemes Security</a> أو <a href="https://wordpress.org/plugins/all-in-one-wp-security-and-firewall/" rel="external nofollow">All in One WP Security</a> أمثلة جيدة، وهناك إضافات جدار ناري تعمل على مستوى ووردبريس مثل <a href="https://wordpress.org/plugins/wordfence/" rel="external nofollow">WordFence</a> و <a href="https://wordpress.org/plugins/wp-simple-firewall/" rel="external nofollow">Shield</a> وتحاول ترشيح الهجمات عند تحميل ووردبريس لكن قبل أن يُعالج بشكل كامل.
</p>

<p>
	تستطيع أيضًا تثبيت WAF جدار ناري للخادم لترشيح المحتوى قبل معالجته من ووردبريس، والجدار الناري الأكثر استخدامًا هو ModSecurity.
</p>

<p>
	يُمكن إضافة الجدار الناري لموقع كحاجز يتوسط بين الزوار من شبكة الإنترنت والخادم حيث تعمل هذه الخدمات <a href="https://academy.hsoub.com/devops/servers/web/nginx/%D9%83%D9%8A%D9%81%D9%8A%D9%91%D8%A9-%D8%B6%D8%A8%D8%B7-nginx-%D9%84%D9%84%D8%B9%D9%85%D9%84-%D9%83%D8%AE%D8%A7%D8%AF%D9%85-%D9%88%D9%8A%D8%A8-%D9%88%D9%83%D9%88%D8%B3%D9%8A%D8%B7-%D8%B9%D9%83%D8%B3%D9%8A-%D9%84%D9%80-apache-%D8%B9%D9%84%D9%89-%D8%AE%D8%A7%D8%AF%D9%85-ubuntu-1804-r396/" rel="">كخادم وكيل عكسي</a> reverse proxies يقبل الطلبات الأولية ويُعيد توجيهها إلى خادمك بعد تجريدها من الطلبات الخبيثة. يستطيع الجدار الناري تحقيق ذلك من خلال تعديل سجلات DNS باستخدام سجل A أو تبديل كامل لخادم DNS مما يسمح للزيارات بالمرور عبر الجدار الناري قبل وصولها لموقعك. توفر بضع شركات هذه الخدمة مثل CloudFlare و Sucuri و Incapsula.
</p>

<p>
	كما أن خدمات الطرف الثالث هذه تعمل كشبكة إيصال محتوى لتوفر تحسين بالأداء لموقعك وسهولة بالوصول له عالميًا.
</p>

<h3>
	إضافات تحتاج صلاحية الكتابة
</h3>

<p>
	إن كانت إحدى الإضافات تحتاج صلاحية الكتابة على ملفات ووردبريس ومجلداته عليك قراءة الشيفرة البرمجية لتضمن أنها شرعية أو تحقق من شخص تثق به. تستطيع التحقق من بعض الأماكن مثل <a href="https://codex.wordpress.org/Using_the_Support_Forums" rel="external nofollow">نماذج الدعم</a> و<a href="https://codex.wordpress.org/IRC" rel="external nofollow">قناة IRC</a> إن كنت قادرًا على التواصل باللغة الأجنبية أو اطلب المساعدة في <a href="https://academy.hsoub.com/questions/c3-programming/" rel="">قسم الأسئلة والأجوبة</a> في أكاديمية حسوب.
</p>

<h3>
	إضافات تنفيذ الشيفرة البرمجية
</h3>

<p>
	كما قلت سابقًا فإن جزء من تأمين ووردبريس هو احتواء الخطر الحاصل في حال نجاح المهاجم باختراق الموقع، ولذلك فإن الإضافات التي تسمح بتنفيذ شيفرة <a href="https://wiki.hsoub.com/PHP" rel="external">PHP</a> أو وأي شيفرة أخرى من إدخالات قاعدة البيانات ترفع نسبة الخطر في حال نجاح المهاجم في اختراق الموقع.
</p>

<p>
	تستطيع تجنب استخدام هذه الإضافات باستخدام <a href="https://academy.hsoub.com/apps/web/wordpress/%D8%A7%D9%84%D8%B5%D9%81%D8%AD%D8%A7%D8%AA-%D8%A5%D9%86%D8%B4%D8%A7%D8%A4%D9%87%D8%A7-%D9%88%D8%AA%D9%86%D8%B8%D9%8A%D9%85%D9%87%D8%A7-%D9%88%D8%A7%D8%AE%D8%AA%D9%84%D8%A7%D9%81%D9%87%D8%A7-%D8%B9%D9%86-%D8%A7%D9%84%D9%85%D9%82%D8%A7%D9%84%D8%A7%D8%AA-%D9%81%D9%8A-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r389/" rel="">قوالب الصفحة المخصصة</a> التي تستدعي الدالة، وهذه الخطوة في الحماية تكون فعّالة فقط عند تعطيل تعديل الملف من ووردبري](اقرأ قسم صلاحيات الملف في بداية المقال).
</p>

<h2>
	الأمن من خلال الغموض
</h2>

<p>
	إن <a href="https://ar.wikipedia.org/wiki/%D8%A7%D9%84%D8%A3%D9%85%D9%86_%D9%85%D9%86_%D8%AE%D9%84%D8%A7%D9%84_%D8%A7%D9%84%D8%BA%D9%85%D9%88%D8%B6" rel="external nofollow">التأمين باستخدام الغموض</a> Security through obscurity هي تقنية غير شائعة لكن يوجد عدة أماكن في ووردبريس يُمكن للمعلومات السرية المساعدة في رفع السوية الأمنية:
</p>

<ol>
	<li>
		<strong>أعد تسمية حساب المدير:</strong> تجنب استخدام أسماء سهلة التوقع عند إنشاء حساب المدير مثل admin أو webmaster كأسماء مستخدمين كون حساب المدير يتعرض للهجوم أولًا. تستطيع إعادة تسمية حساب موجود ضمن تثبيت ووردبريس باستخدام لوحة الأوامر في MySQL باستخدام واجهة أمامية للتعامل مع قاعدة البيانات مثل <a href="https://academy.hsoub.com/apps/web/wordpress/%D8%AF%D9%84%D9%8A%D9%84-%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-filezilla-%D9%88-phpmyadmin-%D9%84%D8%A5%D8%AF%D8%A7%D8%B1%D8%A9-%D9%85%D9%84%D9%81%D8%A7%D8%AA-%D9%88%D9%82%D9%88%D8%A7%D8%B9%D8%AF-%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA-%D9%85%D9%88%D9%82%D8%B9-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r367/" rel="">phpMyAdmin</a> أو باستخدام أمر مثل:
	</li>
</ol>

<pre class="ipsCode prettyprint lang-sql prettyprinted" id="ips_uid_1583_26" style=""><span class="pln">wp_users SET user_login </span><span class="pun">=</span><span class="pln"> </span><span class="str">'newuser'</span><span class="pln"> WHERE user_login </span><span class="pun">=</span><span class="pln"> </span><span class="str">'admin'</span><span class="pun">;</span></pre>

<ol start="2">
	<li>
		<strong>غير بادئة جداول قاعدة البيانات:</strong> تفترض العديد من هجمات حقن قاعدة البيانات SQL في ووردبريس أن بادئة الجدول هي <code>wp_‎</code> كونها المستخدمة افتراضيًا عند تثبيت ووردبريس، لذا فإن تغييرها يُمكن أن يحجب على الأقل بعض <a href="https://academy.hsoub.com/devops/security/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%AA%D8%A3%D9%85%D9%8A%D9%86-%D8%A7%D9%84%D8%AE%D9%88%D8%A7%D8%AF%D9%8A%D9%85-%D8%A7%D9%84%D8%B3%D8%AD%D8%A7%D8%A8%D9%8A%D8%A9-%D8%B6%D8%AF-%D9%87%D8%AC%D9%85%D8%A7%D8%AA-%D8%AD%D9%82%D9%86-sql-r98/" rel="">هجمات حقن SQL</a>.
	</li>
</ol>

<h2>
	النسخ الاحتياطي للبيانات
</h2>

<p>
	أنشئ نسخًا احتياطية من بياناتك بانتظام مُضمنًا قواعد بيانات MySQL، تستطيع الاطلاع على مقال <a href="https://academy.hsoub.com/apps/web/wordpress/%D9%83%D9%8A%D9%81-%D8%AA%D9%86%D8%B3%D8%AE-%D9%82%D8%A7%D8%B9%D8%AF%D8%A9-%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA%D9%83-%D8%A7%D8%AD%D8%AA%D9%8A%D8%A7%D8%B7%D9%8A%D9%8B%D8%A7-%D9%81%D9%8A-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r366/" rel="">إنشاء نسخة احتياطية لقاعدة بياناتك</a>.
</p>

<p>
	إن الوثوق من عدم وجود تلاعب في النسخ الاحتياطية أمر مهم جدًا، لذا فإن تشفير النسخة الاحتياطية والاحتفاظ بسجل قيمة مُعمّاة MD5 لكل ملف نسخ احتياطي، كما أن وضع النسخ الاحتياطية على وضع القراءة فقط يزيد ثقتك أن بياناتك مصونة ولم يعبث أحد فيها.
</p>

<p>
	تعتمد الاستراتيجية الجيدة للنسخ الاحتياطي على إنشاء نُسخ احتياطية بفترات زمنية منتظمة حيث تتضمن هذه النسخ ملفات تثبيت ووردبريس وقاعدة البيانات وتُحفظ في مكان آمن. تخيل إنشاء نسخة احتياطية كل أسبوع لموقعك وتعرض للاختراق في الأول من الشهر الحالي لكنك لم تكتشف الاختراق إلا عند منتصف الشهر، هذا يعني أنك تملك نسخًا احتياطية غير آمنة يمكنك استخدامها لمعرفة كيف تعرض موقعك للاختراق.
</p>

<h2>
	السجل
</h2>

<p>
	السجلات هي الصديق الأفضل لك والتي تُساعدك على فهم ما يحصل ضمن موقع خصوصًا إن كنت تحاول تقصي ما حصل بعد عملية اختراق، وعلى عكس المعتقد السائد فإن السجلات تسمح لك معرفة ما حصل ومن قبل من ومتى.
</p>

<p>
	تسمح لك السجلات بمعرفة عنوان IP والزمن والخطوات التي اتخذها المهاجم، وسوف تتمكن من رؤية أي من هذه الهجمات من خلال سجلات <a href="https://academy.hsoub.com/programming/general/%D8%A7%D8%AD%D9%85-%D9%85%D9%88%D9%82%D8%B9%D9%83-%D9%85%D9%86-%D8%A7%D9%84%D8%A7%D8%AE%D8%AA%D8%B1%D8%A7%D9%82-r864/" rel="">هجمات البرمجة عبر المواقع XSS</a> وتضمين الملف عن بعد RFI وتضمين الملف المحلي LFI ومحاولات تجاز المجلدات. سوف تتمكن أيضًا من رؤية محاولات تنفيذ هجوم القوى الغاشمة.
</p>

<p>
	إن تمكنت من فهم السجلات سوف تتمكن من رؤية أمور مثل متى تُستخدم محررات الإضافة والقالب ومتى يُحدث شخص ما الودجات ومتى تُضاف المقالات والصفحات. أي سوف تتمكن من الاطلاع على جميع العناصر الأساسية لتنفيذ أي تحقيق جنائي على خادمك. يوجد بضع إضافات أمنية لووردبريس يُمكن أن تُساعدك على هذا مثل <a href="https://wordpress.org/plugins/sucuri-scanner/" rel="external nofollow">Sucuri Auditing tool</a> أو إضافة <a href="https://wordpress.org/plugins/audit-trail/" rel="external nofollow">Audit Trail</a>.
</p>

<p>
	يوجد خيارين للحلول مفتوحة المصدر التي سوف ترغب في وجودها ضمن خادمك من وجهة نظر أمنية. يُمكنك أن يعمل OSSEC (نظام اكتشاف الدخيل مجاني مفتوح المصدر) على أي توزيعة NIX (مصطلح يُشير إلى توزيعات لينكس وUnix) كما يعمل على نظام ويندوز، وهو قوي جدًا عند ضبطه بالطريقة الصحيحة. الفكرة هي ربط وتجميع السجلات لذا عليك ضبطه لتسجيل جميع سجلات الدخول وسجلات الأخطاء وإن كنت تملك عدة مواقع على الخادم. يجب أن تُرشح المعلومات الغير مفيدة، حيث يظهر لك افتراضيًا الكثير من البيانات الغير مفيدة لذا يجب ضبطه بدقة.
</p>

<h2>
	المراقبة
</h2>

<p>
	أحيانًا لا تكون التدابير التي اتخذتها كافية وتتعرض للاختراق لذا فإن عمليتي المراقبة والكشف مهمتان جدًا حيث تسمح لك هذه العمليات الاستجابة بشكل أسرع لمعرفة ما حصل واستعادة موقعك.
</p>

<h3>
	مراقبة السجلات
</h3>

<p>
	إن كنت تستعمل خادمًا خاصًا أو خادمًا افتراضيًا وتمتلك رفاهية الدخول كمدير له عندها لديك القدرة على ضبط الأمور بسهولة لتتمكن من معرفة ما يحصل. يُسهل عليك <a href="http://www.ossec.net/" rel="external nofollow">OSSEC</a>.
</p>

<h3>
	مراقبة أي تغيرات في ملفاتك
</h3>

<p>
	عند وقوع أي هجوم يوجد دائمًا آثار له سواء كانت ضمن السجلات أو ضمن ملفات النظام (ملفات جديدة أو ملفات مُعدلة أو غيرها). إن كنت تستخدم <a href="http://www.ossec.net/" rel="external nofollow">OSSEC</a> على سبيل المثال فإنه سوف يراقب ملفاتك ويُنبهك عند حصول أي تغيير.
</p>

<h4>
	الأهداف
</h4>

<p>
	إن أهداف استخدام نظام تتبع ملفات النظام:
</p>

<ul>
	<li>
		مراقبة الملفات المُضافة أو المعدلة
	</li>
	<li>
		تسجيل التغييرات والإضافات
	</li>
	<li>
		إمكانية عكس التغييرات الصغيرة
	</li>
	<li>
		تحذيرات مؤتمتة
	</li>
</ul>

<h4>
	المقاربات العامة
</h4>

<p>
	يستطيع المدير مراقبة ملفات النظام من خلال تقنيات عامة مثل:
</p>

<ul>
	<li>
		أدوات النظام
	</li>
	<li>
		التحكم بالإصدار
	</li>
	<li>
		مراقبة على مستوى النظام أو النواة
	</li>
</ul>

<h4>
	أدوات خاصة
</h4>

<p>
	تتضمن خيارات مراقبة ملفات النظام ما يلي:
</p>

<ul>
	<li>
		<a href="https://ar.wikipedia.org/wiki/%D8%AF%D9%8A%D9%81" rel="external nofollow">diff</a> - ابن نسخة نظيفة من موقعك وقارنها مع النسخة العاملة حاليًا
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/workflow/git/%D8%A5%D9%86%D8%B4%D8%A7%D8%A1-%D8%A3%D9%88%D9%84-%D9%85%D8%B3%D8%AA%D9%88%D8%AF%D8%B9-%D9%84%D9%83-%D9%85%D9%86-%D8%AE%D9%84%D8%A7%D9%84-%D8%AC%D9%8A%D8%AA-git-r1594/" rel="">Git</a> - إدارة الشيفرة المصدرية
	</li>
	<li>
		<a href="https://en.wikipedia.org/wiki/Inotify" rel="external nofollow">inotify</a> و <a href="http://inotify.aiken.cz/?section=incron&amp;page=doc&amp;lang=en" rel="external nofollow">incorn</a> - خدمة مراقبة الملفات على مستوى نواة النظام يمكن استخدام أوامر على أحداث ملفات النظام.
	</li>
	<li>
		<a href="https://github.com/gregghz/Watcher/blob/master/jobs.yml" rel="external nofollow">Watcher</a> - مكتبة بايثون من أجل inotify.
	</li>
	<li>
		<a href="http://ossec.net/" rel="external nofollow">OSSEC</a> - نظام اكتشاف الدخلاء مفتوح المصدر يُنفذ عمليات تحليل للسجل وتحقق من تكاملية الملفات وسياسة مراقبة واكتشاف rootkit وتنبيهات بالزمن الحقيقي واستجابة فورية.
	</li>
</ul>

<h4>
	الاعتبارات
</h4>

<p>
	يوجد العديد من الاعتبارات التي يجب الأخذ بها عند ضبط استراتيجية مراقبة للملفات تتضمن ما يلي:
</p>

<ul>
	<li>
		تشغيل خدمة أو النص البرمجي للمراقبة كمدير root فهذا يُصعب هذا على المهاجمين تعطيل أو تعديل حلول مراقبة ملفات النظام.
	</li>
	<li>
		تعطيل المراقبة خلال عمليات التحديث أو الصيانة المجدولة لمنع التنبيهات غير الضرورية عند إجراء صيانة منتظمة للموقع.
	</li>
	<li>
		مراقبة الملفات التنفيذية فقط فمن الآمن مراقبة الملفات التنفيذية فقط مثل ملفات ‎.php أو غيرها حيث أن ترشيح الملفات الغير تنفيذية يقلل من المدخلات والتنبيهات غير الضرورية ضمن السجلات.
	</li>
	<li>
		استخدام صلاحيات حازمة لملفات النظام لذا عليك القراءة عن تأمين صلاحيات وملكية الملفات، وعمومًا تجنب إعطاء صلاحيات التنفيذ أو الكتابة قدر الإمكان.
	</li>
</ul>

<h3>
	مراقبة خادم الويب خارجيًا
</h3>

<p>
	إن حاول المهاجم تخريب موقعك أو إضافة برمجيات خبيثة تستطيع اكتشاف هذه التغييرات من خلال استخدام حلول مراقبة لسلامة البيانات على الويب، ولهذه الحلول العديد من الأشكال اليوم حيث تستطيع استخدام محرك البحث المُفضل لديك والبحث عن خدمات كشف معالجة البرمجيات الخبيثة، وغالبًا سوف تجد قائمة طويلة بمزودي هذه الخدمات.
</p>

<blockquote class="ipsQuote" data-ipsquote="">
	<div class="ipsQuote_citation">
		اقتباس
	</div>

	<p data-gramm="false">
		تستطيع الاطلاع على المصادر التي اعتمد عليها المقال الأجنبي بالرجوع للمقال نفسه.
	</p>
</blockquote>

<p>
	ترجمة -وبتصرف- للمقال <a href="https://wordpress.org/support/article/hardening-wordpress/" rel="external nofollow">Hardening WordPress</a> من موقع <a href="https://wordpress.org/" rel="external nofollow">ووردبريس</a>.
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
	<li>
		<a href="https://academy.hsoub.com/wordpress/" rel="">تعلم ووردبريس</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/apps/web/wordpress/%D9%87%D9%84-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-%D8%A2%D9%85%D9%86%D8%9F-r348/" rel="">هل ووردبريس آمن؟</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/apps/web/wordpress/%D8%A7%D9%84%D8%AF%D9%84%D9%8A%D9%84-%D8%A7%D9%84%D9%83%D8%A7%D9%85%D9%84-%D8%A5%D9%84%D9%89-%D8%A3%D9%85%D9%86-%D9%85%D9%88%D8%A7%D9%82%D8%B9-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r351/" rel="">الدليل الكامل إلى أمن مواقع ووردبريس</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/apps/web/wordpress/%D8%A5%D8%AF%D8%A7%D8%B1%D8%A9-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-%D9%88%D8%AA%D8%B3%D8%AC%D9%8A%D9%84%D8%A7%D8%AA-%D8%A7%D9%84%D8%AF%D8%AE%D9%88%D9%84-%D8%A8%D8%A3%D9%85%D8%A7%D9%86-r6/" rel="">إدارة ووردبريس وتسجيلات الدخول بأمان</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/apps/web/wordpress/%D8%A7%D9%84%D8%A7%D8%B3%D8%AA%D9%8A%D8%AB%D8%A7%D9%82-%D8%A7%D9%84%D8%AB%D9%86%D8%A7%D8%A6%D9%8A-2fa-%D9%88%D8%A7%D8%B3%D8%AA%D8%B9%D9%85%D8%A7%D9%84%D9%87-%D9%84%D8%B2%D9%8A%D8%A7%D8%AF%D8%A9-%D8%A3%D9%85%D8%A7%D9%86-%D9%85%D9%88%D8%A7%D9%82%D8%B9-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r605/" rel="">الاستيثاق الثنائي 2FA واستعماله لزيادة أمان مواقع ووردبريس</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">1691</guid><pubDate>Sun, 11 Sep 2022 16:00:00 +0000</pubDate></item><item><title>&#x643;&#x64A;&#x641;&#x64A;&#x629; &#x627;&#x644;&#x628;&#x62F;&#x621; &#x641;&#x64A; &#x62A;&#x637;&#x648;&#x64A;&#x631; &#x642;&#x648;&#x627;&#x644;&#x628; &#x648;&#x648;&#x631;&#x62F;&#x628;&#x631;&#x64A;&#x633;</title><link>https://academy.hsoub.com/programming/php/wordpress/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%A7%D9%84%D8%A8%D8%AF%D8%A1-%D9%81%D9%8A-%D8%AA%D8%B7%D9%88%D9%8A%D8%B1-%D9%82%D9%88%D8%A7%D9%84%D8%A8-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r1729/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2022_10/633be0493177c_.png.5ae52b309ff62871a062c557c223457d.png" /></p>
<p>
	عندما تعمل على بناء موقع باستخدام ووردبريس WordPress، ستكون لديك العديد من الخيارات المتاحة من ناحية القوالب. لكن مع ذلك، قد لا تكون هذه القوالب مناسبةً  دائمًا بحيث تلبي جميع المتطلبات التي تريدها. لذلك، في هذه الحالة سيكون الحل الأمثل هو أن تكون قادرًا على تعديل القالب أو حتى بناء قالبك الخاص في ووردبريس.
</p>

<p>
	في هذا الفيديو سنأخذك خطوةً بخطوة للمرور على جميع الخطوات اللازمة <a href="https://academy.hsoub.com/wordpress/" rel="">لتتعلم ووربريس</a> من الصفر وتصبح مطور قوالب ووردبريس.
</p>

<p style="text-align: center;">
	<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" frameborder="0" height="480" id="ips_uid_2662_6" src="https://academy.hsoub.com/applications/core/interface/index.html" title="كيف تبدأ في تطوير قوالب ووردبريس" width="853" data-embed-src="https://www.youtube.com/embed/s0JTiYoSQt0"></iframe>
</p>

<p>
	بعد اطلاعك على الشرح الموضح في الفيديو، ستكون قد أخذت فكرةً عن كيفية البدأ في تطوير قوالب ووردبريس. يمكنك التعرف على المزيد حول ووردبريس بالاطلاع على المقالات المجانية المقدمة من أكاديمية حسوب في <a href="https://academy.hsoub.com/programming/php/wordpress/" rel="">قسم ووردبريس</a>، كما يمكنك الانطلاق باحترافية أكبر في هذا المجال عن طريق الاشتراك في <a href="https://academy.hsoub.com/learn/php-web-application-development/" rel="">دورة تطوير تطبيقات الويب باستخدام لغة PHP</a>، التي ستتعلم من خلالها مختلف كيفية تطوير قوالب ووردبريس من الصفر. لا تنس دعم رحلة تعلمك وعملك لاحقًا بالاستعانة بتوثيقات <a href="https://wiki.hsoub.com/PHP" rel="external">php</a> و<a href="https://wiki.hsoub.com/HTML" rel="external"> html</a> و<a href="https://wiki.hsoub.com/CSS" rel="external">css</a> المجانية المقدمة من موسوعة حسوب.
</p>
]]></description><guid isPermaLink="false">1729</guid><pubDate>Mon, 11 Apr 2022 15:30:00 +0000</pubDate></item><item><title>&#x62A;&#x639;&#x644;&#x645; &#x628;&#x631;&#x645;&#x62C;&#x629; &#x648;&#x62A;&#x637;&#x648;&#x64A;&#x631; &#x645;&#x648;&#x627;&#x642;&#x639; &#x648;&#x648;&#x631;&#x62F;&#x628;&#x631;&#x64A;&#x633;</title><link>https://academy.hsoub.com/programming/php/wordpress/%D8%AA%D8%B9%D9%84%D9%85-%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D9%88%D8%AA%D8%B7%D9%88%D9%8A%D8%B1-%D9%85%D9%88%D8%A7%D9%82%D8%B9-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r1461/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2022_02/61fa37c2d7919_----.png.92c27a6d5ed115cdde64ae84faaa7bd7.png" /></p>
<p>
	تعد برمجة ووردبريس مهارة مفيدة جدًا لكن اكتسابها ليس بهذه البساطة، خاصةً إذا حاولت تناول المواضيع المتقدمة قبل التمكّن من الأساسيات.
</p>

<p>
	كُتِب هذا المقال ليعرفك على مبادئ عمل ووردبريس كنظام تقني. سيضعك هذا المقال على بداية طريقك في تعلم برمجة ووردبريس، وذلك لأننا سنبدأ معك من الأساسيات.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="jpg" data-fileid="91231" href="https://academy.hsoub.com/uploads/monthly_2022_02/001wordpress-development-course.jpg.67f3eacb52da720470b9af0f38291a4d.jpg" rel=""><img alt="001wordpress-development-course.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="91231" data-unique="0xoc20173" style="width: 600px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2022_02/001wordpress-development-course.jpg.67f3eacb52da720470b9af0f38291a4d.jpg"></a>
</p>

<h2>
	1. ما هو ووردبريس
</h2>

<p>
	حتى تتعلم برمجة ووردبريس لا بد أن تفهم ما هو هذا النظام. ولم نجد أفضل من تشبيهه بمصنع لتقديم شرح شامل عن ماهيته ووظائفه من الناحية التقنية.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="jpg" data-fileid="91232" href="https://academy.hsoub.com/uploads/monthly_2022_02/002assembly-line-factory.jpg.faf5bab7228190f23fd70e76ddeaf82b.jpg" rel=""><img alt="002assembly-line-factory.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="91232" data-unique="klfqj6jsl" style="width: 600px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2022_02/002assembly-line-factory.jpg.faf5bab7228190f23fd70e76ddeaf82b.jpg"></a>
</p>

<blockquote class="ipsQuote" data-ipsquote="">
	<div class="ipsQuote_citation">
		اقتباس
	</div>

	<p data-gramm="false">
		ووردبريس هو مصنع يصنّع المواقع إلكترونية
	</p>
</blockquote>

<p>
	لتكن نقطة انطلاقك في رحلة <a href="https://academy.hsoub.com/wordpress/" rel="">تعلم ووردبريس</a>، معرفة ماهية نظام ووردبريس وبماذا يفيد، إذ نعلم أنه مبني على <a href="https://wiki.hsoub.com/PHP" rel="external">لغة البرمجة PHP</a> وأنه نظام إدارة محتوى مفتوح المصدر، لكن ما هي وظيفته؟
</p>

<p>
	لم نجد طريقةً لتعريفه أفضل من تشبيهه بالمصنع الذي يصنّع المواقع الإلكترونية، إذ يتلقى المواد الأولية من قاعدة البيانات ثم يعالجها في "خطوط الإنتاج" المختلفة - تبرمج نواة نظام ووردبريس نفسها بالإضافة إلى الشيفرات البرمجية التي تضاف إليها من القوالب والإضافات - ثم تتضافر جميعها لتنتج منتجًا نهائيًا جاهزًا ليرسَل إلى متصفح المستخدم.
</p>

<h3>
	التعمق في أوجه الشبه بين نظام ووردبريس والمصنع
</h3>

<p>
	فيما يلي نقدم تفاصيل إضافيةً توضح لك كيف تستفيد من تشبيه نظام ووردبريس بالمصنع في تعلم برمجة ووردبريس:
</p>

<ol>
	<li>
		إن بيئة العمل في مصنع ووردبريس هي الخادم، وهو حاسوب متصل بالإنترنت تخزَّن عليه كافة البيانات. (وإن <a href="https://academy.hsoub.com/questions/11300-%D9%85%D8%A7%D9%87%D9%8A-%D8%A7%D9%81%D8%B6%D9%84-%D8%A7%D8%B3%D8%AA%D8%B6%D8%A7%D9%81%D9%87-2020/" rel="">الاشتراك بالاستضافة</a> يعني حجز مساحة على هذا الخادم). يتلقى الخادم طلبات الإنتاج من العملاء - وهم المستخدمون الذين يطلبون المواقع عن طريق متصفحات الإنترنت - ومهمته تجميع منتج نهائي جاهز للعرض على متصفح المستخدم.
	</li>
	<li>
		إن المنشورات هي المواد الأولية الرئيسية المستخدمة في مصنع ووردبريس، وقاعدة البيانات من نوع MySQL هي المخزن في هذا المصنع (حيث تخزَّن هذه المواد الأولية).
	</li>
	<li>
		يستجيب نظام ووردبريس لطلب الإنتاج الذي يرده من المتصفح ("اجمع صفحة الموقع التي تقابل الرابط الذي طلبته كاملةً وأعد إرسالها")، يستدعي نظام ووردبريس المواد الأولية من قاعدة البيانات.
	</li>
	<li>
		يرسل نظام ووردبريس تلك المواد الأولية التي تشكل معظم الشيفرة البرمجية لنظام ووردبريس إلى خط التجميع في المصنع. التي تبني بدورها الأجزاء الداخلية لصفحة الموقع: أساسيات البيانات التي ستتضمنها صفحة الموقع وترتيب ظهورها.
	</li>
	<li>
		توجد خطوط تجميع خاصة للتحكم بطريقة عرض صفحات الموقع في نظام ووردبريس: كيف سيصمَّم المنتج ليعرَض على المستخدم (بغض النظر عن البيانات الأساسية التي يتكون منها). إن خطوط التجميع المعنية بمظهر صفحات المواقع هي ملفات قوالب مبينة على لغة البرمجة PHP تسمى <a href="https://academy.hsoub.com/programming/php/wordpress/%D8%AA%D8%B7%D9%88%D9%8A%D8%B1-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-%D9%84%D9%84%D9%85%D8%A8%D8%AA%D8%AF%D8%A6%D9%8A%D9%86-%D8%A8%D9%86%D8%A7%D8%A1-%D8%A7%D9%84%D9%82%D9%88%D8%A7%D9%84%D8%A8-themes-r593/" rel="">قوالب ووردبريس wordpress themes</a>.
	</li>
	<li>
		يستدعي المصنع متعهدين متخصصين خارجيين لتنفيذ مهام محددة، وهذا ما نسميه إضافات ووردبريس wordpress plugins، التي يمكنها التدخل في أية مرحلة من عملية التصنيع عن طريق نظام خُطافات ووردبريس hooks.
	</li>
	<li>
		يصدر المنتج النهائي بلغة HTML اللازمة لعرض صفحة الموقع، ثم يشحن المصنع هذا المنتج إلى متصفح المستخدم الذي أرسل الطلب في كل مرة تحمَّل فيها صفحة الموقع.
	</li>
</ol>

<p>
	اقرأ ما سبق بتمعن لفهم تفاصيل تشبيه نظام ووردبريس بالمصنع، فإذا استوعبت هذا التشبيه جيدًا سيتكون لديك تصور جيد استثنائي عن ماهية نظام ووردبريس، وهذه الخطوة الأولى الصحيحة لتعلم برمجة ووردبريس حتى قبل الاطلاع على الشيفرة البرمجية لهذا النظام.
</p>

<h2>
	2. طريقة البرمجة في نظام ووردبريس: اللغات البرمجية الأساسية الأربعة في ووردبريس
</h2>

<p>
	إن الخطوة التالية في مسارك التدريبي في برمجة ووردبريس هي أن تعرف اللغات البرمجية التي ستستخدمها. سنقدم إليك أهم أربع لغات برمجية في ووردبريس، وهي: HTML و CSS وPHP وجافا سكريبت JavaScript، وسنوجز وظيفة كل منها.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="jpg" data-fileid="91233" href="https://academy.hsoub.com/uploads/monthly_2022_02/003dictionary.jpg.660597b9d74fd798fbb9d18c1d2c601f.jpg" rel=""><img alt="003dictionary.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="91233" data-unique="z8it4decy" src="https://academy.hsoub.com/uploads/monthly_2022_02/003dictionary.jpg.660597b9d74fd798fbb9d18c1d2c601f.jpg"></a>
</p>

<p>
	لن نتعمق في اللغات البرمجية، لكننا سنساعدك في اختيار اللغات البرمجية التي ستتعلمها ونعرفك على وظيفة كل منها. إليك اللغات البرمجية الأربعة المستخدمة في برمجة ووردبريس مرتبةً من الأهم:
</p>

<ol>
	<li>
		<a href="https://wiki.hsoub.com/HTML" rel="external">HTML</a>: لغة برمجة المواقع، فهي لغة البرمجة التعريفية التي يترجمها متصفح المواقع بتحويل سلسلة من الرموز البرمجية إلى صفحة موقع واضحة تتضمن نصوصًا وصورًا وكافة محتويات الصفحة الأخرى. إذا لم تتعلم البرمجة بلغة HTML فلا بد أنك لن تستطيع التعمق في برمجة ووردبريس، لكن من ناحية أخرى ستستخدم لغة PHP معظم الوقت التي وظيفتها تحويل الشيفرة البرمجية فيها إلى لغة HTML بدلًا من البرمجة باستخدام لغة HTML مباشرةً.
	</li>
	<li>
		<a href="https://wiki.hsoub.com/CSS" rel="external">CSS</a>: هي لغة البرمجة التعريفية التي تتحكم بمظهر صفحات الموقع، أي كيف ستبدو للمستخدم. تتحكم لغة CSS تقريبًا بكل النواحي المتعلقة بالمظهر، من الأحجام والهوامش والألوان والخطوط إلى أسلوب العرض المستجيب responsive لمختلف أنواع الأجهزة. عندما تريد أن تجعل الموقع على ووردبريس يبدو بمظهر معين، يبدأ عمل لغة CSS حيث تنتهي مهمة خصائص أدوات بناء الصفحة وخيارات القوالب.
	</li>
	<li>
		<a href="http://wiki.hsoub.com/PHP" rel="external">PHP</a>: لغة البرمجة الأساسية في ووردبريس. هي اللغة الأساسية التي برمج بها نظام ووردبريس، وهي اللغة الأساسية لإضافات وقوالب ووردبريس، وهي أكثر لغة برمجة ستستخدمها بصفتك مبرمج ووردبريس.
	</li>
	<li>
		<a href="http://wiki.hsoub.com/JavaScript" rel="external">JavaScript</a>: تستخدَم لبرمجة الواجهات الأمامية للموقع. هي لغة برمجية قوية تستخدم في مختلف النواحي، لكن المبرمج على ووردبريس يستخدمها غالبًا للتحكم بالجوانب الديناميكية من عرض الموقع التي تشمل التفاعلات المعقدة مع المستخدم الذي يتصفحه. بالرغم من أهميتها إلا أنك تستطيع إنجاز معظم عملك على ووردبريس بمعرفتك بالمبادئ الأساسية فقط منها، لذا ابدأ مسيرتك بتعلم اللغات البرمجية الثلاثة الأخرى أولًا، وقد حرصنا على توفير سلسلة عالية الجودة تشرح لغة جافاسكربت كاملة بعدد 90 درسًا تعليميًا بعنوان "<a href="https://academy.hsoub.com/search/?&amp;page=4&amp;tags=%D8%AF%D9%84%D9%8A%D9%84%20%D8%AA%D8%B9%D9%84%D9%85%20%D8%AC%D8%A7%D9%81%D8%A7%D8%B3%D9%83%D8%B1%D8%A8%D8%AA&amp;sortby=newest" rel="">دليل تعلم جافاسكربت</a>" وهي ترجمة للقسم الأول من موقع javascript.info الشهير، ويمكنك البدء مع المقال الأول بعنوان "<a href="https://academy.hsoub.com/programming/javascript/%d9%85%d9%82%d8%af%d9%85%d8%a9-%d8%a5%d9%84%d9%89-%d9%84%d8%ba%d8%a9-javascript-r664/" rel="">مقدمة إلى لغة جافاسكربت</a>" وتابع تقدمك حتى الاحتراف.
	</li>
</ol>

<h2>
	3. كيف يتواصل ووردبريس مع متصفحك؟ مفهومي "من جهة المستخدم" ومن "جهة الخادم" في ووردبريس
</h2>

<p>
	إن أحد أهم عوامل تعلم البرمجة على ووردبريس بسرعة الاستيعاب الجيد لمواضع تنفيذ العمليات في نظام ووردبريس، أيها تنفَّذ على حاسوب المستخدم ("من جهة المستخدم client-side") وأيها تنفذ على خادم الويب الذي يستضيف الموقع ("من جهة الخادم server-side").
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="91234" href="https://academy.hsoub.com/uploads/monthly_2022_02/004here-there.png.02224bf2afe81e3ea852bf14b6fd87a5.png" rel=""><img alt="004here-there.png" class="ipsImage ipsImage_thumbnailed" data-fileid="91234" data-unique="e8oh7jhxg" style="width: 700px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2022_02/004here-there.png.02224bf2afe81e3ea852bf14b6fd87a5.png"></a>
</p>

<p>
	إن فهمك لآلية تفاعل الخادم مع المستخدم في ووردبريس سيجيب على كثير من الأسئلة التي تراودك حول <span ipsnoautolink="true"><a href="https://www.wpar.net/wordpress-core/" rel="external">البرمجة في ووردبريس</a></span>، مثل تساؤلك "هل يستطيع المستخدم الاطلاع على الشيفرة البرمجية التي أكتبها <a href="https://academy.hsoub.com/programming/php/%D8%AA%D9%85%D9%87%D9%8A%D8%AF-%D8%A5%D9%84%D9%89-%D9%84%D8%BA%D8%A9-php-r235/" rel="">بلغة PHP</a>؟".
</p>

<p>
	نذكرهما بإيجاز:
</p>

<h3>
	العمليات التي تنفذ من جهة الخادم
</h3>

<p>
	هي كل ما يجري على الخادم: هو الحاسوب المتصل بالإنترنت الذي تستضيف موقعك عليه (والذي تستأجره غالبًا من <a href="https://academy.hsoub.com/devops/general/%D9%85%D8%B1%D8%A7%D8%AC%D8%B9%D8%A9-%D8%BA%D9%8A%D8%B1-%D9%85%D8%AA%D8%AD%D9%8A%D9%91%D8%B2%D8%A9-%D9%84%D8%A3%D9%81%D8%B6%D9%84-10-%D8%AE%D8%AF%D9%85%D8%A7%D8%AA-%D9%84%D8%A7%D8%B3%D8%AA%D8%B6%D8%A7%D9%81%D8%A9-%D9%85%D9%88%D8%A7%D9%82%D8%B9-%D8%A7%D9%84%D9%88%D9%8A%D8%A8-r452/" rel="">شركة استضافة مواقع</a>).
</p>

<p>
	من أهم العمليات التي تنفَّذ من جهة الخادم:
</p>

<ul>
	<li>
		تخزين المعلومات في <a href="https://academy.hsoub.com/devops/servers/databases/mysql/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D8%AC-%D8%A5%D8%AF%D8%A7%D8%B1%D8%A9-%D9%82%D9%88%D8%A7%D8%B9%D8%AF-%D8%A7%D9%84%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA-mysql-r28/" rel="">قاعدة بيانات MySQL</a> التي تخزن معظم بيانات موقعك واستدعائها منها.
	</li>
	<li>
		كافة العمليات المرتبطة بلغة البرمجة PHP في ووردبريس: يعمل الخادم وفق النهج المنصوص عليه في آلاف ملفات ووردبريس المكتوبة بلغة PHP، إضافةً إلى ملفات PHP في إضافات ووردبريس وقوالبه.
	</li>
</ul>

<p>
	كل ما سبق ذكره ينفَّذ على الخادم، فالمتصفحات لا يمكنها قراءة الملفات المكتوبة بلغة PHP، فلا يعاد إرسال الملفات إلى المستخدم ليبني منها صفحة الموقع إلا بعد تحويلها إلى لغة HTML التي يفهمها المتصفح (إضافةً إلى ملفات <a href="https://wiki.hsoub.com/JavaScript" rel="external">جافاسكربت</a> وCSS والقليل غيرها).
</p>

<h3>
	العمليات التي تنفذ من جهة المستخدم
</h3>

<p>
	تجري هذه العمليات في بيئة المستخدم: وهي الحاسوب (أو الهاتف المحمول أو أي جهاز آخر) الذي يرسل الطلبات إلى الخادم، ويحول ما يرد إليه من الخادم إلى صفحات تفاعلية وقابلة للعرض على المتصفح.
</p>

<p>
	من أهم العمليات التي تنفَّذ من جهة المستخدم:
</p>

<ul>
	<li>
		إرسال طلبات للحصول على موارد من صفحات HTML وصفحات <a href="https://academy.hsoub.com/programming/css/%D8%A7%D9%84%D8%AF%D9%84%D9%8A%D9%84-%D8%A7%D9%84%D8%B3%D8%B1%D9%8A%D8%B9-%D8%A5%D9%84%D9%89-%D9%84%D8%BA%D8%A9-%D8%A7%D9%84%D8%AA%D9%86%D8%B3%D9%8A%D9%82-css-r551/" rel="">تنسيق CSS</a> وملفات جافا سكريبت بالإضافة إلى ملفات الصور وغيرها.
	</li>
	<li>
		استخراج ملفات HTML وCSS والصور وغيرها إلى صفحة موقع يفهمها المستخدم.
	</li>
	<li>
		التعامل مع كافة أنواع تفاعلات المستخدم من خلال نماذج forms HTML ومحددات العناصر الزائفة في pseudoselectors CSS وخاصةً من خلال جافا سكريبت.
	</li>
</ul>

<p>
	كلما تعلمت البرمجة في ووردبريس ستتعمق في فهم آلية التواصل المستمرة بين الخادم والعميل وكيفية تبادلهما البيانات. اقرأ المقالة الكاملة لمزيد من التفاصيل ورسم توضيحي مفصَّل.
</p>

<h2>
	4. المبادئ الأساسية في البرمجة على ووردبريس: نظام الخطافات في ووردبريس
</h2>

<p>
	سترغب خلال تعلمك <span ipsnoautolink="true"><a href="https://www.ar-wp.com/wordpress-programming/" rel="external">البرمجة على ووردبريس</a> </span>أن تفهم أساس نظام ووردبريس البرمجي الذي توجهه تفاعلات المستخدم event-driven: وهي <a href="https://academy.hsoub.com/programming/php/wordpress/%d8%a8%d8%b1%d9%85%d8%ac%d8%a9-%d8%a5%d8%b6%d8%a7%d9%81%d8%a7%d8%aa-%d9%88%d9%88%d8%b1%d8%af%d8%a8%d8%b1%d9%8a%d8%b3-%d8%a7%d9%84%d8%ae%d9%8f%d8%b7%d9%91%d8%a7%d9%81%d8%a7%d8%aa-hooks-r40/" rel="">خُطافات ووردبريس hooks</a> التي تعرّف أيضًا بالإجراءات actions والمرشحات filters.
</p>

<p style="text-align: center;">
	<img alt="005wordpress_hook.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="91235" data-unique="wdgv57449" style="width: 600px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2022_02/005wordpress_hook.jpg.0f22f3113e6500fd4e1bd3ea804d466d.jpg">
</p>

<p>
	أولًا عليك أن تعلم أن هذا الموضوع يصعب فهمه في البداية، فهو أكثر الأنظمة المستقلة إرباكًا لمتعلمها في ووردبريس بين الأنظمة التي يضطر المبرمج إلى التعامل معها يوميًا.
</p>

<p>
	باختصار، تتيح لك الخطافات الارتباط بأي جزء في نظام ووردبريس، فإن الخطافات في ووردبريس هي نوع محدد من دوال PHP التي تعني "أدرج أو عدل الشيفرة هنا". يمكنك "إضافة الخطافات" للارتباط بأي جزء من الدالات على ووردبريس وإدراج الشيفرة الخاص بك.
</p>

<h3>
	نوعا الخطافات في ووردبريس: خطافات الإجراءات وخطافات المرشحات
</h3>

<p>
	تتيح لك خطافات الإجراءات action إضافة خطاف للارتباط وتنفيذ أمر تحكمي مثل إضافة صفحة تنسيق CSS أو ملف جافا سكريبت أو تنفيذ أي شيفرة PHP تريده. أما خطافات المرشحات filters فتتيح لك إضافة خطاف للارتباط والتعديل مثل تعديل عنوان منشور معين قبل طباعته على صفحة الموقع. تمنحك المرشحات دومًا أمرًا تعمل عليه ثم تطلب منك تعديله وإعادة إرساله.
</p>

<p>
	لتتمكن من إضافة الشيفرة الخاصة بك إلى خطاف موجود مسبقًا في ووردبريس عليك كتابته بصيغة محددة. اكتب هذه الشيفرة على هيئة دالة تحتوي على نقاط ربط: وهي دالة "تربط" الشيفرة التي أضفتها.
</p>

<p>
	لإضافة خطافات الإجراءات نكتب دالات الإجراءات ثم نربطها من خلال دالة <code>add_action()‎</code> في ووردبريس. مثال على ذلك:
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_1555_18" style=""><span class="pln">add_action</span><span class="pun">(</span><span class="str">'wp_footer'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'wpshout_action_example'</span><span class="pun">);</span><span class="pln">
</span><span class="kwd">function</span><span class="pln"> wpshout_action_example</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    echo </span><span class="str">"WPShout was here."</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	لإضافة خطافات المرشحات نكتب دالات المرشحات ثم نربطها من خلال دالة <code>add_filter()‎</code> في ووردبريس. مثال على ذلك:
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_1555_21" style=""><span class="pln">add_filter</span><span class="pun">(</span><span class="pln"> </span><span class="str">'the_title'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'wpshout_filter_example'</span><span class="pln"> </span><span class="pun">);</span><span class="pln">
</span><span class="kwd">function</span><span class="pln"> wpshout_filter_example</span><span class="pun">(</span><span class="pln"> $title </span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">return</span><span class="pln"> </span><span class="str">'Hooked: '</span><span class="pln"> </span><span class="pun">.</span><span class="pln"> $title</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<h2>
	5. برمجة قوالب ووردبريس
</h2>

<p>
	أصبحت الآن مطلعًا على ماهية ووردبريس (أنه مصنع المواقع الإلكترونية) واللغات التي عليك تعلمها (أهمها PHP) وأين ينفَّذ كل نوع من العمليات على نظام ووردبريس (في جهة الخادم أو جهة المستخدم) والنظام الأساسي الذي توجهه تفاعلات المستخدم (الخطافات) والذي يربط كافة الجوانب ببعضها.
</p>

<p>
	يتطلب ذلك دورةً تدريبيةَ كاملةً تقدم لك مفاهيم تأسيسية مفتاحية لتعلم قوالب ووردبريس: هيكلية القوالب template hierarchy والحلقة loop ودالة <code>functions.php</code>، وهذا ما تقدمه دورة PHP من أكاديمية حسوب التي تشرح كيفية بناء قوالب ووردبريس من الصفر شرحًا تفصيليًا وبلغة عربية.
</p>

<p>
	صرت جاهزًا لتعلّم أساسيات برمجة قوالب ووردبريس، نرجو لك كل التوفيق ولا تتردد بمشاركتنا تجربتك في التعليقات.
</p>

<p>
	ترجمة -وبتصرف- للمقال <a href="https://wpshout.com/courses/learn-wordpress-development-the-basic-course/" rel="external nofollow">Learn WordPress Development: The Basic Course</a> لصاحبه Fred Meyer.
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
	<li>
		<a href="https://academy.hsoub.com/programming/general/%D8%AA%D8%B9%D9%84%D9%85-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-r662/?page=2" rel="">تعلم البرمجة</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/php/wordpress/%D8%AA%D8%B7%D9%88%D9%8A%D8%B1-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-%D9%84%D9%84%D9%85%D8%A8%D8%AA%D8%AF%D8%A6%D9%8A%D9%86-%D8%AA%D8%B9%D9%84%D9%85-php-r582/" rel="">تطوير ووردبريس للمبتدئين: تعلم PHP</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/php/wordpress/%D9%85%D8%A7-%D8%A7%D9%84%D8%B0%D9%8A-%D8%AA%D8%AD%D8%AA%D8%A7%D8%AC-%D9%85%D8%B9%D8%B1%D9%81%D8%AA%D9%87-%D9%82%D8%A8%D9%84-%D8%A7%D9%84%D8%B4%D8%B1%D9%88%D8%B9-%D9%81%D9%8A-%D8%A7%D9%84%D8%AA%D8%B7%D9%88%D9%8A%D8%B1-%D8%B9%D9%84%D9%89-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r325/" rel="">ما الذي تحتاج معرفته قبل الشروع في التطوير على ووردبريس</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/php/wordpress/%D9%85%D9%82%D8%AF%D9%85%D8%A9-%D8%A5%D9%84%D9%89-%D8%AA%D8%B7%D9%88%D9%8A%D8%B1-%D9%82%D9%88%D8%A7%D9%84%D8%A8-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-%D8%AA%D8%AD%D9%88%D9%8A%D9%84-%D8%B5%D9%81%D8%AD%D8%A9-html-%D8%A5%D9%84%D9%89-%D9%82%D8%A7%D9%84%D8%A8-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r32/" rel="">مقدمة إلى تطوير قوالب ووردبريس: تحويل صفحة HTML إلى قالب ووردبريس</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/apps/web/wordpress/%D9%87%D9%84-%D8%A3%D9%86%D8%AA-%D8%AC%D8%AF%D9%8A%D8%AF-%D8%B9%D9%84%D9%89-%D8%B9%D8%A7%D9%84%D9%85-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3%D8%9F-%D8%A5%D9%84%D9%8A%D9%83-%D9%85%D8%A7-%D9%8A%D8%AC%D8%A8-%D8%B9%D9%84%D9%8A%D9%83-%D9%85%D8%B9%D8%B1%D9%81%D8%AA%D9%87-%D8%A3%D9%88%D9%91%D9%84%D9%8B%D8%A7-r202/" rel="">هل أنت جديد على عالم ووردبريس؟ إليك ما يجب عليك معرفته أوّلًا</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">1461</guid><pubDate>Sat, 05 Mar 2022 16:00:00 +0000</pubDate></item><item><title>&#x647;&#x62C;&#x645;&#x627;&#x62A; &#x627;&#x644;&#x642;&#x648;&#x629; &#x627;&#x644;&#x63A;&#x627;&#x634;&#x645;&#x629; &#x639;&#x644;&#x649; &#x645;&#x648;&#x627;&#x642;&#x639; &#x648;&#x648;&#x631;&#x62F;&#x628;&#x631;&#x64A;&#x633; &#x648;&#x627;&#x644;&#x62D;&#x645;&#x627;&#x64A;&#x629; &#x645;&#x646;&#x647;&#x627;</title><link>https://academy.hsoub.com/programming/php/wordpress/%D9%87%D8%AC%D9%85%D8%A7%D8%AA-%D8%A7%D9%84%D9%82%D9%88%D8%A9-%D8%A7%D9%84%D8%BA%D8%A7%D8%B4%D9%85%D8%A9-%D8%B9%D9%84%D9%89-%D9%85%D9%88%D8%A7%D9%82%D8%B9-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-%D9%88%D8%A7%D9%84%D8%AD%D9%85%D8%A7%D9%8A%D8%A9-%D9%85%D9%86%D9%87%D8%A7-r1440/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2022_01/61f2656e9dbd5_---------------------.png.508aca50b16700fa5125e2b15b43ff28.png" /></p>

<p>
	يهدف هجوم القوة الغاشمة Brute Force Attack -وهو أبسط نوع من <a href="https://academy.hsoub.com/devops/networking/%D8%A7%D9%84%D9%87%D8%AC%D9%85%D8%A7%D8%AA-%D8%A7%D9%84%D8%A3%D9%85%D9%86%D9%8A%D8%A9-security-attacks-%D9%81%D9%8A-%D8%A7%D9%84%D8%B4%D8%A8%D9%83%D8%A7%D8%AA-%D8%A7%D9%84%D8%AD%D8%A7%D8%B3%D9%88%D8%A8%D9%8A%D8%A9-r540/" rel="">الهجمات</a> لاكتساب وصول للموقع من خلال تجريب أسماء مستخدمين وكلمات مرور مرارًا وتكرارًا حتى يتمكن من الدخول وهو مختلف عن عمليات الاختراق التي تُركز على نقاط ضعف الموقع. ينجح هذا الهجوم مع الأشخاص الذين يستعملون كلمات مرور بسيطة مثل "123456" واسم مستخدم شائع مثل "admin".
</p>

<p>
	يُركز هذا الهجوم على النقطة الأضعف في <a href="https://academy.hsoub.com/programming/php/%D9%85%D9%85%D8%A7%D8%B1%D8%B3%D8%A7%D8%AA-%D8%A7%D9%84%D8%A3%D9%85%D9%86-%D9%88%D8%A7%D9%84%D8%AD%D9%85%D8%A7%D9%8A%D8%A9-%D9%81%D9%8A-%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA-php-r1205/" rel="">أمن الموقع</a> وهي المستخدم، ونظرًا لطبيعة هذا الهجوم سوف تجد أن ذاكرة خادمك تُستهلك سريعًا مما يؤدي لمشاكل في الأداء لأن عدد طلبات http (عدد المرات التي يزور فيها شخص ما موقعك) يكون مرتفعًا للحد الذي يستهلك فيه كامل ذاكرة الخادم.
</p>

<p>
	هذا الهجوم ليس هجومًا خاصًا بمواقع ووردبريس بل يُمكن أن يُطبق على أي تطبيق ويب لكن ووردبريس هدف متكرر كونه مُستخدم على نطاق واسع.
</p>

<h2>
	حماية نفسك من هجمات القوة الغاشمة
</h2>

<p>
	يوجد نقطة تُستهدف باستمرار في ووردبريس وهي ملف "wp-login.php" حيث يُنفذ الهجوم عليه مرارًا وتكرارًا حتى يتمكن المهاجم من الدخول أو يتوقف <a href="https://academy.hsoub.com/devops/servers/%D9%85%D8%A7-%D9%87%D9%88-%D8%AE%D8%A7%D8%AF%D9%85-%D8%A7%D9%84%D9%88%D9%8A%D8%A8%D8%9F-r574/" rel="">الخادم</a> عن العمل. تستطيع حماية الخادم باتّباع بعض الخطوات.
</p>

<h3>
	لا تستخدم admin كاسم للمستخدم
</h3>

<p>
	تفترض غالبية الهجمات أن المستخدمين يستعملون admin كاسم مستخدم كون الإصدارات الأولى من ووردبريس كانت تستخدم هذا الاسم افتراضيًا لحساب المدير، لذا إن كنت لا تزال تستخدم اسم المستخدم هذا عليك إنشاء حساب جديد ونقل جميع المنشورات إلى الحساب الجديد ثم تغيير الحساب القديم ذو اسم المستخدم admin لرتبة مشترك أو حذف الحساب نهائيًا.
</p>

<p>
	تستطيع أيضًا استخدام الإضافة <a href="https://wordpress.org/plugins/change-username/" rel="external nofollow">Change Username</a> لتغيير اسم المستخدم الخاص بحسابك.
</p>

<h3>
	كلمات مرور قوية
</h3>

<p>
	الهدف من استخدام كلمة المرور هو أن تكون صعبة التخمين وبالتالي يصعب على هجوم القوى الغاشمة النجاح في توقعها. تستطيع استخدام <a href="http://www.google.com/?q=password+generator" rel="external nofollow">العديد من مولدات كلمات المرور التلقائية</a> لإنشاء كلمة مرور آمنة.
</p>

<p>
	يوفر ووردبريس مقياس لقوة كلمة المرور يُعرض عند <a href="https://academy.hsoub.com/apps/web/wordpress/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%AA%D8%BA%D9%8A%D9%8A%D8%B1-%D9%88%D8%AA%D9%87%D9%8A%D8%A6%D8%A9-%D9%83%D9%84%D9%85%D8%A9-%D8%A7%D9%84%D9%85%D8%B1%D9%88%D8%B1-%D9%81%D9%8A-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r498/" rel="">تغيير كلمة المرور في ووردبريس</a>، لذا استخدمه لاختيار كلمة مرور قوية يصعب تخمينها. تستطيع استخدام إضافة <a href="https://wordpress.org/plugins/force-strong-passwords/" rel="external nofollow">Force Strong Password</a> لإجبار المستخدمين على اختيار كلمات مرور قوية.
</p>

<p>
	أمور يجب عليك تجنبها عند اختيار كلمة المرور:
</p>

<ul>
<li>
		أي تشكيل باستخدام اسمك الحقيقي أو اسم موقعك أو الشركة التي تعمل بها أو اسم المستخدم.
	</li>
	<li>
		كلمة من القاموس في أي لغة كانت
	</li>
	<li>
		كلمة مرور قصيرة.
	</li>
	<li>
		أي كلمة مرور مكونة فقط من الأحرف أو الأرقام (يُفضل استخدام مزيج من الاثنين)
	</li>
</ul>
<p>
	إن كلمة المرور القوية ليست ضرورية فقط لحماية محتوى المدونة حيث أن المخترق الذي يتمكن من الوصول لحساب مدير موقعك يستطيع تثبيت شيفرة برمجية خبيثة يُمكن أن تُعرض خادمك بأكمله للخطر.
</p>

<p>
	تستطيع تفعيل <a href="https://codex.wordpress.org/Two%20Step%20Authentication" rel="external nofollow">الاستيثاق الثنائي</a> لزيادة قوة كلمة المرور ورفع سوية أمن مدونتك.
</p>

<h3>
	الإضافات
</h3>

<p>
	يوجد العديد من <a href="https://wordpress.org/plugins/tags/brute-force" rel="external nofollow">الإضافات التي تحد من محاولات تسجيل الدخول</a> ضمن موقعك، ويوجد أيضًا العديد من <a href="https://wordpress.org/plugins/search.php?q=admin+rename" rel="external nofollow">الإضافات التي تستطيع استخدامها لحجب الزوار من الوصول لصفحة wp-admin</a>.
</p>

<h2>
	حماية الخادم من هجوم القوة الغاشمة
</h2>

<p>
	إن قررت حجب صفحة wp-login.php أو wp-admin عن الزوار سوف تحصل على <a href="https://academy.hsoub.com/programming/php/wordpress/%D9%83%D9%8A%D9%81-%D8%AA%D9%86%D8%B4%D8%A3-%D8%B5%D9%81%D8%AD%D8%A9-%D8%AE%D8%B7%D8%A3-404-%D9%85%D8%AE%D8%B5%D8%B5%D8%A9-%D9%81%D9%8A-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r626/" rel="">الخطأ 404</a> أو 401 عند محاولة الوصول لهذه الصفحات، ولتجنب ذلك سوف تحتاج إضافة السطر التالي لملف ‎.htaccess.
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_9065_15" style="">
<span class="typ">ErrorDocument</span><span class="pln"> </span><span class="lit">401</span><span class="pln"> </span><span class="kwd">default</span></pre>

<p>
	تستطيع تحويل الخطأ 401 إلى الصفحة 401.html لكن الهدف ليس تحويله إلى ووردبريس، كما تستطيع استخدام مسار error_page في خادم Nginx لكن يجب عليك استخدام رابط مُجرد.
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_9065_10" style="">
<span class="pln">error_page  </span><span class="lit">401</span><span class="pln">  http</span><span class="pun">:</span><span class="com">//example.com/forbidden.html;</span></pre>

<p>
	وتستطيع أيضًا استخدام العنصر <code>httpErrors</code> في خادم IIS ضمن ملف web.config وذلك بضبط <code>"errorMode="custom</code>.
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_9065_13" style="">
<span class="tag">&lt;httpErrors</span><span class="pln"> </span><span class="atn">errorMode</span><span class="pun">=</span><span class="atv">"Custom"</span><span class="tag">&gt;</span><span class="pln">
</span><span class="tag">&lt;error</span><span class="pln"> </span><span class="atn">statusCode</span><span class="pun">=</span><span class="atv">"401"</span><span class="pln">
</span><span class="atn">subStatusCode</span><span class="pun">=</span><span class="atv">"2"</span><span class="pln">
</span><span class="atn">prefixLanguageFilePath</span><span class="pun">=</span><span class="atv">""</span><span class="pln">
</span><span class="atn">path</span><span class="pun">=</span><span class="atv">"401.htm"</span><span class="pln">
</span><span class="atn">responseMode</span><span class="pun">=</span><span class="atv">"File"</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">
</span><span class="tag">&lt;/httpErrors&gt;</span></pre>

<h3>
	احم ملف wp-login.php باستخدام كلمة مرور
</h3>

<p>
	تُضيف حماية ملف wp-login.php ومجلد wp-admin طبقة إضافية للخادم، ولأن حماية مجلد wp-admin باستخدام كلمة المرور يُمكن أن يُعطل أي إضافة تستخدم ajax فإن حماية ملف wp-login.php كاف.
</p>

<p>
	عليك إنشاء ملف ‎.htpasswd لحماية ملف wp-login.php بكلمة مرور، وتملك العديد من <a href="https://academy.hsoub.com/apps/web/%D8%A3%D9%86%D9%88%D8%A7%D8%B9-%D8%A7%D9%84%D8%A7%D8%B3%D8%AA%D8%B6%D8%A7%D9%81%D8%A7%D8%AA-%D9%88%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%AD%D8%AC%D8%B2-%D8%A7%D8%B3%D8%AA%D8%B6%D8%A7%D9%81%D8%A9-%D9%88%D8%B1%D8%A8%D8%B7%D9%87%D8%A7-%D9%85%D8%B9-%D8%A7%D8%B3%D9%85-%D9%86%D8%B7%D8%A7%D9%82-%D9%85%D8%AA%D8%AC%D8%B1%D9%83-%D8%A7%D9%84%D8%A5%D9%84%D9%83%D8%AA%D8%B1%D9%88%D9%86%D9%8A-r392/" rel="">الاستضافات</a> أدوات لعمل هذا لكن إن كنت تريد تنفيذ هذه الخطوة يدويًا تستطيع استخدام <a href="http://www.htaccesstools.com/htpasswd-generator/" rel="external nofollow">htpasswd</a>، وكما هو حال ملف ‎.htaccess فإن ملف .htpasswd هو ملف بدون اسم.
</p>

<p>
	تستطيع وضع هذا الملف خارج مجلد الويب العام الخاص بالاستضافة (أي خارج مجلد /public_html/ أو /domain.com/) أو تستطيع وضعه في نفس المجلد لكن عندها عليك إجراء خطوات أمنية إضافية ضمن ملف ‎.htaccess.
</p>

<p>
	يجب عليك إخبار ملف ‎.htaccess بمكان رفعك للملف ‎.htpasswd وعلى فرض أنك رفعته للمسار الرئيسي للمستخدم وكان اسم المستخدم هو mysecretuser عندها عليك إضافة ما يلي إلى ملف ‎.htaccess.
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_9065_17" style="">
<span class="com"># Stop Apache from serving .ht* files</span><span class="pln">
</span><span class="pun">&lt;</span><span class="typ">Files</span><span class="pln"> </span><span class="pun">~</span><span class="pln"> </span><span class="str">"^\.ht"</span><span class="pun">&gt;</span><span class="pln">
 </span><span class="typ">Order</span><span class="pln"> allow</span><span class="pun">,</span><span class="pln">deny
 </span><span class="typ">Deny</span><span class="pln"> </span><span class="kwd">from</span><span class="pln"> all
</span><span class="pun">&lt;/</span><span class="typ">Files</span><span class="pun">&gt;</span><span class="pln">
</span><span class="com"># Protect wp-login.php</span><span class="pln">
</span><span class="pun">&lt;</span><span class="typ">Files</span><span class="pln"> wp</span><span class="pun">-</span><span class="pln">login</span><span class="pun">.</span><span class="pln">php</span><span class="pun">&gt;</span><span class="pln">
 </span><span class="typ">AuthUserFile</span><span class="pln"> </span><span class="pun">~/.</span><span class="pln">htpasswd
 </span><span class="typ">AuthName</span><span class="pln"> </span><span class="str">"Private access"</span><span class="pln">
 </span><span class="typ">AuthType</span><span class="pln"> </span><span class="typ">Basic</span><span class="pln">
</span><span class="kwd">require</span><span class="pln"> user mysecretuser
</span><span class="pun">&lt;/</span><span class="typ">Files</span><span class="pun">&gt;</span></pre>

<p>
	يعتمد الموقع الحقيقي لملف AuthUserFile على الخادم وتتغير 'require user' حسب اسم المستخدم الذي تختاره.
</p>

<p>
	إن كنت تستخدم خادم Nginx تستطيع حماية ملف wp-login.php بكلمة مرور باستخدام الوحدة <a href="http://wiki.nginx.org/HttpAuthBasicModule" rel="external nofollow">HttpAuthBasicModule</a>. يجب أن تكون هذه الوحدة ضمن وحدات خادمك.
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_9065_19" style="">
<span class="pln">location </span><span class="pun">/</span><span class="pln">wp</span><span class="pun">-</span><span class="pln">login</span><span class="pun">.</span><span class="pln">php </span><span class="pun">{</span><span class="pln">
   auth_basic </span><span class="str">"Administrator Login"</span><span class="pun">;</span><span class="pln">
   auth_basic_user_file </span><span class="pun">.</span><span class="pln">htpasswd</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	يعتمد مسار اسم الملف على مسار ملف تهيئة خادم nginx وهو nginx.conf حيث يجب أن يتضمن هذا الملف التنسيق التالي:
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_9065_21" style="">
<span class="pln">user</span><span class="pun">:</span><span class="kwd">pass</span><span class="pln">
 user2</span><span class="pun">:</span><span class="pln">pass2
 user3</span><span class="pun">:</span><span class="pln">pass3</span></pre>

<p>
	لسوء الحظ لا يوجد طريقة سهلة لضبط كلمة مرور لحماية ملف wp-login.php في خادم ويندوز IIS. إن كنت تستخدم معالج ‎.htaccess مثل Helicon Ape تستطيع استخدام مثال ملف ‎.htaccess المذكور سابقًا وإلا سوف تُضطر للطلب من مزود الاستضافة ضبط عملية التحقق الأساسية.
</p>

<p>
	يجب تشفير جميع كلمات المرور باستخدام الدالة <code>crypt(3)‎</code> كما تستطيع استخدام المولد <a href="http://www.htaccesstools.com/htpasswd-generator/" rel="external nofollow">htpasswd</a> لتشفير كلمات المرور.
</p>

<h3>
	تقييد الوصول لملف wp-login.php باستخدام عنوان IP
</h3>

<p>
	إن كنت الشخص الوحيد الذي يلج لمنطقة المدير وتملك عنوان IP ثابت تستطيع حجب الوصول لملف wp-login.php (ومجلد wp-admin) لأي شخص غيرك من خلال ملف ‎.htaccess أو web.conf، ويُشار لهذا بالقائمة البيضاء لعنوان IP.
</p>

<blockquote class="ipsQuote" data-ipsquote="">
	<div class="ipsQuote_citation">
		اقتباس
	</div>

	<p>
		ملاحظة: عليك الانتباه أن مزود الخدمة لديك أو حاسوبك ربما يُغير عنوان IP باستمرار ويُدعى هذا بعنونة IP الديناميكية بدلا من عنونة IP الثابتة. تستطيع الاتصال بمزود الخدمة للحصول على عنوان IP ثابت أو تغيير إعدادات الحاسوب التي تُغير عنوان IP لتتمكن من استخدام الميزة السابقة.
	</p>
</blockquote>

<p>
	يجب عليك في جميع الأمثلة استبدال العنوان 203.0.113.15 بعنوان IP خاصتك، ويُمكن لمزود خدمة الإنترنت خاصتك مُساعدتك في تأسيس عنوان IP التابع لك أو تستطيع استخدام خدمة ويب مثل <a href="http://www.whatismyip.com/" rel="external nofollow">What Is My IP</a>.
</p>

<p>
	يوجد أمثلة عن استخدام عدة عناوين IP أيضًا وهي مناسبة في حال استخدمت أكثر من <a href="https://academy.hsoub.com/programming/php/laravel/%D9%83%D9%8A%D9%81-%D8%AA%D9%86%D8%B4%D8%A6-%D9%85%D8%B2%D9%88%D8%AF-%D8%AE%D8%AF%D9%85%D8%A9-service-provider-%D9%81%D9%8A-laravel-r326/" rel="">مزود خدمة إنترنت</a> واحد أو إن كنت تملك مجموعة عناوين IP صغيرة أو إن كان هناك أكثر من شخص يُسمح له بالوصول للوحة تحكم الموقع.
</p>

<p>
	أنشئ ملف باستخدام محرر نص صريح وسمه ‎.htaccess وأضف ما يلي:
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_9065_23" style="">
<span class="com"># Block access to wp-login.php.</span><span class="pln">
</span><span class="pun">&lt;</span><span class="typ">Files</span><span class="pln"> wp</span><span class="pun">-</span><span class="pln">login</span><span class="pun">.</span><span class="pln">php</span><span class="pun">&gt;</span><span class="pln">
 order deny</span><span class="pun">,</span><span class="pln">allow
 allow </span><span class="kwd">from</span><span class="pln"> </span><span class="lit">203.0</span><span class="pun">.</span><span class="lit">113.15</span><span class="pln">
 deny </span><span class="kwd">from</span><span class="pln"> all
</span><span class="pun">&lt;/</span><span class="typ">Files</span><span class="pun">&gt;</span></pre>

<p>
	تستطيع إضافة المزيد من عناوين IP المسموح لها الوصول للوحة التحكم باستخدام:
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_9065_25" style="">
<span class="com"># Block access to wp-login.php.</span><span class="pln">
</span><span class="pun">&lt;</span><span class="typ">Files</span><span class="pln"> wp</span><span class="pun">-</span><span class="pln">login</span><span class="pun">.</span><span class="pln">php</span><span class="pun">&gt;</span><span class="pln">
 order deny</span><span class="pun">,</span><span class="pln">allow
 allow </span><span class="kwd">from</span><span class="pln"> </span><span class="lit">203.0</span><span class="pun">.</span><span class="lit">113.15</span><span class="pln">
 allow </span><span class="kwd">from</span><span class="pln"> </span><span class="lit">203.0</span><span class="pun">.</span><span class="lit">113.16</span><span class="pln">
 allow </span><span class="kwd">from</span><span class="pln"> </span><span class="lit">203.0</span><span class="pun">.</span><span class="lit">113.17</span><span class="pln">
 deny </span><span class="kwd">from</span><span class="pln"> all
</span><span class="pun">&lt;/</span><span class="typ">Files</span><span class="pun">&gt;</span></pre>

<p>
	إن كنت تستخدم Apache 2.4 ووحدة <a href="https://httpd.apache.org/docs/2.4/mod/mod_authz_host.html" rel="external nofollow">modauthzhost</a> عندها عليك استخدام صيغة مُختلفة قليلًا:
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_9065_50" style="">
<span class="com"># Block access to wp-login.php.</span><span class="pln">
</span><span class="pun">&lt;</span><span class="typ">Files</span><span class="pln"> wp</span><span class="pun">-</span><span class="pln">login</span><span class="pun">.</span><span class="pln">php</span><span class="pun">&gt;</span><span class="pln">
 </span><span class="typ">Require</span><span class="pln"> ip </span><span class="lit">203.0</span><span class="pun">.</span><span class="lit">113.15</span><span class="pln">
</span><span class="pun">&lt;/</span><span class="typ">Files</span><span class="pun">&gt;</span></pre>

<p>
	إن أردت إضافة أكثر من عنوان IP واحد عليك استخدام:
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_9065_29" style="">
<span class="com"># Block access to wp-login.php.</span><span class="pln">
</span><span class="pun">&lt;</span><span class="typ">Files</span><span class="pln"> wp</span><span class="pun">-</span><span class="pln">login</span><span class="pun">.</span><span class="pln">php</span><span class="pun">&gt;</span><span class="pln">
 </span><span class="typ">Require</span><span class="pln"> ip </span><span class="lit">203.0</span><span class="pun">.</span><span class="lit">113.15</span><span class="pln"> </span><span class="lit">203.0</span><span class="pun">.</span><span class="lit">113.16</span><span class="pln"> </span><span class="lit">203.0</span><span class="pun">.</span><span class="lit">113.17</span><span class="pln">
 </span><span class="com"># or for the entire network:</span><span class="pln">
 </span><span class="com"># Require ip 203.0.113.0/255.255.255.0</span><span class="pln">
</span><span class="pun">&lt;/</span><span class="typ">Files</span><span class="pun">&gt;</span></pre>

<p>
	تستطيع من أجل Nginx استخدام كتلة الموقع ضمن كتلة خادمك والتي تعمل مثل مثال Apache السابق.
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_9065_31" style="">
<span class="pln">error_page  </span><span class="lit">403</span><span class="pln">  http</span><span class="pun">:</span><span class="com">//example.com/forbidden.html;</span><span class="pln">
location </span><span class="pun">/</span><span class="pln">wp</span><span class="pun">-</span><span class="pln">login</span><span class="pun">.</span><span class="pln">php </span><span class="pun">{</span><span class="pln">
  allow   </span><span class="lit">203.0</span><span class="pun">.</span><span class="lit">113.15</span><span class="pln">
  </span><span class="com"># or for the entire network:</span><span class="pln">
  </span><span class="com"># allow   203.0.113.0/24;</span><span class="pln">
  deny    all</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	لاحظ أن ترتيب deny/allow مهم جدًا وربما تظن أن تستطيع التبديل بينهما وكل شيء سوف يعمل لكن في الحقيقة فإن تغيير ترتيب المثال السابق سوف ينتج عنه منع وصول جميع العناوين.
</p>

<p>
	تستطيع في خادم IIS استخدام ملف web.config لتقييد عناوين IP التي تملك وصولًأ، والأفضل أن تُضيفها في مسار <code>&lt;location</code> إضافي.
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_9065_33" style="">
<span class="tag">&lt;location</span><span class="pln"> </span><span class="atn">path</span><span class="pun">=</span><span class="atv">"wp-admin"</span><span class="tag">&gt;</span><span class="pln">
 </span><span class="tag">&lt;system.webServer&gt;</span><span class="pln">
   </span><span class="tag">&lt;security&gt;</span><span class="pln">
     </span><span class="tag">&lt;ipSecurity</span><span class="pln"> </span><span class="atn">allowUnlisted</span><span class="pun">=</span><span class="atv">"false"</span><span class="tag">&gt;</span><span class="pln"> </span><span class="com">&lt;!-- this rule denies all IP addresses, except the ones mentioned below --&gt;</span><span class="pln">
       </span><span class="com">&lt;!-- 203.0.113.x is a special test range for IP addresses --&gt;</span><span class="pln">
       </span><span class="com">&lt;!-- replace them with your own --&gt;</span><span class="pln">
       </span><span class="tag">&lt;add</span><span class="pln"> </span><span class="atn">ipAddress</span><span class="pun">=</span><span class="atv">"203.0.113.15"</span><span class="pln"> </span><span class="atn">allowed</span><span class="pun">=</span><span class="atv">"true"</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">
       </span><span class="tag">&lt;add</span><span class="pln"> </span><span class="atn">ipAddress</span><span class="pun">=</span><span class="atv">"203.0.113.16"</span><span class="pln"> </span><span class="atn">allowed</span><span class="pun">=</span><span class="atv">"true"</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">
     </span><span class="tag">&lt;/ipSecurity&gt;</span><span class="pln">
   </span><span class="tag">&lt;/security&gt;</span><span class="pln">
 </span><span class="tag">&lt;/system.webServer&gt;</span><span class="pln">
</span><span class="tag">&lt;/location&gt;</span></pre>

<h3>
	رفض وصول الطلبات بدون مرجعية
</h3>

<p>
	تستطيع منع أي شخص لم يُرسل نموذج تسجيل الدخول الوصول له وهذا امتداد <a href="https://codex.wordpress.org/Combating_Comment_Spam/Denying_Access#Deny_Access_to_No_Referrer_Requests" rel="external nofollow">لمواجهة التعليقات المزعجة</a>:
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_9065_35" style="">
<span class="com"># Stop spam attack logins and comments</span><span class="pln">
</span><span class="pun">&lt;</span><span class="typ">IfModule</span><span class="pln"> mod_rewrite</span><span class="pun">.</span><span class="pln">c</span><span class="pun">&gt;</span><span class="pln">
    </span><span class="typ">RewriteEngine</span><span class="pln"> </span><span class="typ">On</span><span class="pln">
    </span><span class="typ">RewriteCond</span><span class="pln"> </span><span class="pun">%{</span><span class="pln">REQUEST_METHOD</span><span class="pun">}</span><span class="pln"> POST
    </span><span class="typ">RewriteCond</span><span class="pln"> </span><span class="pun">%{</span><span class="pln">REQUEST_URI</span><span class="pun">}</span><span class="pln"> </span><span class="pun">.(</span><span class="pln">wp</span><span class="pun">-</span><span class="pln">comments</span><span class="pun">-</span><span class="pln">post</span><span class="pun">|</span><span class="pln">wp</span><span class="pun">-</span><span class="pln">login</span><span class="pun">)</span><span class="pln">\.php</span><span class="pun">*</span><span class="pln">
    </span><span class="typ">RewriteCond</span><span class="pln"> </span><span class="pun">%{</span><span class="pln">HTTP_REFERER</span><span class="pun">}</span><span class="pln"> </span><span class="pun">!.*</span><span class="pln">example</span><span class="pun">.</span><span class="pln">com</span><span class="pun">.*</span><span class="pln"> </span><span class="pun">[</span><span class="pln">OR</span><span class="pun">]</span><span class="pln">
    </span><span class="typ">RewriteCond</span><span class="pln"> </span><span class="pun">%{</span><span class="pln">HTTP_USER_AGENT</span><span class="pun">}</span><span class="pln"> </span><span class="pun">^</span><span class="pln">$
    </span><span class="typ">RewriteRule</span><span class="pln"> </span><span class="pun">(.*)</span><span class="pln"> http</span><span class="pun">:</span><span class="com">//%{REMOTE_ADDR}/$1 [R=301,L]</span><span class="pln">
</span><span class="pun">&lt;/</span><span class="pln">ifModule</span><span class="pun">&gt;</span></pre>

<p>
	رفض وصول الطلبات بدون مرجعية في Nginx:
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_9065_37" style="">
<span class="pln">location </span><span class="pun">~*</span><span class="pln"> </span><span class="pun">(</span><span class="pln">wp</span><span class="pun">-</span><span class="pln">comments</span><span class="pun">-</span><span class="pln">posts</span><span class="pun">|</span><span class="pln">wp</span><span class="pun">-</span><span class="pln">login</span><span class="pun">)</span><span class="pln">\.php$ </span><span class="pun">{</span><span class="pln">
      </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">$http_referer </span><span class="pun">!~</span><span class="pln"> </span><span class="pun">^(</span><span class="pln">http</span><span class="pun">:</span><span class="com">//example.com) ) {</span><span class="pln">
           </span><span class="kwd">return</span><span class="pln"> </span><span class="lit">405</span><span class="pun">;</span><span class="pln">
      </span><span class="pun">}</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	رفض وصول الطلبات بدون مرجعية في Windows Server IIS:
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_9065_39" style="">
<span class="tag">&lt;rule</span><span class="pln"> </span><span class="atn">name</span><span class="pun">=</span><span class="atv">"block_comments_without_referer"</span><span class="pln"> </span><span class="atn">patternSyntax</span><span class="pun">=</span><span class="atv">"ECMAScript"</span><span class="pln"> </span><span class="atn">stopProcessing</span><span class="pun">=</span><span class="atv">"true"</span><span class="tag">&gt;</span><span class="pln">
</span><span class="tag">&lt;match</span><span class="pln"> </span><span class="atn">url</span><span class="pun">=</span><span class="atv">"(.*)"</span><span class="pln"> </span><span class="atn">ignoreCase</span><span class="pun">=</span><span class="atv">"true"</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">
 </span><span class="tag">&lt;conditions</span><span class="pln"> </span><span class="atn">logicalGrouping</span><span class="pun">=</span><span class="atv">"MatchAll"</span><span class="tag">&gt;</span><span class="pln">
   </span><span class="tag">&lt;add</span><span class="pln"> </span><span class="atn">input</span><span class="pun">=</span><span class="atv">"{URL}"</span><span class="pln"> </span><span class="atn">pattern</span><span class="pun">=</span><span class="atv">"^/(wp-comments-post|wp-login)\.php"</span><span class="pln"> </span><span class="atn">negate</span><span class="pun">=</span><span class="atv">"false"</span><span class="tag">/&gt;</span><span class="pln">
   </span><span class="tag">&lt;add</span><span class="pln"> </span><span class="atn">input</span><span class="pun">=</span><span class="atv">"{HTTP_REFERER}"</span><span class="pln"> </span><span class="atn">pattern</span><span class="pun">=</span><span class="atv">".*example\.com.*"</span><span class="pln"> </span><span class="atn">negate</span><span class="pun">=</span><span class="atv">"true"</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">
   </span><span class="tag">&lt;add</span><span class="pln"> </span><span class="atn">input</span><span class="pun">=</span><span class="atv">"{HTTP_METHOD}"</span><span class="pln"> </span><span class="atn">pattern</span><span class="pun">=</span><span class="atv">"POST"</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">  </span><span class="tag">&lt;/conditions&gt;</span><span class="pln">
 </span><span class="tag">&lt;action</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"CustomResponse"</span><span class="pln"> </span><span class="atn">statusCode</span><span class="pun">=</span><span class="atv">"403"</span><span class="pln"> </span><span class="atn">statusReason</span><span class="pun">=</span><span class="atv">"Forbidden: Access is denied."</span><span class="pln"> </span><span class="atn">statusDescription</span><span class="pun">=</span><span class="atv">"No comments without referrer!"</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">
</span><span class="tag">&lt;/rule&gt;</span></pre>

<p>
	استبدل example.com باسم نطاقك فإن كنت تستخدم <a href="https://academy.hsoub.com/apps/web/wordpress/wordpress-multisite/%D8%AA%D9%81%D8%B9%D9%8A%D9%84-%D9%88%D8%B6%D8%A8%D8%B7-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-%D9%85%D9%8F%D8%AA%D8%B9%D8%AF%D9%91%D8%AF-%D8%A7%D9%84%D9%85%D9%88%D8%A7%D9%82%D8%B9-r178/" rel="">ووردبريس متعدد المواقع</a> بأسماء نطاقات مرتبطة به عندها عليك تغيير example.com إلى <code>(example.com|example.net|example4.com)</code>، وإن كنت تستخدم تعليقات Jetpack لا تنسى إضافة jetpack.wordpress.com/ كمرجع:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_9065_41" style="">
<span class="pln">(example.com|jetpack\.wordpress\com)</span></pre>

<h3>
	ModSecurity
</h3>

<p>
	تستطيع اتّباع النصائح في <a href="http://www.frameloss.org/2011/07/29/stopping-brute-force-logins-against-wordpress/" rel="external nofollow">إيقاف عمليات تسجيل دخول هجوم القوى الغاشمة في ووردبريس</a> إن كنت تستخدم ModSecurity، لكن هذا يتطلب وصولًا على مستوى المدير للخادم ويُمكن أن تحتاج مساعدة من فريق دعم الاستضافة.
</p>

<p>
	إن كنت تستخدم ModSecurity 2.7.3 فتستطيع إضافة القواعد ضمن ملف ‎.htaccess.
</p>

<p>
	اطلع على <a href="http://kb.liquidweb.com/wordpress-modsecurity-rules/" rel="external nofollow">ْقواعد ModSecurity لتخفيض هجمات القوى الغاشمة</a>.
</p>

<h3>
	Fail2Ban
</h3>

<p>
	عبارة عن عملية بايثون تعمل في الخلفية تتحقق من ملفات السجلات التي يولدها Apache (أو <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> مثلًأ) وفي بعض الحالات يُمكن أن تُضيف قاعدة للجدار الناري. تستخدم هذه العملية مُرشح يتضمن عبارة منطقية وعند تفعيلها 5 مرات مثلًا خلال 5 دقائق تستطيع حجب عنوان IP لمدة 60 دقيقة (أو أي أرقام أخرى تختارها في المثال السابق). يتطلب تثبيت وضبط Fail2Ban صلاحيات المستخدم الجذر root.
</p>

<h3>
	Blocklists
</h3>

<p>
	إن معظم هجمات القوى الغاشمة تنطلق من روسيا وكازاخستان وأوكرانيا لذلك تستطيع حجب عناوين IP التابعة لهذه البلدان. يتوفر على الإنترنت قوائم حجب تستطيع تحميلها وباستخدام شيفرة على Shell تستطيع تحميل قواعد الحجب مع iptables.
</p>

<p>
	عليك الانتباه إلى أنك تحجب مستخدمين شرعيين مع المهاجمين لذلك عليك دعم وشرح هذا القرار لعملائك. يوجد إلى جانب قوائم الحجب حسب الدولة قوائم تتضمن عناوين IP مُرسلي رسائل البريد المزعج أو العشوائي. تستطيع استخدام هذه القوائم لحجبهم ضمن iptables. يُستحسن تحديث هذه القوائم دوريًا كما يتطلب تثبيت وضبط قوائم الحجب وiptables صلاحيات root.
</p>

<h3>
	خدمات الوكيل/ السحابة
</h3>

<p>
	تستطيع خدمات مثل CloudFlare وSucuri CloudProxy مُساعدتك على تخفيض هذه الهجمات من خلال حجب عناوين IP قبل وصولها لخادمك.
</p>

<p>
	اطلع على <a href="https://github.com/orbisius/sak4wp/" rel="external nofollow">أداة السكين السويسرية لحماية ووردبريس</a> وهي أداة مجانية مفتوحة المصدر تستطيع مساعدتك على حماية wp-login.php و/wp-admin/ لكن ليس /wp-admin/admin-ajax.php بضغطة زر واحدة والكثير غير ذلك.
</p>

<p>
	ترجمة -وبتصرف- للمقال <a href="https://wordpress.org/support/article/brute-force-attacks/" rel="external nofollow">Brute Force Attacks</a> من موقع <a href="https://wordpress.org/" rel="external nofollow">ووردبريس</a>.
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
<li>
		<a href="https://academy.hsoub.com/apps/web/wordpress/%D9%84%D9%85%D8%A7%D8%B0%D8%A7-%D9%8A%D8%B3%D8%AA%D9%87%D8%AF%D9%81-%D8%A7%D9%84%D9%85%D8%AE%D8%AA%D8%B1%D9%82%D9%8A%D9%86-%D9%85%D9%88%D9%82%D8%B9-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-%D8%A7%D9%84%D8%AE%D8%A7%D8%B5-%D8%A8%D9%83%D8%9F-r342/" rel="">لماذا يستهدف المخترقين موقع ووردبريس الخاص بك؟</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/php/wordpress/%D8%A7%D9%84%D8%AD%D9%85%D8%A7%D9%8A%D8%A9-%D9%88%D8%A5%D8%B6%D8%A7%D9%81%D8%A7%D8%AA-%D8%A7%D9%84%D9%86%D8%B3%D8%AE-%D8%A7%D9%84%D8%A7%D8%AD%D8%AA%D9%8A%D8%A7%D8%B7%D9%8A-%D9%81%D9%8A-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r137/" rel="">الحماية وإضافات النسخ الاحتياطي في ووردبريس</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/apps/web/wordpress/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%A7%D8%B3%D8%AA%D8%B9%D8%A7%D8%AF%D8%A9-%D9%85%D9%88%D9%82%D8%B9-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-%D8%AA%D8%B9%D8%B1%D8%B6-%D9%84%D9%84%D8%A7%D8%AE%D8%AA%D8%B1%D8%A7%D9%82-r275/" rel="">كيفية استعادة موقع ووردبريس تعرض للاختراق</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">1440</guid><pubDate>Thu, 27 Jan 2022 09:27:19 +0000</pubDate></item><item><title>&#x62A;&#x62D;&#x633;&#x64A;&#x646; &#x623;&#x62F;&#x627;&#x621; &#x645;&#x648;&#x627;&#x642;&#x639; &#x648;&#x648;&#x631;&#x62F;&#x628;&#x631;&#x64A;&#x633;</title><link>https://academy.hsoub.com/programming/php/wordpress/%D8%AA%D8%AD%D8%B3%D9%8A%D9%86-%D8%A3%D8%AF%D8%A7%D8%A1-%D9%85%D9%88%D8%A7%D9%82%D8%B9-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r1448/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2022_01/61eec6039ba77_---.png.63ad9ecc9e60dbc68829f5ff8842bb14.png" /></p>
<p>
	سواء أكنت تشغّل نسخة من <a href="https://academy.hsoub.com/apps/web/wordpress/%D9%87%D9%84-%D8%A3%D9%86%D8%AA-%D8%AC%D8%AF%D9%8A%D8%AF-%D8%B9%D9%84%D9%89-%D8%B9%D8%A7%D9%84%D9%85-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3%D8%9F-%D8%A5%D9%84%D9%8A%D9%83-%D9%85%D8%A7-%D9%8A%D8%AC%D8%A8-%D8%B9%D9%84%D9%8A%D9%83-%D9%85%D8%B9%D8%B1%D9%81%D8%AA%D9%87-%D8%A3%D9%88%D9%91%D9%84%D9%8B%D8%A7-r202/" rel="">ووردبريس</a> لموقع كثير الزيارات أو لمجرّد مدونة صغيرة مستخدمًا استضافة مشتركة منخفضة التكاليف، ففي كلتا الحالتين لا بدّ من <a href="https://academy.hsoub.com/apps/web/wordpress/%D8%B2%D9%8A%D8%A7%D8%AF%D8%A9-%D8%B3%D8%B1%D8%B9%D8%A9-wordpress-%D8%B7%D8%B1%D9%82-%D8%B2%D9%8A%D8%A7%D8%AF%D8%A9-%D8%A7%D9%84%D8%B3%D8%B1%D8%B9%D8%A9-%D9%84%D8%BA%D9%8A%D8%B1-%D8%A7%D9%84%D9%85%D8%B7%D9%88%D8%B1%D9%8A%D9%86-r41/" rel="">تحسين أداء ووردبريس</a> والخادم الخاص بك ليعملا بأقصى كفاءة ممكنة، يوفّر هذا المقال نظرة شاملة حول تحسين ووردبريس باستخدام منهجيات محدّدة موصى بها، إلا أنّها لا توفر شرحًا تقنيًا مفصلًا لكافة جوانب الموضوع.
</p>

<p>
	إن كنت تبحث عن حلول سريعة، فاذهب مباشرةً لفقرة "التخبئة" في هذا المقال، وستجد فيها أجوبة كثيرة سريعة، وفي حال رغبت بالبدء بعملية تحسين شاملة فاذهب لفقرة "كيفية تطوير الأداء في ووردبريس".
</p>

<p>
	كما ستجد أدناه في قسمي "العوامل المؤثّرة على الأداء" و"أدوات اختبار الأداء" نظرة شاملة حول هذا الموضوع، مع ملاحظة أنّ العديد من التقنيات التي ناقشناها في هذا المقال تطبّق أيضاً على <a href="https://academy.hsoub.com/apps/web/wordpress/wordpress-multisite/%D8%AA%D9%81%D8%B9%D9%8A%D9%84-%D9%88%D8%B6%D8%A8%D8%B7-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-%D9%85%D9%8F%D8%AA%D8%B9%D8%AF%D9%91%D8%AF-%D8%A7%D9%84%D9%85%D9%88%D8%A7%D9%82%D8%B9-r178/" rel="">ووردبريس متعدّد المواقع MU</a>.
</p>

<h2>
	العوامل المؤثرة على أداء موقع ووردبريس
</h2>

<p>
	يوجد العديد من العوامل التي تؤثر على <a href="https://academy.hsoub.com/apps/web/wordpress/wordpress-multisite/%D8%AA%D9%81%D8%B9%D9%8A%D9%84-%D9%88%D8%B6%D8%A8%D8%B7-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-%D9%85%D9%8F%D8%AA%D8%B9%D8%AF%D9%91%D8%AF-%D8%A7%D9%84%D9%85%D9%88%D8%A7%D9%82%D8%B9-r178/" rel="">أداء مدونتك</a> (أو موقعك الإلكتروني) في ووردبريس، وتتضمّن هذه العوامل على وجه الخصوص وليس التحديد كل من بيئة الاستضافة، إعدادات ووردبريس، إصدارات البرامج، وعدد المحتويات الرسومية وحجمها، وسنتناول معظم هذه العوامل.
</p>

<h3>
	الاستضافة
</h3>

<p>
	تعتمد تقنيات التحسين المتاحة لك على إعدادات الاستضافة.
</p>

<h4>
	الاستضافة المُشتركة
</h4>

<p>
	وهي النوع الأكثر شيوعًا من <a href="https://academy.hsoub.com/apps/web/%D8%A3%D9%86%D9%88%D8%A7%D8%B9-%D8%A7%D9%84%D8%A7%D8%B3%D8%AA%D8%B6%D8%A7%D9%81%D8%A7%D8%AA-%D9%88%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%AD%D8%AC%D8%B2-%D8%A7%D8%B3%D8%AA%D8%B6%D8%A7%D9%81%D8%A9-%D9%88%D8%B1%D8%A8%D8%B7%D9%87%D8%A7-%D9%85%D8%B9-%D8%A7%D8%B3%D9%85-%D9%86%D8%B7%D8%A7%D9%82-%D9%85%D8%AA%D8%AC%D8%B1%D9%83-%D8%A7%D9%84%D8%A5%D9%84%D9%83%D8%AA%D8%B1%D9%88%D9%86%D9%8A-r392/" rel="">أنواع الاستضافة</a>، إذ يكون موقعك الإلكتروني مستضافاً على خادم ما جنبًا إلى جنب مع العديد من المواقع الأخرى، وفي هذه الحالة تكون شركة الاستضافة هي المسؤولة عن إدارة <a href="https://academy.hsoub.com/devops/servers/%D8%AF%D9%84%D9%8A%D9%84-%D8%A5%D8%B9%D8%AF%D8%A7%D8%AF-%D8%AE%D8%A7%D8%AF%D9%85-%D9%88%D9%8A%D8%A8-%D9%85%D8%AD%D9%84%D9%8A-%D8%AE%D8%B7%D9%88%D8%A9-%D8%A8%D8%AE%D8%B7%D9%88%D8%A9-r422/" rel="">خادم الويب</a>، وبالتالي ستكون صلاحياتك للتحكّم بإعدادات الخادم وغيرها من الصلاحيات محدودة.
</p>

<p>
	وعمومًا المجالات الأكثر صلة بهذا النوع من الاستضافة هي: التخبئة Caching، أداء ووردبريس، وتحميل ملفات المحتوى خارجيًا Content Offloading.
</p>

<h4>
	الاستضافة الوهمية والخوادم المخصصّة
</h4>

<p>
	في هذا النوع من الاستضافة ستمتلك صلاحية التحكّم بخادمك، والذي يمكن أن يكون جهازًا مستقلًا فيزيائيًا أو واحدًا من مجموعة خوادم وهمية تتشارك نفس الموارد الفيزيائية.
</p>

<p>
	وأهم ما في الأمر أنّك تملك صلاحية التحكّم بالخادم، وأكثر مجالات الاهتمام بالإضافة إلى المجالات أعلاه (التخبئة وأداء ووردبريس) في هذه الحالة هي: تحسين الخادم وتحميل ملفات المحتوى خارجيًا.
</p>

<h4>
	عدد الخوادم
</h4>

<p>
	سيكون من الضروري استثمار عدة خوادم عند التعامل مع حالات عالية الحمل. إذا كانت تلك هي الحالة لديك، فلا بدّ من توظيف كل الأفكار والتقنيات المذكورة أعلاه.
</p>

<p>
	من السهل نقل <a href="https://academy.hsoub.com/programming/php/wordpress/%D9%86%D8%B8%D8%B1%D8%A9-%D8%B4%D8%A7%D9%85%D9%84%D8%A9-%D8%B9%D9%84%D9%89-%D9%82%D8%A7%D8%B9%D8%AF%D8%A9-%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r69/" rel="">قاعدة بيانات ووردبريس</a> من خادم لآخر، ولا تتطلب عملية النقل سوى تعديلًا بسيطًا في ملف الإعدادات، ويمكن نقل الصور وجميع الملفات الثابتة بشكل مشابه إلى خوادم بديلة بسهولة (راجع القسم " تحميل ملفات المحتوى خارجيًا").
</p>

<p>
	يمكن لبرنامج موازنة الحمل الديناميكي Elastic Load Balancer من أمازون أن يساعدك في توزيع الحمل على أكثر من خادم ويب إلا أنّه يتطلّب مستوى عالٍ من الخبرة. وسيوفر النوع HyperDB بديلًا فوريًا للنوع WPDB القياسي في حال كنت تستخدم عدة خوادم قواعد بيانات، والذي يستطيع التعامل مع خوادم قواعد بيانات متعدّدة سواء أكانت الهيكلية مكررة أو موزّعة.
</p>

<h4>
	أداء التجهيزات
</h4>

<p>
	تؤثر إمكانيات التجهيزات تأثيرًا كبيرًا على أداء موقعك الإلكتروني. ومن العوامل الهامة: عدد المعالجات وسرعتها، حجم الذاكرة المتوفرّة ومساحة القرص، إضافةً إلى نوع وسائط التخزين. وعادة ما توفر مزودات الاستضافة أداء تجهيزات أفضل مقابل تكلفة أعلى.
</p>

<h4>
	المسافة الجغرافية
</h4>

<p>
	من العوامل المؤثرة على الأداء أيضًا هي المسافة الفاصلة بين خادمك وزوّار موقعك الإلكتروني، وبهدف حصولهم جميعًا على أداء أمثل، من الممكن استخدام شبكة تسليم محتوى CDN التي تقوم بمزامنة وتزويد الملفات الثابتة (مثل الصور) عبر مناطق جغرافية متعدّدة.
</p>

<h4>
	الحمل على الخادم
</h4>

<p>
	إنّ لكمية الأحمال على خادمك وطريقة ضبطه للتعامل معها له الأثر البالغ على الأداء، فعلى سبيل المثال سيتباطأ الأداء إلى حد التوقف في حال عدم استخدامك لتقنية التخبئة، ومع وصول طلبات إضافية للصفحات؛ ستزدحم هذه الطلبات حد الاختناق مسببةً بالنتيجة تعطل خادم الويب أو <a href="https://academy.hsoub.com/devops/servers/databases/%D8%A7%D9%84%D9%85%D9%81%D8%A7%D9%87%D9%8A%D9%85-%D8%A7%D9%84%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A9-%D9%81%D9%8A-%D9%82%D9%88%D8%A7%D8%B9%D8%AF-%D8%A7%D9%84%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA-%D9%88%D8%AA%D8%B5%D9%85%D9%8A%D9%85%D9%87%D8%A7-r519/" rel="">قواعد البيانات</a> الخاص بك.
</p>

<p>
	أما في حال ضبط إعدادات الاستضافة ضبطًا مناسبًا فسيكون الخادم قادرًا على التعامل مع كمية كبيرة من الأحمال، كما يمكن للتحميل الخارجي إلى خوادم أخرى أن يقلل من الحمل على الخادم.
</p>

<p>
	كما أنّ الأحمال الزائدة والهجمات الممنهجة مثل هجمات تسجيل الدخول المتكرر، والربط المكثّف مع الصور باستخدام روابط الصور لديك في عناصر صفحات ذات حمولات عالية، أو هجمات DOS جميعها يمكن أن تزيد من الحمل على خادمك، وبالتالي من المهم جدًا كشف وتحديد ومنع هذه الهجمات.
</p>

<h4>
	إصدارات البرامج والأداء
</h4>

<p>
	من المهم أن تتأكد أيضًا من كونك تستخدم أحدث إصدارات البرامج، كون تحديثاتها غالبًا ما تصلح الأخطاء وتحسّن الأداء، فالتأكد من كونك تستخدم أحدث إصدارات <a href="https://academy.hsoub.com/devops/linux/%D9%85%D8%A7-%D9%87%D9%88-%D9%86%D8%B8%D8%A7%D9%85-%D8%A7%D9%84%D8%AA%D8%B4%D8%BA%D9%8A%D9%84-%D9%84%D9%8A%D9%86%D9%83%D8%B3%D8%9F-r451/" rel="">لينكس Linux</a> (أو ويندوز)، وApache، وMySQL/MariaDB وPHP هو أمر بالغ الأهمية.
</p>

<h3>
	إعدادات ووردبريس
</h3>

<p>
	تؤثر القالب التي تختاره تأثيرًا كبيرًا على أداء موقعك الإلكتروني، فاختيارك لقالب سريع وخفيف سيحقق أداء وفعالية أكثر بالموازنة مع اختيار سمة مليئة بالرسومات.
</p>

<p>
	كما أن لعدد الإضافات وأدائها أثرًا كبيرًا على أداء موقعك الإلكتروني، فمن الممكن حذف أو إلغاء تفعيل الإضافات غير الضرورية وهي طريقة مهمة من طرق تحسين الأداء.
</p>

<h3>
	حجم الصور والرسومات
</h3>

<p>
	من المؤكد أن تخصيص الصور في منشوراتك بما يناسب الويب سيوفّر في الزمن وعرض الحزمة اللازم، كما أنّه سيرفع تصنيف موقعك في محركات البحث.
</p>

<h2>
	أدوات اختبار الأداء
</h2>

<p>
	تمثّل أداة اختبار صفحة الويب Webpagetest اختبارًا لأداء المواقع الإلكترونية بطريقة فعلية تحاكي الواقع من أماكن أو متصفحات أو سرعات اتصال مختلفة، والأداة PageSpeed Insights من Google توفّر طريقة لقياس أداء موقع ووردبريس الخاص بك معطيةً معلومات واضحة ومحددة تساعدك في إجراء التحسينات.
</p>

<p>
	كما تمتلك جميع أدوات التطوير المُضمّنة في المتصفحات (مثل Firefox أو Chrome) أدوات لقياس الأداء.
</p>

<h2>
	كيفية تطوير الأداء في ووردبريس
</h2>

<p>
	سنستعرض مجموعة من الاقتراحات والأدوات التي يمكن استخدامها بهدف تحسين أداء مواقع ووردبريس
</p>

<h3>
	تحسين موقعك الإلكتروني في ووردبريس
</h3>

<h4>
	تصغير حجم الإضافات
</h4>

<p>
	حتّى تحسن من أداء ووردبريس فإن أوّل وأسهل ما يمكن التفكير به هو الإضافات، عبر حذف أو إلغاء تفعيل غير الضروري منها. يمكنك استخدام تعطيل الإضافات انتقائيًا ومراقبة تأثير ذلك على أداء المخدم.
</p>

<p>
	فإذا كانت إحدى الإضافات تؤثر سلبًا على أداء موقعك بوضوح فعليك قراءة دليل الاستخدام الخاص بها أو أن تطلب المساعدة في أحد منتديات الدعم المناسبة الخاصة بالإضافات.
</p>

<h4>
	تحسين ملفات المحتوى
</h4>

<ul>
	<li>
		ملفات الصور
		<ul>
			<li>
				هل هناك أية صور غير ضرورية (مثلًا هل من الممكن استبدال بعض الصور بنصوص؟)
			</li>
		</ul>
	</li>
	<li>
		تأكد من تخصيص تحسين جميع ملفات الصور بطريقة مناسبة عبر اختيار الصيغة الصحيحة (JPG/PNG/GIF) مع إجراء عملية ضغط لجميع الصور.
	</li>
	<li>
		حجم/عدد الملفات الكلي
		<ul>
			<li>
				هل من الممكن تقليل عدد الملفات الضرورية اللازمة للعرض الأمثل للصفحات المتتالية خلال الجلسة الواحدة على موقعك الإلكتروني؟
			</li>
			<li>
				يوصى بدمج عدّة ملفات في ملف واحد محسّن في حال استخدامك لـ HTTP1.
			</li>
			<li>
				تصغير حجم ملفات CSS وجافاسكربت.
			</li>
		</ul>
	</li>
</ul>

<p>
	يمكن أيضًا استخدام تحميل ملفات المحتوى خارجيًا لتحسين القالب في موقعك.
</p>

<h3>
	ترقية التجهيزات
</h3>

<p>
	يعد دفع مبالغ إضافية لمزوّد الاستضافة الخاص بموقعك مقابل مستويات خدمة أعلى حلًا فعالًا للغاية، فاستخدام ذاكرة وصول عشوائي RAM أكبر أو الانتقال إلى مضيف بمحرك أقراص ذو حالة ثابتة SSD مثل Digital Ocean سيحدث فرقًا مهمًا، كما سيؤثر استخدام عدد أكبر من المعالجات بسرعات أعلى تأثيرًا إيجابيًا، وإن أمكن فمن الأفضل فصل الخدمات ذات الأغراض المختلفة مثل HTTP وMySQL باستخدام إجراءات مختلفة على خوادم متعددة سواء أكانت فيزيائية أم وهمية VPS-es.
</p>

<h3>
	تحسين البرمجيات
</h3>

<p>
	تأكد دومًا من كونك تستخدم أحدث إصدار من نظام التشغيل مثل لينكس Linux ويندوز سيرفر Windows Server، وأحدث خادم ويب مثل ِApache أو IIS كذلك الأمر بالنسبة لقواعد البيانات مثل MySQL وPHP.
</p>

<p>
	يمكن أن يتعذر عليك تنفيذ واتباع الخطوات والنصائح الواردة أدناه، في هذه الحالة اطلب من مزود الاستضافة إنجاز هذه المهام، فمزود الاستضافة الجيد سيرقي حسابك أو ينقله إلى خادم محدث لتحقيق السرعة المطلوبة، وعند الضرورة يمكنك الانتقال لأحد حلول الاستضافة المدارة من شركة ووردبريس التجارية.
</p>

<h4>
	خادم نطاق الأسماء DNS
</h4>

<p>
	لا تشغل خادم نطاق أسماء على خادم ووردبريس بل استخدم إحدى الخدمات التجارية لخوادم نطاقات الأسماء مثل Amazon’s Route 53 أو الخدمة المجانية المقدمّة من الشركة المسجّلة للمجال الخاص بك. إنّ استخدامك لخدمة مثل خدمة أمازون سيُسهّل الانتقال بين خوادم النسخ الاحتياطي في الحالات الطارئة أو خلال أعمال الصيانة كما أنّه يوفر درجة جيدة من القدرة على استمرار العمل في حال حدوث أخطاء. إن اختيارك لاستضافة خادم DNS خارجي سيقلل حتمًا من الحمل على خادم الويب الرئيسي فبالرغم كونه إجراء بسيطًا إلا أنّه سيقلل من الحمل على وحدة المعالجة المركزية CPU عبر تحويل جزء من ضغط الشبكة إلى خارج الخادم.
</p>

<h4>
	خادم الويب
</h4>

<p>
	من الممكن ضبط إعدادات خادم الويب الخاص بك لتحسين الأداء من خلال استخدام تقنيات عديدة مثل التخبئة أو تعيين ترويسات المخابئ لتقليل حمل كل مستخدم. وعمومًاعليك البحث عن التحسينات الخاصة بخادم الويب الخاص بك (للحصول على المزيد من المعلومات يمكنك مثلًا البحث عن "Apache Optimization"). كما تملك بعض خوادم الويب إصدارات ذات سرعات أعلى، والتي يمكنك الحصول عليها مقابل كلفة أكبر مثل الإصدار Apache Litespeed. كما يوجد عدد من الطرق لموائمة Apache ليعطي أداءً أعلى وذلك اعتمادًا على إعدادات موقعك الإلكتروني واستضافتك مثل Memcache.
</p>

<h4>
	PHP
</h4>

<p>
	يتوفر العديد من مسرعات PHP القادرة على تحسين أداء ملفات PHP تحسينًا كبيرًا، وفي حال استخدمت إحداها فإن التحسين لن يشمل نسخة ووردبريس التي نصبتها فقط، وإنمّا كافّة ملفات PHP على الخادم. وللمزيد من المعلومات يمكنك البحث حول تحسينات PHP مثل APC أو OPcache. وتقدّم إضافة W3 الشاملة للتخبئة والمشروحة أدناه دعمًا متكاملًا لكل من Memcach، APC، وغيرها من أدوات التخبئة Opcode.
</p>

<h4>
	MySQL/MariaDB
</h4>

<p>
	لتحسينات MySQL/MariaDB أثر سحري على أداء ووردبريس، فبعض التغييرات البسيطة على إعدادات تخبئة نتائج الاستعلامات مؤقتًا ستُحدث أثرًا إيجابيًا كبيرًا، وذلك كون ووردبريس يكرر العديد من الاستعلامات في كل طلب. وفي هذه الأيام أصبح InnoDB القابل للتحسين والموائمة الدقيقة هو محرك التخزين الافتراضي لـ MySQL، لذا لا بدّ من أن تتأكد من كونك تستخدمه بالفعل، وللمزيد من المعلومات والأمثلة يمكنك البحث حول "تحسين MySQL"، "أداء mysql innodb" أو "تحسين innodb"، أمّا إذا كنت تبحث عن معلومات حول كيفية تحويل جداول MyISAM الأقدم إلى InnoDB ابحث عن "تحويل myisam إلى innodb في mysql".
</p>

<p>
	وطرحت Iliya Polihronov مثالًا رائعًا حول تحسين ووردبريس في WordCamp San Francisco عام 2012، إذ أنجز العديد من المهام ومن بينها تحسين الخادم الخاص بـ WordPress.com.
</p>

<p>
	ومن المهم ألّا تشغل خادم بريد على خادم ووردبريس الخاص بك، وكبديل له لتوفير نماذج التواصل استخدم تطبيقًا مثل Contact Form 7 والذي يوفر آلية تعامل مع البريد الإلكتروني Mailgun مجانية.
</p>

<h3>
	التخبئة
</h3>

<p>
	تُستخدمُ تقنية التخبئة في كلا جانبي الخادم والمستخدم، ومن شأن الإدارة الصحيحة لها أن تحسن أداء مواقع ووردبريس، فيما يلي سنستعرض أهم الإجراءات المتعلقة بالتخبئة:
</p>

<h4>
	الإضافات الخاصّة بالتخبئة
</h4>

<p>
	يمكنك بسهولة تنصيب <a href="https://academy.hsoub.com/apps/web/wordpress/30-%D8%A5%D8%B6%D8%A7%D9%81%D8%A9-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A9-%D9%8A%D8%AC%D8%A8-%D8%B9%D9%84%D9%8A%D9%83-%D8%AA%D8%AB%D8%A8%D9%8A%D8%AA%D9%87%D8%A7-%D8%A5%D8%B0%D8%A7-%D9%84%D9%85-%D8%AA%D9%83%D9%86-%D8%AB%D8%A8%D8%AA%D9%87%D8%A7-%D8%A8%D8%A7%D9%84%D9%81%D8%B9%D9%84-r354/" rel="">إضافات</a> خاصّة بالتخبئة مثل <a href="https://wordpress.org/plugins/w3-total-cache/" rel="external nofollow">W3 Total Cache</a> أو <a href="https://wordpress.org/plugins/wp-super-cache/" rel="external nofollow">WP Super Cache</a> والتي ستحتفظ وتخبئ منشورات وصفحات ووردبريس الخاصّة بك كملفات ثابتة، ومن ثمّ تخدم المستخدمين باستخدام هذه الملفات مما سيُقلل من حمل المعالجة على الخادم، وهذا سيُحسّن الأداء مئات المرات مع وجود بضع صفحات ثابتة.
</p>

<p>
	ولنتيجة أكثر فاعلية يمكن استخدام هذه الإضافة مع أداة تخبئة صفحات على مستوى النظام مثل Varnish مع ملاحظة أنّ ضبط إعدادات التخبئة سيُصبح أكثر تعقيدًا في حال احتوت منشوراتك أو صفحاتك على الكثير من المحتويات الديناميكية.
</p>

<h3>
	الإضافة W3 TOTAL CACHE
</h3>

<p>
	تعدّ W3 Total Cache (واختصارًا W3TC) الجيل الأحدث من إضافات الأداء في ووردبريس، والتي تستخدم أبحاث هيئات تطوير الويب لتوفير تجربة مستخدم مثالية في المواقع الإلكترونية المبنية باستخدام ووردبريس، وفيما يلي سنشرحها بالتفصيل.
</p>

<p>
	تتميز W3TC بقدرتها على تحسين الأداء في كلا جانبي الخادم والمستخدم، مضيفة إجراءات غير متوفّرة أصلًا.
</p>

<ul>
	<li>
		تخبئة الصفحات: يساعد استخدام W3TC على تقليل الزمن اللازم للاستجابة عبر تشكيل إصدارات HTML ثابتة للصفحات، سامحةً بذلك لخوادم الويب بتخديم هذه الصفحات دون الحاجة اللجوء إلى PHP. كما أنّها تحدث العناصر المخبئة تلقائيًا عند إضافة التعليقات أو تعديل الصفحات.
	</li>
	<li>
		تصغير الحجم Minification: وهي عملية حذف للمحارف غير ضرورية في ملفات HTML وCSS وجافاسكربت ومن ثمّ دمجها على التوالي قبل تطبيق عملية ضغط HTTP على الملفات المخبّئة.
	</li>
	<li>
		تخبئة قاعدة البيانات: وهي تخبئة نتائج الاستعلام (الكائنات) الخاصّة بقاعدة البيانات أيضًا، مما يقلل من الزمن اللازم لتوليد صفحات جديدة في العديد من المواقع الإلكترونية، وتكون فائدة هذا الإجراء ملموسة بصورة خاصة في المواقع التي تستقبل أعداد كبيرة من التعليقات.
	</li>
	<li>
		الترويسات: تدير W3TC الترويسات (entity tag, cache-control, expires) التي تتحكم بتخبئة الملفات في <a href="https://academy.hsoub.com/apps/general/%D8%AA%D8%A3%D9%85%D9%8A%D9%86-%D9%85%D8%AA%D8%B5%D9%81%D8%AD%D8%A7%D8%AA-%D8%A7%D9%84%D9%88%D9%8A%D8%A8-%D9%81%D9%8A-%D8%A7%D9%84%D8%B9%D8%A7%D9%84%D9%85-%D8%A7%D9%84%D8%B1%D9%82%D9%85%D9%8A-r382/" rel="">متصفحات الويب</a>، مقلّلة بذلك الحمل على الخادم مما يحسّن بالنتيجة الأداء الملموس للمستخدم.
	</li>
	<li>
		شبكة تسليم المحتوى CDN: يمكنك استخدام شبكة CDN للتحميل الخارجي للموارد من حساب الاستضافة الخاص بك، إذ تنقل W3TC الطلبات على جميع الملفات الثابتة من صور وملفات CSS وجافاسكربت وغيرها إلى شبكة ذات خوادم عالية الأداء (شبكة من الخوادم عالية الأداء)، ويستخدم الخادم الأقرب للزائر لتحميل الملفات المطلوبة موفّرة بذلك أسرع تنزيلات (تحميلات) ممكنة.
	</li>
</ul>

<p>
	إنّ W3TC قادرة على تحسين ووردبريس في البيئات وحيدة أو متعدّدة الخوادم سواء أكانت الاستضافة مُشتركة أم مخصّصة.
</p>

<h3>
	الإضافة WP SUPER CACHE
</h3>

<p>
	وهي إضافة لتخبئة الصفحات الثابتة في ووردبريس، تولّد ملفات HTML لتُخدّم مباشرة عبر Apache دون معالجة PHP Scripts الضخمة نسبيًا وهذا ما يعطي بالنتيجة ربحًا واضحًا في سرعة مدونة ووردبريس الخاصة بك.
</p>

<p>
	إنّ استخدامك للإضافة WP Super Cache يمكّن خادمك من تخديم الزوار بصفحات HTML المخبّئة بنفس سرعة تخديمهم بالملفات الرسومية العادية. لذا ينصح باستخدام WP Super Cache إذا كان موقعك يخدّم بصعوبة عدد زواره اليومي، أو إن كان يظهر على أي من المواقع الإلكترونية الشهيرة مثل Digg.com وSlashdot.org.
</p>

<h4>
	التخبئة في طرف الخادم
</h4>

<p>
	تعدّ التخبئة في طرف الخادم أكثر تعقيدًا وهي تستخدم في المواقع عالية الحمولة، ويوجد العديد من الخيارات إلا أنّها خارج موضوع هذه المقالة.
</p>

<p>
	أبسط الحلول هو التخبئة محليًا في الخادم، في حين أن الأنظمة المضمّنة والأكثر تعقيدًا تستخدم عدّة خوادم تخبئة (أو ما يعرف بالخوادم الوكيلة العكسية) وذلك في الجانب الأمامي من خوادم الويب بمكان تشغيل تطبيق ووردبريس فعليًا. ومن الممكن تطوير أداء PHP بعدّة أضعاف عبر إضافة ذاكرة مخبئية من نوع opcode لتعمل كذاكرة PHP مخبئية بديلة APC.
</p>

<p>
	تعمل إضافة الذاكرة المخبئية التي تقدمها Varnish بالتناغم مع W3 Total Cache لتخزين الصفحات المبنية مسبقًا في الذاكرة والتخديم بها بسرعة دون الحاجة إلى تنفيذ حزمة ووردبريس، Apache أو PHP.
</p>

<p>
	وبذلك نجد أنّه من الممكن مساعدة Varnish من خلال عدم مطالبة زوار موقعك بتسجيل الدخول إلى ووردبريس عبر استخدام إضافة خاصة بالتعليقات مثل Disqus عوضًا عن استخدام تعليقات ووردبريس الأساسية (الأصلية/الافتراضية) وهذا ما يؤدي إلى زيادة عدد الصفحات القادر على التخديم بها من الذاكرة المخبئية.
</p>

<h4>
	التخبئة في المتصفح
</h4>

<p>
	تقلل <strong>التخبئة في المتصفح</strong> من الحمل على الخادم عبر تقليل عدد الطلبات لكل صفحة، على سبيل المثال يمكن للمتصفحات ومع استخدام الترويسة الصحيحة للملفات الثابتة (الصور وملفات CSS وجافاسكربت وغيرها) أن تخبئها على جهاز المستخدم، وبذلك يتحقق المتصفح فقط فيما إذا طرأ تعديل على الملفات بدلًا من طلبها بالكامل، وبالنتيجة سيتمكن خادم الويب من الإجابة بالرمز 304 يتضمّن التأكيد بأن الملف لم يتغير، بدلًا من الإجابة بالرمز 200 والذي يتطلّب إرسال الملف كاملًا.
</p>

<p>
	توفر W3 Total Cache الدعم المتكامل لكل من التخبئة في المتصفحات وETag وهي إحدى الآليات التي يوفرها HTTP للتحقق من ذاكرة الويب المخبئية.
</p>

<h3>
	تحميل ملفات المحتوى خارجيًا
</h3>

<h4>
	استخدام شبكة تسليم المحتوى CDN
</h4>

<p>
	يقلل استخدام شبكة تسليم المحتوى CDN من الحمل على موقعك الإلكتروني، فإن إجراء البحث والتسليم للصور وملفات القوالب وCSS وجافاسكربت خارجيًا إلى CDN ليس أسرع فحسب بل يخفف أيضًا الكثير من الحمل عن حزمة تطبيق ووردبريس في خادمك، ويكون استخدام شبكة تسليم المحتوى أكثر فعالية بالاشتراك مع استخدام إضافة تخبئة مثل W3TC المذكورة سابقًا.
</p>

<p>
	وإحدى شبكات توزيع المحتوى CDN الشائعة هي CloudFlare التي تقدّم أيضًا خدمات أمان الانترنت ISS، أسعارها تبدأ من المجاني تمامًا وتزداد الميزات المقدمّة تدريجياً مع زيادة الكلفة، فهذه الشبكات ثابتة الكلفة بمعنى أنّ الكلفة تتعلّق بالميزات المقدمّة وليس بكمية الاستخدام.
</p>

<p>
	تمكنّك CloudFlare من توجيه حمولات موقعك عبر شبكاتهم قبل وصولها إلى مضيفك الأصلي، أمّا الشبكة Cloudfront من أمازون فتعتمد على خدمة S3 لتوّفر آلية شبكة تسليم ملفات المحتوى تعمل على ملفاتك الثابتة.
</p>

<p>
	إذًا CDN هي خدمة تخبئ ملفاتك الثابتة على العديد من خوادم الويب حول العالم، موفّرة بذلك أداء تحميل أسرع لمستخدمين موقعك بغض النظر عن موقعهم الجغرافي، ويوصى باستخدام Cloudfront جنبًا لجنب مع S3 عوضًا عن استخدام S3 وحدها، والفرق في الكلفة بين الحالتين ليس بالكبير.
</p>

<p>
	أما خدمة MaxCDN فهي شبكة توصيل ملفات محتوى تحسب فيها التكلفة بحسب الاستخدام وليس الميزات أي بطريقة مشابهة لخدمة Cloudfront من أمازون، أما عن الاختلافات فإن MaxCDN تدعم خدمة الفيديو عند الطلب كما تدعم نسخ الملفات المتطابق (دون طلب رفعها) ولكن بإمكانك رفعها إن كنت تفضّل ذلك.
</p>

<p>
	ويمثّل KeyCDN مزوّد شبكة تسليم المحتوى بديل والذي يوفّر دليل دمج شبكة تسليم المحتوى مع ووردبريس خطوة بخطوة على صفحة الدعم الخاصة بالخدمة.
</p>

<p>
	وتعدّ كل من KeyCDN وMaxCDN من الخيارات بأسعار مقبولة وتتغلّب على أسعار المنافسين مثل أمازون، وذلك كون كل منها يمثّل قسمًا من مزوّد شبكة تسليم المحتوى أوسع.
</p>

<h4>
	ملفات المحتوى الثابتة
</h4>

<p>
	يمكن لأي ملف ثابت أن يحمّل خارجيًا إلى خادم آخر فمثلًا من الممكن نقل أي صورة أو ملف CSS أو جافاسكربت إلى خادم آخر، وهي تقنية شائعة الاستخدام في الأنظمة خارقة الأداء (Google, Flickr, YouTube وغيرها) إلّا أنها تبقى مفيدة للمواقع الإلكترونية الأصغر العاملة على خادم واحد، كما أنّ نقل ملفات المحتوى إلى مضيفات أسماء أخرى يمكن أن يشكّل حجر أساس للعمل على خوادم متعدّدة مستقبلًا.
</p>

<p>
	وحسّنت بعض خوادم الويب لتخديم الملفات الثابتة مثل lighttpd، والتي تعمل بكفاءة أعلى من <a href="https://academy.hsoub.com/devops/servers/web/%D8%A3%D9%81%D8%B6%D9%84-5-%D8%AE%D9%88%D8%A7%D8%AF%D9%85-%D9%88%D9%8A%D8%A8-%D9%85%D9%81%D8%AA%D9%88%D8%AD%D8%A9-%D8%A7%D9%84%D9%85%D8%B5%D8%AF%D8%B1-r370/" rel="">خوادم الويب</a> الأكثر تعقيدًا مثل Apache.
</p>

<p>
	إنّ خدمة التخزين البسيط S3 من أمازون ما هي إلّا خدمة استضافة ملفات ثابتة مخصّصة تعتمد على مبدأ حساب التكلفة وفق كمية الاستخدام دون تحديد حد أدنى لها، لذا ستكون حلًا عمليًا للمواقع الإلكترونية ذات الحمولات الأقل والتي بالكاد تصل لحالات الذروة باستخدام خادم مشترك أو خادم وحيد.
</p>

<h4>
	مضيفات أسماء متعدّدة
</h4>

<p>
	من الممكن تحقيق تحسين إضافي للمستخدم عبر تقسيم الملفات الثابتة على عدّة مضيفات أسماء، وبما أنّ معظم المتصفحات ترسل طلبين متزامنين إلى الخادم فقط، وعلى فرض أن الصفحة تتطلب 16 ملف عندها سيُطلب كل اثنين منها معًا، أمّا في حال وزعتها على 4 مضيفات أسماء، سيصبح من الممكن طلب كل 8 ملفات معًا، وهذا ما سيقلل زمن تحميل الصفحة للمستخدم إلّا أنّه سيزيد من الحمل على الخادم بسبب إنشاء المزيد من الطلبات المتزامنة (وهذا ما يدعى بتعدد المسارات Pipelining والذي غالبًا ما يسبب في حال فرط استخدامه إلى استهلاك كامل عرض حزمة اتصال الإنترنت الخاص بالمستخدم).
</p>

<p>
	كبداية فإن تحميل الصور خارجيًا هو الأسهل والأبسط، ويمكن تقسيم الصور بالتساوي على ثلاث مضيفات أسماء (مثلًا assets1.yoursite.com, assets2.yoursite.com, assets3.yoursite.com)، وفي حال زيادة الحمولة يمكن نقل مضيفات الأسماء هذه إلى خادمك الخاص.
</p>

<p>
	<strong>ملاحظة</strong>: تجنّب اختيار مضيف أسماء عشوائي لأن ذلك سيؤثّر سلبًا على عمليات التخبئة في المتصفح وبالنتيجة زيادة الأحمال أو حتى توليد عمليات بحث مفرطة في الـ DNS على حساب الأداء. وبشكل مشابه من الممكن تحميل أي ملف CSS أو جافاسكربت خارجيًا إلى خوادم أو مضيفات أسماء مستقلّة.
</p>

<h4>
	الخلاصات
</h4>

<p>
	من الممكن تحميل الخلاصات Feeds لخدمة خارجية بسهولة تامّة، وتقوم خدمات تتبع الخلاصات مثل FeedBurner من Google بذلك تلقائيًا، إذ ستتحمّل خوادم خدمة FeedBurner حمولة الخلاصات ولا تحدثها من موقعك الإلكتروني إلّا مرة كل بضع دقائق وهذا ما سيوفر أحمالًا كثيرة.
</p>

<p>
	كما يمكنك تحميل الخلاصات خارجيًا إلى خادم منفصل (مثل feeds.yoursite.com) ومن ثمّ يتحمّل حمولة الخلاصات من إحصائيات أو إعلانات.
</p>

<h3>
	الضغط
</h3>

<p>
	هنالك طرقًا عديدة لضغط الملفات والبيانات على الخادم مما يساهم بتسليم الصفحات إلى المتصفحات المستخدمين بسرعة أكبر، علمًا أنّ الإضافة W3 Total Cache المشروحة سابقًا توفّر الدعم لمعظم منهجيات الضغط الشائعة، فهي تدعم التصغير والترتيب بهدف ضغط وتجميع صفحات التنسيق وملفات جافاسكربت، كما أنّها تدعم أدوات ضغط الخرج مثل zlib.
</p>

<p>
	من المهم أيضًا ضغط ملفات الوسائط مثل الصور، وستساعد الإضافة WP Smushit في تحقيق ذلك.
</p>

<h3>
	موائمة قاعدة البيانات: تنظيف قاعدة البيانات
</h3>

<p>
	من الممكن أن تساعد الإضافة WP Optimize في تقليل الفوضى ضمن قاعدة البيانات، كما يمكن جعل ووردبريس يقلل من عدد المراجعات المحفوظة من الصفحات والمنشورات.
</p>

<h3>
	إضافة خوادم
</h3>

<p>
	تعد إضافة الخوادم من الطرق الفعّالة لتحسين الأداء رغم تطلبها المزيد من الخبرات، وفي هذا الصدد ينصح بشدة قراءة دليل تصميم ووردبريس القابل للتوسع في AWS والذي يوضّح كيفية بناء تنفيذ AWS ثمين وقابل للتوسّع بشدّة باستخدام مخزن البيانات العلائقية RDS من أمازون.
</p>

<p>
	كما يمكنك استخدام موازن الحمل الديناميكي (المرن) من أمازون لتوزيع الأحمال على عدّة خوادم ويب، أمّا بخصوص تشغيل قواعد بيانات متعدّدة أو قاعدة بيانات قابلة للتوسّع بشدّة فمن الممكن استخدام HyperDB أو RDS من أمازون.
</p>

<p>
	ترجمة -وبتصرف- للمقال <a href="https://wordpress.org/support/article/optimization/" rel="external nofollow">Optimization</a> من موقع WordPress.org
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
	<li>
		<a href="https://academy.hsoub.com/wordpress/" rel="">تعلم ووردبريس</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/apps/web/wordpress/%D8%A7%D9%84%D8%AE%D8%B7%D9%88%D8%A7%D8%AA-%D8%A7%D9%84%D8%A3%D9%88%D9%84%D9%89-%D9%84%D9%84%D8%B9%D9%85%D9%84-%D9%85%D8%B9-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r364/" rel="">الخطوات الأولى للعمل مع ووردبريس</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/apps/web/wordpress/%D8%B4%D8%B1%D8%AD-%D9%85%D9%81%D8%B5%D9%84-%D9%84%D8%B5%D9%81%D8%AD%D8%A7%D8%AA-%D8%A7%D9%84%D8%A5%D8%AF%D8%A7%D8%B1%D8%A9-%D9%88%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%A7%D9%84%D8%AA%D8%AD%D9%83%D9%85-%D8%A7%D9%84%D9%83%D8%A7%D9%85%D9%84-%D8%A8%D9%85%D9%88%D9%82%D8%B9-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r399/" rel="">شرح مفصل لصفحات الإدارة وكيفية التحكم الكامل بموقع ووردبريس</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/apps/web/wordpress/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%A5%D8%A8%D9%82%D8%A7%D8%A1-%D9%86%D8%B3%D8%AE%D8%A9-%D8%B3%D8%A7%D9%83%D9%86%D8%A9-%D9%85%D9%86-%D9%85%D9%88%D9%82%D8%B9%D9%83-%D8%A3%D8%AB%D9%86%D8%A7%D8%A1-%D8%A8%D9%86%D8%A7%D8%A6%D9%83-%D9%84%D9%85%D9%88%D9%82%D8%B9-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-%D8%AC%D8%AF%D9%8A%D8%AF-r242/" rel="">كيفية إبقاء نسخة ساكنة من موقعك أثناء بنائك لموقع ووردبريس جديد</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/apps/web/wordpress/%D9%87%D9%84-%D9%8A%D8%A4%D8%AB%D8%B1-%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A5%D8%B6%D8%A7%D9%81%D8%A7%D8%AA-%D9%83%D8%AB%D9%8A%D8%B1%D8%A9-%D8%B3%D9%84%D8%A8%D8%A7-%D8%B9%D9%84%D9%89-%D9%85%D9%88%D9%82%D8%B9-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3%D8%9F-r477/" rel="">هل يؤثر استخدام إضافات كثيرة سلبا على موقع ووردبريس؟</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">1448</guid><pubDate>Wed, 09 Feb 2022 16:06:00 +0000</pubDate></item><item><title>&#x643;&#x64A;&#x641;&#x64A;&#x629; &#x643;&#x62A;&#x627;&#x628;&#x629; &#x634;&#x64A;&#x641;&#x631;&#x629; &#x636;&#x645;&#x646; &#x645;&#x646;&#x634;&#x648;&#x631;&#x627;&#x62A;&#x643; &#x639;&#x644;&#x649; &#x645;&#x648;&#x642;&#x639; &#x648;&#x648;&#x631;&#x62F;&#x628;&#x631;&#x64A;&#x633;</title><link>https://academy.hsoub.com/programming/php/wordpress/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D9%83%D8%AA%D8%A7%D8%A8%D8%A9-%D8%B4%D9%8A%D9%81%D8%B1%D8%A9-%D8%B6%D9%85%D9%86-%D9%85%D9%86%D8%B4%D9%88%D8%B1%D8%A7%D8%AA%D9%83-%D8%B9%D9%84%D9%89-%D9%85%D9%88%D9%82%D8%B9-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r1425/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2022_01/61dc0b790c80f_------------------.png.d6bee6c52dd49166cad3a82a9b92f26f.png" /></p>
<p>
	إن كتابة الشيفرة البرمجية ضمن <a href="https://academy.hsoub.com/apps/web/wordpress/%D9%83%D8%AA%D8%A7%D8%A8%D8%A9-%D8%A7%D9%84%D9%85%D9%82%D8%A7%D9%84%D8%A7%D8%AA-posts-%D9%81%D9%8A-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r388/" rel="">منشورات</a> المواقع -والتي تُشبه الشيفرة من ناحية الشكل لكنها لا تُنفذ عمل الشيفرة من ناحية الوظيفة- يُعد تحدي لمعظم المدونين. يعتمد تفسير الشيفرة التي تكتبها ضمن محرر ووردبريس افتراضيًا على علامة التبويب التي تستخدمها مرئي أو نص حيث أن علامة التبويب مرئي تنظر للشيفرة على أنها نص عادي وبالتالي تحوّل المحارف &lt; و &gt; إلى الترميز الموافق لها كي لا تُفسر الشيفرة من قبل المتصفح. سوف تُحوّل علامات التنصيص أيضًا، وتذكر أن ووردبريس افتراضيًا يُطبق عمليات تصحيح تلقائية حتى يُحاط النص بعلامات تنصيص صحيحة اعتمادًا على مُحددات اللغة، بينما لا يُحوّل محرر ووردبريس ضمن علامة تبويب نص المحارف إلى الترميز المقابل لها وبالتالي سوف يتعرف المتصفح على وسوم ومحددات HTML و<a href="https://wiki.hsoub.com/CSS" rel="external">CSS</a> ليظهر النص بتنسيق وشكل غير مُرتب.
</p>

<p>
	انتبه إلى أن ما سبق يُمكن أن يختلف حسب نسخة ووردبريس والإضافات ومحرر المنشورات المستخدم، ففي بعض الإصدارات الأقدم من ووردبريس سوف تُحوّل المحارف <code>&lt;</code> و <code>&gt;</code> إلى التراميز ‎&lt;‎ و ‎&gt;‎ وعند استخدام <a href="https://wiki.hsoub.com/HTML" rel="external">وسم HTML</a> ضمن المنشور سوف يبقى كما هو وهذا يؤدي إلى تفسيره من قبل المتصفح.
</p>

<h2>
	استخدام الشيفرة ضمن الفقرات
</h2>

<p>
	إن وسوم HTML التي تحول النص إلى خط ثابت عرض أحرفه monospaced هي <a href="https://wiki.hsoub.com/HTML/cpde" rel="external"><code>&lt;code&gt;</code></a> و<code>&lt;tt&gt;</code> والأخير نادرًا ما يُستعمل اليوم لأنه استبدل بالوسم الذي يدل على عمله والأكثر فائدة <code>&lt;code&gt;</code>. يُظهر هذا الوسم الشيفرة البرمجية بتنسيق مختلف عن النص العادي.
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_8108_10" style=""><span class="pun">‫هذا</span><span class="pln"> </span><span class="pun">مثال</span><span class="pln"> </span><span class="pun">عن</span><span class="pln"> </span><span class="pun">طريقة</span><span class="pln"> </span><span class="pun">ذكر</span><span class="pln"> </span><span class="pun">الشيفرة</span><span class="pln"> </span><span class="pun">ضمن</span><span class="pln"> </span><span class="pun">فقرة</span><span class="pln"> </span><span class="pun">مثل</span><span class="pln"> </span><span class="pun">الدوال</span><span class="pln"> </span><span class="str">&lt;code&gt;</span><span class="pln">wp_title</span><span class="pun">()&lt;</span><span class="str">/code&gt; و&lt;code&gt;wp_content()&lt;/</span><span class="pln">code</span><span class="pun">&gt;</span><span class="pln"> </span><span class="pun">و&lt;</span><span class="pln">code</span><span class="pun">&gt;</span><span class="pln">wp_footer</span><span class="pun">()&lt;/</span><span class="pln">code</span><span class="pun">&gt;</span><span class="pln"> </span><span class="pun">المفيدة</span><span class="pln"> </span><span class="pun">في</span><span class="pln"> </span><span class="pun">ووردبريس.</span></pre>

<p>
	يُفيد هذا الوسم في إنشاء فقرات من النص (الذي لا يتضمن HTML) تبدو مثل الشيفرة لكن ماذا عن وسوم HTML التي تريد عرضها؟
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_8108_12" style=""><span class="pun">‫ابحث</span><span class="pln"> </span><span class="pun">ضمن</span><span class="pln"> </span><span class="pun">ملف</span><span class="pln"> header</span><span class="pun">.</span><span class="pln">php </span><span class="pun">عن</span><span class="pln"> </span><span class="pun">قسم</span><span class="pln"> </span><span class="str">&lt;code&gt;</span><span class="pun">&lt;</span><span class="pln">div </span><span class="kwd">class</span><span class="pun">=</span><span class="str">"header"</span><span class="pun">&gt;&lt;</span><span class="str">/code&gt; لتغيير الترويسة &lt;code&gt;&lt;h1&gt;&lt;/</span><span class="pln">code</span><span class="pun">&gt;.</span></pre>

<p>
	إن استخدام الوسم <code>&lt;code&gt;</code> لا يفرض على ووردبريس ترميز وسوم HTML ضمن وسم أو تجريدها منه ضمن المنشور لأن ووردبريس يعتقد أنك تستخدم هذا الوسم للتنسيق وبالتالي لا يجري أي تغيير عليه، ويأتي بعده متصفح الويب ليجد وسم <code>&lt;code&gt;</code> يليه وسم <code>&lt;div&gt;</code> لذا يُنشئ حاويةً جديدةً ضمن صفحة الويب.
</p>

<p>
	عليك استخدام ترميز المحارف أو المحارف الموسّعة لتمثيل محارف الأسهم لليمين واليسار، وذلك لتجنب تعرف المتصفح عليها كبداية ونهاية وسم HTML ويصبح المثال السابق كالتالي.
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_8108_14" style=""><span class="pun">‫ابحث</span><span class="pln"> </span><span class="pun">ضمن</span><span class="pln"> </span><span class="pun">ملف</span><span class="pln"> header</span><span class="pun">.</span><span class="pln">php </span><span class="pun">عن</span><span class="pln"> </span><span class="pun">قسم</span><span class="pln"> </span><span class="str">&lt;code&gt;</span><span class="pun">&lt;</span><span class="pln">div </span><span class="kwd">class</span><span class="pun">=</span><span class="str">"header"</span><span class="pun">&gt;&lt;</span><span class="str">/code&gt; لتغيير الترويسة &lt;code&gt;&lt;h1&gt;&lt;/</span><span class="pln">code</span><span class="pun">&gt;.</span></pre>

<h2>
	استخدام الروابط ضمن الفقرات
</h2>

<p>
	يحول ووردبريس افتراضيًا أي عبارة تبدأ بالكلمة http:‎ إلى رابط لذا إن كنت تعطي مثالًا عن كيفية الربط مع منشور ما ضمن ووردبريس تستطيع استخدام محارف موسّعة لإشارة <code>/</code> كي لا يرى ووردبريس الرابط كرابط.
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_8108_16" style=""><span class="pun">الربط</span><span class="pln"> </span><span class="pun">مع</span><span class="pln"> </span><span class="pun">منشور</span><span class="pln"> </span><span class="pun">ووردبريس</span><span class="pln"> </span><span class="pun">مُعين</span><span class="pln"> </span><span class="pun">باستخدام</span><span class="pln">
</span><span class="str">&lt;code&gt;</span><span class="pln">http</span><span class="pun">:&amp;</span><span class="pln"> amp</span><span class="pun">;#</span><span class="lit">47</span><span class="pun">;&amp;</span><span class="pln"> amp</span><span class="pun">;#</span><span class="lit">47</span><span class="pun">;</span><span class="pln">example</span><span class="pun">.</span><span class="pln">com</span><span class="pun">&amp;</span><span class="pln"> amp</span><span class="pun">;#</span><span class="lit">47</span><span class="pun">;</span><span class="pln">index</span><span class="pun">.</span><span class="pln">php</span><span class="pun">?</span><span class="pln">p</span><span class="pun">=</span><span class="lit">453</span><span class="pun">&lt;/</span><span class="pln">code</span><span class="pun">&gt;</span><span class="pln">
</span><span class="pun">ضمن</span><span class="pln"> </span><span class="pun">منشورك.</span></pre>

<p>
	ملاحظة: أزل الفراغات بين &amp; و amp.
</p>

<h2>
	قائمة بترميز المحارف المهمة
</h2>

<p>
	إليك قائمة بترميز بعض محارف HTML المرتبطة بسياق هذا المقال.
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_8108_18" style=""><span class="pun">(</span><span class="pln">less than</span><span class="pun">)</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">&lt;</span><span class="pln"> </span><span class="kwd">or</span><span class="pln"> </span><span class="pun">&lt;</span><span class="pln">
</span><span class="pun">(</span><span class="pln">greater than</span><span class="pun">)</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">&gt;</span><span class="pln"> </span><span class="kwd">or</span><span class="pln"> </span><span class="pun">&gt;</span><span class="pln">
</span><span class="str">/ = /</span><span class="pln">      
</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">]</span><span class="pln">
</span><span class="pun">[</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">[</span><span class="pln">
</span><span class="str">" = "</span><span class="pln"> </span><span class="kwd">or</span><span class="pln"> </span><span class="str">"
' = '
“ = “ or “
” = ” or “
‘ = ‘ or ‘
’ = ’ or ’
(ampersand) = &amp; or &amp;</span></pre>

<p>
	يوجد قائمة بالمصادر في نهاية المقال سوف تساعدك على تحويل وسوم HTML إلى محارف مُرمّزة تلقائيًا وهكذا لست بحاجة لحفظ ترمزي هذه المحارف.
</p>

<h2>
	استخدام وسم &lt;pre&gt;
</h2>

<p>
	تستطيع استخدام الوسم <a href="https://wiki.hsoub.com/HTML/pre" rel="external"><code>&lt;pre&gt;</code></a> لكي تظهر الشيفرة ضمن صندوق يُمكن نسخة ولصق محتواه ضمن ملف شيفرة أو قالب شيفرة آخر. يوجه الوسم &lt;pre&gt; متصفح الويب ليستخدم خط ثابت عرض محارفه momospaced ليُعيد إنشاء ما يوجد ضمن الوسم كما هو بما يتضمنه من فراغات وفواصل سطرية ومحارف كما هي مكتوبة.
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_8108_20" style=""><span class="tag">&lt;h3&gt;</span><span class="pln"> عنوان القسم الثالث</span><span class="tag">&lt;/h3&gt;</span><span class="pln">
</span><span class="tag">&lt;p&gt;</span><span class="pln"> هذه هي بداية
</span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">title</span><span class="pun">=</span><span class="atv">"مقال حول العلاقات"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"goodtalk.php"</span><span class="tag">&gt;</span><span class="pln">
مقال حول العلاقات</span><span class="tag">&lt;/a&gt;</span><span class="pln"> بين تحسين محركات البحث والروابط الداخلية...</span></pre>

<p>
	إن استخدام وسم <code>&lt;pre&gt;</code> من ناحية المظهر ليس جميلًا لكنه يؤدي عمله. يُمكن إيجاد أمثلة عن كيفية تنسيق هذا الوسم في القسم التالي لكن وظيفته لا تتغير وهي عرض الشيفرة كما هي.
</p>

<p>
	عندما أقول يعرض الشيفرة تمامًا كما هي فهذا يعني حرفيًا كما هي، فإن كانت الشيفرة مؤلفة من سطر واحد طويل سوف يظهر خارج الصفحة لعدم وجود أي شيء يُحيط بالشيفرة. ألق نظرة على المثال التالي:
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_8108_22" style=""><span class="tag">&lt;h3&gt;</span><span class="pln">عنوان القسم الثالث</span><span class="tag">&lt;/h3&gt;</span><span class="pln">
</span><span class="tag">&lt;p&gt;</span><span class="pln">هذه هي بداية </span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">title</span><span class="pun">=</span><span class="atv">"مقال عن العلاقات"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"goodtalk.php"</span><span class="tag">&gt;</span><span class="pln">مقال عن العلاقة</span><span class="tag">&lt;/a&gt;</span><span class="pln"> بين تحسين محركات البحث والروابط الداخلية لموقعك وأعتقد أنه عليك قراءته لأنه من المهم معرفة 
</span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">title</span><span class="pun">=</span><span class="atv">"مقال عن الروابط الداخلية"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"communication.php"</span><span class="tag">&gt;</span><span class="pln">فوائد الروابط الداخلية</span><span class="tag">&lt;/a&gt;</span><span class="pln"> للاستفادة منها ضمن موقعك قدر الإمكان....</span></pre>

<p>
	إن تنسيق الفقرة السابقة غير جميل، أليس كذلك؟ لتجنب ظهور النص بالشكل السابق يجب استخدام فاصل سطري لكن تحديد أماكن إضافة هذه الفواصل عند عرض الشيفرة التي سوف تُنسخ أمر مزعج بعض الشيء.
</p>

<p>
	إن كنت تملك بعض الخبرة في لغات البرمجة سوف تعلم أين تضع الفواصل السطرية لكن إن كانت خبرتك معدومة يجب عليك اختيار أماكن الفواصل السطرية حيثما تظن أنه مناسب ثم اختبار الشيفرة بعد الانتهاء للتأكد من أنها ما زالت تعمل دون أي مشاكل.
</p>

<p>
	إن كانت الشيفرة التي تريد عرضها طويلةً جدًا عليك عرض مقتطف منها وإرفاق رابط للشيفرة الكاملة ضمن ملف نصي أو ملف <a href="https://wiki.hsoub.com/PHP" rel="external">PHP</a> أو استخدام أحد الخدمات الموجودة على شبكة الإنترنت التي تسمح لك بعرض الشيفرة مؤقتًا ضمنها.
</p>

<h2>
	إصلاح الأخطاء ضمن الشيفرة
</h2>

<p>
	تتضمن كتابة الشيفرة البرمجية ضمن منشورات ووردبريس أحيانًا بعض الصعوبات لأنك تُضطر لتجاوز تنسيق ووردبريس الافتراضي واستخدام مرشحات تُصلح ما تكتبه، لذا إن كنت تواجه مشاكل في كتابة شيفرة برمجية ضمن منشور ووردبريس فهذا القسم أُعد لمساعدتك.
</p>

<h3>
	التصحيح التلقائي لعلامات التنصيص
</h3>

<p>
	أحد المشاكل التي تتكرر عند استخدام شيفرة برمجية ضمن منشورات ووردبريس هي ميزة التصحيح التلقائي لعلامات التنصيص في ووردبريس حيث يحوّل ووردبريس افتراضيًا علامات التنصيص العادية إلى علامات تنصيص مائلة ويعتمد هذا على <a href="https://academy.hsoub.com/programming/php/wordpress/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%AA%D8%AB%D8%A8%D9%8A%D8%AA-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r1248/" rel="">لغة تثبيت ووردبريس</a> ضمن ملف wp-config.php. انتبه إلى أن ميزة التصحيح التلقائي (التي تُدعى أيضًا بعلامات التنصيص الذكية) تُطبق بغض النظر عن موضع كتابتك لعلامات التنصيص أي ضمن علامة التبويب النص أو المرئي ضمن المحرر.
</p>

<p>
	تستطيع تفادي هذه المشكلة في علامة تبويب النص للمحرر من خلال إحاطة التنصيص بالوسم <code>&lt;code&gt;</code> أو <code>&lt;tt&gt;</code> أو <code>&lt;pre&gt;</code>. يوجد حلول أخرى وهي باستبدال علامات التنصيص بترميز المحارف الموافق لها مثل استخدام:
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_8108_26" style=""><span class="tag">&lt;code&gt;&lt;p</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">&amp;</span><span class="pln"> #34;</span><span class="atn">red</span><span class="pln">&amp; #34;</span><span class="tag">&gt;&lt;/code&gt;</span><span class="pln">    // أزل المسافة بين &amp; و #‏</span></pre>

<p>
	بدلًا من استخدام
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_8108_28" style=""><span class="tag">&lt;p</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"red"</span><span class="tag">&gt;</span></pre>

<p>
	في الإصدارات الأقدم من ووردبريس إن حررت صفحة مرة أخرى بعد نشرها فإن محرر المنشور النصي سوف يستبدل جميع التراميز بمقابلاتها، فعلى سبيل المثال إن استخدمت &amp;#34 لعلامات التنصيص سوف تُصبح " وبالتالي إن حفظت الصفحة مرة أخرى فإن ميزة التصحيح التلقائي لعلامة التنصيص سوف تؤثر عليها.
</p>

<h2>
	إضافات مفيدة
</h2>

<p>
	إن كنت تستخدم باستمرار شيفرة برمجية ضمن منشورات عليك استخدام إضافة أو أداة <a href="https://academy.hsoub.com/programming/php/%D8%AA%D9%85%D9%87%D9%8A%D8%AF-%D8%A5%D9%84%D9%89-%D9%84%D8%BA%D8%A9-php-r235/" rel="">PHP</a> لجعل العملية أسهل، وإن كنت تستخدم الكثير من الشيفرات البرمجية ضمن منشوراتك فابحث عن خدمة تستضيف الشيفرات لتضيفها ضمن موقعك مثل code pen وغيره.
</p>

<p>
	انظر الإضافات التالية المفيدة في هذا السياق:
</p>

<ul>
	<li>
		<a href="https://chris-lamb.co.uk/projects/figurerender" rel="external nofollow">FigureRender</a> إضافة تكوين LaTeX
	</li>
	<li>
		<a href="http://www.coffee2code.com/archives/2005/03/29/plugin-preserve-code-formatting/" rel="external nofollow">إضافة Preserve Code Formatting لووردبريس من Coffee2code</a>
	</li>
	<li>
		<a href="http://blog.netnerds.net/quickcode/" rel="external nofollow">إضافة QuickCode لووردبريس</a> - إخفاء أو عرض الأجزاء المُنسقة من الشيفرة.
	</li>
	<li>
		<a href="https://wordpress.org/plugins/wpmathpub/" rel="external nofollow">عرض المعادلات الرياضية ضمن المنشورات</a>
	</li>
</ul>

<p>
	ترجمة -وبتصرف- للمقال <a href="https://wordpress.org/support/article/writing-code-in-your-posts/" rel="external nofollow">Writing Code in Your Posts</a> من موقع <a href="https://wordpress.org/" rel="external nofollow">ووردبريس</a>.
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
	<li>
		<a href="https://academy.hsoub.com/wordpress/" rel="">تعلم ووردبريس Wordpress</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/apps/web/wordpress/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D9%85%D9%83%D9%88%D9%86-%D8%A7%D9%84%D8%B4%D9%8A%D9%81%D8%B1%D8%A9-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D9%8A%D8%A9-%D9%81%D9%8A-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r580/" rel="">كيفية استخدام مكون الشيفرة البرمجية في ووردبريس</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/apps/web/wordpress/%D8%A7%D9%84%D8%B7%D8%B1%D9%8A%D9%82%D8%A9-%D8%A7%D9%84%D8%B5%D8%AD%D9%8A%D8%AD%D8%A9-%D9%84%D8%B9%D8%B1%D8%B6-%D8%B4%D9%8A%D9%81%D8%B1%D8%A7%D8%AA-%D8%A8%D8%B1%D9%85%D8%AC%D9%8A%D8%A9-%D8%B9%D9%84%D9%89-%D9%85%D8%AF%D9%88%D9%86%D8%A7%D8%AA-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r43/" rel="">الطريقة الصحيحة لعرض شيفرات برمجية على مدونات ووردبريس</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/apps/web/wordpress/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%A7%D9%84%D8%AA%D8%AF%D9%88%D9%8A%D9%86-%D9%88%D9%86%D8%B4%D8%B1-%D8%A7%D9%84%D9%85%D8%AF%D9%88%D9%86%D8%A7%D8%AA-%D9%88%D9%85%D8%A7-%D9%8A%D8%AA%D8%B9%D9%84%D9%82-%D8%A8%D9%87%D8%A7-%D8%B9%D8%A8%D8%B1-%D9%85%D9%86%D8%B5%D8%A9-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r416/" rel="">مدخل إلى التدوين ونشر المدونات وما يتعلق بها عبر منصة ووردبريس</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/php/wordpress/%D9%81%D9%87%D9%85-%D8%A7%D9%84%D8%AD%D9%84%D9%82%D8%A9-the-loop-%D9%88%D8%B7%D8%B1%D9%8A%D9%82%D8%A9-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-%D9%81%D9%8A-%D8%B9%D8%B1%D8%B6-%D8%A7%D9%84%D9%85%D9%86%D8%B4%D9%88%D8%B1%D8%A7%D8%AA-r1273/" rel="">فهم الحلقة The loop وطريقة ووردبريس في عرض المنشورات</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">1425</guid><pubDate>Mon, 03 Jan 2022 16:00:00 +0000</pubDate></item><item><title>&#x636;&#x628;&#x637; &#x627;&#x644;&#x62A;&#x62D;&#x62F;&#x64A;&#x62B;&#x627;&#x62A; &#x627;&#x644;&#x62A;&#x644;&#x642;&#x627;&#x626;&#x64A;&#x629; &#x644;&#x645;&#x648;&#x642;&#x639; &#x648;&#x648;&#x631;&#x62F;&#x628;&#x631;&#x64A;&#x633; &#x644;&#x62A;&#x639;&#x645;&#x644; &#x641;&#x64A; &#x627;&#x644;&#x62E;&#x644;&#x641;&#x64A;&#x629;</title><link>https://academy.hsoub.com/programming/php/wordpress/%D8%B6%D8%A8%D8%B7-%D8%A7%D9%84%D8%AA%D8%AD%D8%AF%D9%8A%D8%AB%D8%A7%D8%AA-%D8%A7%D9%84%D8%AA%D9%84%D9%82%D8%A7%D8%A6%D9%8A%D8%A9-%D9%84%D9%85%D9%88%D9%82%D8%B9-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-%D9%84%D8%AA%D8%B9%D9%85%D9%84-%D9%81%D9%8A-%D8%A7%D9%84%D8%AE%D9%84%D9%81%D9%8A%D8%A9-r1397/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2021_12/61b84fd08e67e_---------------------------.png.bb45916b146a2a08d418f003b7d76fba.png" /></p>

<p>
	تساعد التحديثات التلقائية مدير الموقع في <a href="https://academy.hsoub.com/apps/web/wordpress/%D8%A7%D9%84%D8%AF%D9%84%D9%8A%D9%84-%D8%A7%D9%84%D9%83%D8%A7%D9%85%D9%84-%D8%A5%D9%84%D9%89-%D8%A3%D9%85%D9%86-%D9%85%D9%88%D8%A7%D9%82%D8%B9-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r351/" rel="">الحفاظ على أمنه</a> خصوصًا أن قسمًا كبيرًا من هذه التحديثات يتضمن إصلاح مشاكل أو سد ثغرات أمنية في نواة ووردبريس أو الإضافات أو القوالب. سوف نتحدث عن الأنواع المختلفة للتحديثات التلقائية وكيفية ضبطها والتحكم بها.
</p>

<h2>
	أنواع التحديثات في ووردبريس
</h2>

<p>
	أضيفت التحديثات التلقائية في الخلفية في إصدار <a href="https://codex.wordpress.org/Version_3.7" rel="external nofollow">ووردبريس 3.7</a> لتوفير أمان أعلى وجعل عملية التحديث أسهل. التحديثات التلقائية مفعلة افتراضيًا في ووردبريس في معظم المواقع وفي حالات خاصة يمكن تحديث الإضافات والقوالب تلقائيًا أيضًا وبالنسبة لملفات الترجمة فهي تُحدث تلقائيًا.
</p>

<p>
	توجد أربعة أنواع من التحديثات التلقائية في الخلفية ضمن ووردبريس:
</p>

<ul>
<li>
		تحديثات النواة.
	</li>
	<li>
		تحديثات الإضافة.
	</li>
	<li>
		تحديثات القالب.
	</li>
	<li>
		تحديثات ملف الترجمة.
	</li>
</ul>
<p>
	تُقسم تحديثات النواة لثلاثة أقسام فرعية:
</p>

<ol>
<li>
		تحديثات تطويرات النواة Core development المعروفة باسم bleeding edge.
	</li>
	<li>
		تحديثات نواة فرعية Minor core مثل الصيانة والإصدارات الأمنية.
	</li>
	<li>
		تحديثات نواة رئيسية Major core مثل الإصدارات الرئيسية.
	</li>
</ol>
<p>
	كانت تحديثات النواة الفرعية وملفات الترجمة مفعلةً تلقائيًا قبل إصدار ووردبريس 5.6 وبدءًا من هذا الإصدار أصبحت جميع تحديثات النواة الفرعية والرئيسية لأي موقع جديد مُفعلةً تلقائيًا.
</p>

<h2>
	ضبط إعدادات تحديث ووردبريس
</h2>

<p>
	يمكن ضبط التحديثات التلقائية في ووردبريس باستخدام إحدى الطريقتين: تعريف ثوابت ضمن <a href="https://academy.hsoub.com/programming/php/wordpress/%D8%AA%D8%B9%D8%AF%D9%8A%D9%84-%D9%85%D9%84%D9%81-wp-configphp-%D9%84%D8%B6%D8%A8%D8%B7-%D8%A5%D8%B9%D8%AF%D8%A7%D8%AF%D8%A7%D8%AA-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r1252/" rel="">ملف wp-config.php</a> أو بإضافة مرشحات باستخدام إضافة.
</p>

<h3>
	ضبط التحديثات باستخدام ملف wp-config.php
</h3>

<p>
	يمكن تعطيل التحديثات التلقائية باستخدام ملف wp-config.php كما يمكن تعطيل تحديثات النواة أو ضبطها بناءًا على نوع التحديث.
</p>

<h4>
	ثابت لتعطيل جميع التحديثات
</h4>

<p>
	اتخذ مطورو النواة قرارًا بتفعيل التحديثات التلقائية للإصدارات الفرعية وملفات الترجمة افتراضيًا في ووردبريس، وهذا لضمان أن يبقى موقعك بأحدث إصدار وآمنًا من الاختراقات لذلك لا ينصح بتعطيل التحديثات أبدًا.
</p>

<p>
	يجب عليك إضافة السطر التالي لتعطيل جميع أنواع التحديثات التلقائية سواء المرتبطة بالنواة أو غيرها لملف wp-config.php:
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_9704_6" style="">
<span class="pln">define</span><span class="pun">(</span><span class="pln"> </span><span class="str">'AUTOMATIC_UPDATER_DISABLED'</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">true</span><span class="pln"> </span><span class="pun">);</span></pre>

<h4>
	ثابت لضبط تحديثات النواة
</h4>

<p>
	يمكنك استخدام الثابت <code>WP_AUTO_UPDATE_CORE</code> لتفعيل التحديثات التلقائية بغرض التطوير أو للإصدارات الرئيسية حيث يُسمح لك تعريف هذا الثابت بأحد ثلاثة طرق تُستخدم لتفعيل أو تعطيل جميع أنواع التحديثات المرتبطة بالنواة أو تفعيل التحديثات الفرعية لها فقط.
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_9704_8" style="">
<span class="pln">define</span><span class="pun">(</span><span class="pln"> </span><span class="str">'WP_AUTO_UPDATE_CORE'</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">true</span><span class="pln"> </span><span class="pun">);</span></pre>

<p>
	يُمكن تعريف الثابت السابق بثلاثة طرق مُختلفة ينتج عن كل منها سلوك مختلف هي:
</p>

<ul>
<li>
		تعني القيمة true تفعيل التحديثات الرئيسية والفرعية والمرتبطة بالتطوير للنواة.
	</li>
	<li>
		تعني القيمة false تعطيل التحديثات الرئيسية والفرعية والمرتبطة بالتطوير للنواة.
	</li>
	<li>
		تعني القيمة minor تفعيل التحديثات الفرعية للنواة وتعطيل التحديثات الرئيسية والمرتبطة بالتطوير.
	</li>
</ul>
<blockquote class="ipsQuote" data-ipsquote="">
	<div class="ipsQuote_citation">
		اقتباس
	</div>

	<p>
		<strong>ملاحظة</strong>: فقط المواقع التي تعمل على نسخة تطويرية من ووردبريس سوف تتلقى التحديثات المرتبطة بالتطوير حيث تكون القيمة الافتراضية للثابت <code>WP_AUTO_UPDATE_CORE</code> لهذه المواقع هي true بينما للمواقع الأخرى تكون minor.
	</p>
</blockquote>

<p>
	إن القيمة الافتراضية للثابت <code>WP_AUTO_UPDATE_CORE</code> لتثبيت ووردبريس بدءًا من الإصدار 5.6 هي true.
</p>

<p>
	<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" frameborder="0" height="480" src="https://www.youtube.com/embed/9m3OKkoP7Xw" style="vertical-align:middle" title="YouTube video player" width="400"></iframe>
</p>

<h3>
	ضبط التحديثات باستخدام المرشحات
</h3>

<p>
	يسمح استخدام المرشحات ضبط التحديثات التلقائية بدقة، وأفضل مكان لوضع هذه المرشحات هو ضمن مجلد الإضافات الواجب استخدامها Must-use plugins (تُعرف أيضًا بالاسم mu-plugins وهي إضافات تثبت في مجلد خاص داخل المجلد content وتفعّل تلقائيًا في كل المواقع).
</p>

<p>
	لا تستخدم <code>add_filter()‎</code> مباشرةً ضمن ملف wp-config.php لأن ووردبريس لم ينتهي من تحميل ملفاته إذ يمكن أن يتعارض مع تطبيقات أخرى مثل WP-CLI.
</p>

<h4>
	تعطيل كل التحديثات
</h4>

<p>
	تستطيع أيضًا باستخدام المرشح التالي تعطيل جميع التحديثات التلقائية.
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_9704_10" style="">
<span class="pln">add_filter</span><span class="pun">(</span><span class="pln"> </span><span class="str">'automatic_updater_disabled'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'__return_true'</span><span class="pln"> </span><span class="pun">);</span></pre>

<h4>
	تحديث نواة ووردبريس
</h4>

<p>
	استخدم المرشح التالي لتفعيل تحديثات النواة فقط.
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_9704_12" style="">
<span class="pln">add_filter</span><span class="pun">(</span><span class="pln"> </span><span class="str">'auto_update_core'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'__return_true'</span><span class="pln"> </span><span class="pun">);</span></pre>

<p>
	ربما تريد بدلًا من تعطيل أو تفعيل جميع أنواع تحديثات النواة اختيار ما تريد تفعيله أو تعطيله منها. ولتحقيق ذلك تستطيع استخدام المرشحات التالية:
</p>

<ul>
<li>
		<code>allow_dev_auto_core_updates</code>.
	</li>
	<li>
		<code>allow_minor_auto_core_updates</code>.
	</li>
	<li>
		<code>allow_major_auto_core_updates</code>.
	</li>
</ul>
<p>
	توجد دالتان مبنيتان ضمن ووردبريس تسمحان لك بتفعيل أو تعطيل أنواع محددة من تحديثات النواة باستخدام بضع سطور برمجية. هاتان الدالتنا هما الدالة <a href="https://developer.wordpress.org/reference/functions/__return_true" rel="external nofollow">‎</a>__<a href="https://developer.wordpress.org/reference/functions/__return_true" rel="external nofollow"><strong>return_true</strong></a><strong> والدالة <a href="https://developer.wordpress.org/reference/functions/__return_false" rel="external nofollow">‎</a></strong>__<a href="https://developer.wordpress.org/reference/functions/__return_false" rel="external nofollow">return</a>_<a href="https://developer.wordpress.org/reference/functions/__return_false" rel="external nofollow">false</a>. إليك بعض الأمثلة لكيفية استخدام المرشحات.
</p>

<p>
	لتفعيل التحديثات كل نوع على حدا (لتعطيلها استخدم false بدلًا من true).
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_9704_14" style="">
<span class="pln">add_filter</span><span class="pun">(</span><span class="pln"> </span><span class="str">'allow_dev_auto_core_updates'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'__return_true'</span><span class="pln"> </span><span class="pun">);</span><span class="pln">           </span><span class="com">// Enable development updates</span><span class="pln">
add_filter</span><span class="pun">(</span><span class="pln"> </span><span class="str">'allow_minor_auto_core_updates'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'__return_true'</span><span class="pln"> </span><span class="pun">);</span><span class="pln">         </span><span class="com">// Enable minor updates</span><span class="pln">
add_filter</span><span class="pun">(</span><span class="pln"> </span><span class="str">'allow_major_auto_core_updates'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'__return_true'</span><span class="pln"> </span><span class="pun">);</span><span class="pln">         </span><span class="com">// Enable major updates</span></pre>

<p>
	لتفعيل التحديثات التلقائية للمطورين حتى عند وجود مجلد <abbr title="Version Control Systems | أنظمة التحكم بالنُّسخ">VCS</abbr> توجد ملفات (‎.get و ‎.hg و ‎.svn وغيرها) في مسار ووردبريس أو أي مسار أب استخدم له التالي:
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_9704_16" style="">
<span class="pln">add_filter</span><span class="pun">(</span><span class="pln"> </span><span class="str">'automatic_updates_is_vcs_checkout'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'__return_false'</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="pun">);</span></pre>

<h4>
	تحديث إضافات وقوالب ووردبريس
</h4>

<p>
	يمكن أن تُنفَذ التحديثات التلقائية للإضافات والقوالب في حالات خاصة حُددت باستجابة WordPress.org <abbr title="Application Programming Interface | واجهة برمجية"><a href="https://academy.hsoub.com/programming/general/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%A7%D9%84%D9%88%D8%A7%D8%AC%D9%87%D8%A7%D8%AA-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D9%8A%D8%A9-api-r1314/" rel="">API</a></abbr> الذي يتحكم به الفريق الأمني لووردبريس ويستعمله من أجل <a href="https://academy.hsoub.com/files/20-%D8%AF%D9%84%D9%8A%D9%84-%D8%A7%D9%84%D8%A3%D9%85%D8%A7%D9%86-%D8%A7%D9%84%D8%B1%D9%82%D9%85%D9%8A/" rel="">سد الثغرات الأمنية</a>. ولتفعيل أو تعطيل التحديثات في جميع الحالات تستطيع استخدام المُرشح <code>auto_update_$type</code> حيث يجب تحديد النوع ‎$type بتبديله إلى كلمة plugin للإضافات أو theme للقوالب.
</p>

<p>
	التحديث التلقائي لجميع الإضافات:
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_9704_18" style="">
<span class="pln">add_filter</span><span class="pun">(</span><span class="pln"> </span><span class="str">'auto_update_plugin'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'__return_true'</span><span class="pln"> </span><span class="pun">);</span></pre>

<p>
	التحديث التلقائي لجميع القوالب:
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_9704_20" style="">
<span class="pln">add_filter</span><span class="pun">(</span><span class="pln"> </span><span class="str">'auto_update_theme'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'__return_true'</span><span class="pln"> </span><span class="pun">);</span></pre>

<p>
	تستطيع استخدام <code>‎__return_false</code> بدلًا من <code>‎__return_true</code> لتعطيل التحديثات التلقائية للإضافات والقوالب وحتى تعطيل التحديثات المرسلة من الفريق الأمني لووردبريس.
</p>

<p>
	يسمح لك المُرشح <code>auto_update_$type</code> بالتحكم بدقة بالتحديثات حيث تستطيع تمرير ما تريد تحديثه للمرشح باستخدام الاسم. وإذا أردت تفعيل التحديثات التلقائية لإضافات معينة عندها تستطيع استخدام شيفرة مشابهة للشيفرة البرمجية التالية:
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_9704_22" style="">
<span class="kwd">function</span><span class="pln"> auto_update_specific_plugins </span><span class="pun">(</span><span class="pln"> $update</span><span class="pun">,</span><span class="pln"> $item </span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    </span><span class="com">// Array of plugin slugs to always auto-update</span><span class="pln">
    $plugins </span><span class="pun">=</span><span class="pln"> array </span><span class="pun">(</span><span class="pln">
        </span><span class="str">'akismet'</span><span class="pun">,</span><span class="pln">
        </span><span class="str">'buddypress'</span><span class="pun">,</span><span class="pln">
    </span><span class="pun">);</span><span class="pln">
    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln"> in_array</span><span class="pun">(</span><span class="pln"> $item</span><span class="pun">-&gt;</span><span class="pln">slug</span><span class="pun">,</span><span class="pln"> $plugins </span><span class="pun">)</span><span class="pln"> </span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
         </span><span class="com">// Always update plugins in this array</span><span class="pln">
        </span><span class="kwd">return</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln"> </span><span class="kwd">else</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        </span><span class="com">// Else, use the normal <abbr title="Application Programming Interface | واجهة برمجية">API</abbr> response to decide whether to update or not</span><span class="pln">
        </span><span class="kwd">return</span><span class="pln"> $update</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
add_filter</span><span class="pun">(</span><span class="pln"> </span><span class="str">'auto_update_plugin'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'auto_update_specific_plugins'</span><span class="pun">,</span><span class="pln"> </span><span class="lit">10</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2</span><span class="pln"> </span><span class="pun">);</span></pre>

<h4>
	تحديث ملفات الترجمة في ووردبريس
</h4>

<p>
	إن تحديثات ملفات الترجمة مفعلة افتراضيًا في ووردبريس لذلك لتعطيل تحديثات هذه الملفات استخدم السطر التالي:
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_9704_24" style="">
<span class="pln">add_filter</span><span class="pun">(</span><span class="pln"> </span><span class="str">'auto_update_translation'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'__return_false'</span><span class="pln"> </span><span class="pun">);</span></pre>

<h4>
	تعطيل تحديثات رسائل البريد الإلكتروني
</h4>

<p>
	يمكن تعطيل تنبيهات عملية التحديث <a href="https://academy.hsoub.com/marketing/email-marketing/%D8%A7%D9%84%D8%AF%D9%84%D9%8A%D9%84-%D8%A7%D9%84%D8%B4%D8%A7%D9%85%D9%84-%D9%84%D9%84%D8%B1%D8%B3%D8%A7%D8%A6%D9%84-%D8%A7%D9%84%D9%85%D8%B1%D8%AA%D8%A8%D8%B7%D8%A9-%D8%A8%D8%A7%D9%84%D8%A3%D8%AD%D8%AF%D8%A7%D8%AB-%D8%B1%D8%B3%D8%A7%D8%A6%D9%84-%D8%A7%D9%84%D8%AA%D9%86%D8%A8%D9%8A%D9%87-r235/" rel="">عبر البريد الإلكتروني</a> عبر المرشح التالي:
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_9704_27" style="">
<span class="com">// Disable update emails</span><span class="pln">
add_filter</span><span class="pun">(</span><span class="pln"> </span><span class="str">'auto_core_update_send_email'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'__return_false'</span><span class="pln"> </span><span class="pun">);</span></pre>

<p>
	يُمكن استخدام هذا المُرشح للتلاعب بتحديثات البريد الإلكتروني حسب المعاملات التالية:
</p>

<ul>
<li>
		<code>‎$send</code>: هل تريد إرسال تنبيهات عن حالة عملية التحديث؟ true نعم أو false لا.
	</li>
	<li>
		<code>‎$type</code>: البريد المرسل لحالة عملية التحديث هل هو success (نجاح عملية التحديث) أو fail (فشل عملية التحديث) أو critical (حدث أمر حرج في عملية التحديث).
	</li>
	<li>
		<code>‎$core_update</code>: نوع عملية التحديث التي جرى تنفيذها (أو محاولة تنفيذها).
	</li>
	<li>
		<code>‎$result</code>: نتيجة عملية التحديث <code>core_update</code> ويمكن أن تكون WP_Error.
	</li>
</ul>
<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_9704_30" style="">
<span class="com">/* @param bool   $send     Whether to send the email. Default true.
@param string $type        The type of email to send. Can be one of 'success', 'fail', 'critical'.
@param object $core_update The update offer that was attempted.
@param mixed  $result      The result for the core update. Can be WP_Error.
*/</span><span class="pln">
apply_filters</span><span class="pun">(</span><span class="pln"> </span><span class="str">'auto_core_update_send_email'</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">,</span><span class="pln"> $type</span><span class="pun">,</span><span class="pln"> $core_update</span><span class="pun">,</span><span class="pln"> $result </span><span class="pun">);</span></pre>

<p>
	ترجمة -وبتصرف- للمقال <a href="https://wordpress.org/support/article/configuring-automatic-background-updates/" rel="external nofollow">Configuring Automatic Background Updates</a> من موقع <a href="https://wordpress.org/" rel="external nofollow">ووردبريس</a>.
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
<li>
		<a href="https://academy.hsoub.com/apps/web/wordpress/%D8%B7%D8%B1%D9%82-%D8%AA%D8%AB%D8%A8%D9%8A%D8%AA-%D8%A5%D8%B6%D8%A7%D9%81%D8%A7%D8%AA-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r499/" rel="">طرق تثبيت إضافات ووردبريس</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/apps/web/wordpress/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%AA%D8%AD%D8%AF%D9%8A%D8%AB-%D9%86%D8%B8%D8%A7%D9%85-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-updating-wordpress-r390/" rel="">كيفية تحديث نظام ووردبريس Updating WordPress</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/apps/web/wordpress/wordpress-multisite/%D8%A5%D8%AF%D8%A7%D8%B1%D8%A9-%D8%A7%D9%84%D9%85%D9%8F%D8%B3%D8%AA%D8%AE%D8%AF%D9%85%D9%8A%D9%86-%D9%88%D8%A7%D9%84%D9%82%D9%88%D8%A7%D9%84%D8%A8-%D9%88%D8%A7%D9%84%D8%A5%D8%B6%D8%A7%D9%81%D8%A7%D8%AA-%D8%B9%D9%84%D9%89-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-%D9%85%D9%8F%D8%AA%D8%B9%D8%AF%D9%91%D8%AF-%D8%A7%D9%84%D9%85%D9%88%D8%A7%D9%82%D8%B9-r181/" rel="">إدارة المُستخدمين والقوالب والإضافات على ووردبريس مُتعدّد المواقع</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/php/wordpress/%D8%A5%D8%AF%D8%A7%D8%B1%D8%A9-%D8%A7%D9%84%D8%A5%D8%B6%D8%A7%D9%81%D8%A7%D8%AA-%D9%81%D9%8A-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r1224/" rel="">إدارة الإضافات في ووردبريس</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/apps/web/wordpress/%D8%AF%D9%84%D9%8A%D9%84-%D9%85%D9%81%D8%B5%D9%84-%D9%84%D8%AA%D8%B1%D9%82%D9%8A%D8%A9-%D8%A5%D8%B5%D8%AF%D8%A7%D8%B1-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-%D8%A5%D9%84%D9%89-%D8%A3%D8%AD%D8%AF%D8%AB-%D8%A5%D8%B5%D8%AF%D8%A7%D8%B1-r421/" rel="">دليل مفصل لترقية إصدار ووردبريس إلى أحدث إصدار</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/php/wordpress/%D8%AA%D8%B7%D9%88%D9%8A%D8%B1-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-%D9%84%D9%84%D9%85%D8%A8%D8%AA%D8%AF%D8%A6%D9%8A%D9%86-%D8%A8%D9%86%D8%A7%D8%A1-%D8%A7%D9%84%D9%82%D9%88%D8%A7%D9%84%D8%A8-themes-r593/" rel="">تطوير ووردبريس للمبتدئين: بناء القوالب Themes</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">1397</guid><pubDate>Sun, 05 Dec 2021 16:00:00 +0000</pubDate></item><item><title>&#x625;&#x646;&#x634;&#x627;&#x621; &#x642;&#x627;&#x639;&#x62F;&#x629; &#x628;&#x64A;&#x627;&#x646;&#x627;&#x62A; &#x644;&#x648;&#x648;&#x631;&#x62F;&#x628;&#x631;&#x64A;&#x633;</title><link>https://academy.hsoub.com/programming/php/wordpress/%D8%A5%D9%86%D8%B4%D8%A7%D8%A1-%D9%82%D8%A7%D8%B9%D8%AF%D8%A9-%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA-%D9%84%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r1360/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2021_10/617b929b05635_-------------Plesk-----cPanel----.png.ff27f2b13b4076ee71a686aa3d47c6f3.png" /></p>

<p>
	اتبع واحدةً من التعليمات الموجودة في الأسفل لإنشاء <a href="https://academy.hsoub.com/programming/php/wordpress/%D9%86%D8%B8%D8%B1%D8%A9-%D8%B4%D8%A7%D9%85%D9%84%D8%A9-%D8%B9%D9%84%D9%89-%D9%82%D8%A7%D8%B9%D8%AF%D8%A9-%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r69/" rel="">قاعدة بيانات لووردبريس</a>، وحساب مستخدم إن كنت تثبت ووردبريس على خادم الويب الخاص بك.
</p>

<h2>
	إنشاء قاعدة بيانات باستخدام لوحة التحكم Plesk
</h2>

<p>
	إذا كنت تريد تثبيت ووردبريس يدويًا وكانت الاستضافة خاصتك توفر لوحة التحكم <a href="http://www.plesk.com/" rel="external nofollow">Plesk</a>، فعليك اتباع التعليمات التالية لإنشاء <a href="https://academy.hsoub.com/devops/servers/databases/mysql/%D9%81%D9%8A%D8%AF%D9%8A%D9%88-%D8%AA%D8%AB%D8%A8%D9%8A%D8%AA-%D9%88%D8%A5%D8%B9%D8%AF%D8%A7%D8%AF-%D9%82%D8%A7%D8%B9%D8%AF%D8%A9-%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA-mysql-r399/" rel="">قاعدة البيانات</a>:
</p>

<ol>
<li>
		سجل دخول للوحة التحكم Plesk.
	</li>
	<li>
		اضغط على Databases في منطقة Custom Website من صفحة Websites &amp; Domains.
	</li>
</ol>
<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="81174" href="https://academy.hsoub.com/uploads/monthly_2021_10/001_plesk_db.png.3d16730828634e5bb68ed508d31ade17.png" rel=""><img alt="001_plesk_db.png" class="ipsImage ipsImage_thumbnailed" data-fileid="81174" data-unique="lg4a5d6mu" src="https://academy.hsoub.com/uploads/monthly_2021_10/001_plesk_db.png.3d16730828634e5bb68ed508d31ade17.png" style="width: 600px; height: auto;"></a>
</p>

<ol start="3">
<li>
		اضغط على Add New Database وغير اسم قاعدة البيانات إن أردت، ثم أنشئ مستخدمًا لقاعدة البيانات من خلال ملء بياناته والضغط على ok لتكون أنجزت المهمة.
	</li>
</ol>
<h2>
	إنشاء قاعدة بيانات باستخدام لوحة التحكم cPanel
</h2>

<p>
	تستطيع اتباع التعليمات البسيطة التالية لإنشاء اسم مستخدم وقاعدة بيانات لووردبريس إذا كانت الاستضافة خاصتك توفر لوحة التحكم <a href="https://codex.wordpress.org/Glossary#cPanel" rel="external nofollow">cPanel</a>. يمكنك إيجاد مجموعة أوسع من التعليمات حول كيفية استخدام cPanel لإنشاء قاعدة البيانات والمستخدم في المقال <a href="https://codex.wordpress.org/Using_cPanel" rel="external nofollow">استخدام cPanel</a>، كما يلي:
</p>

<ol>
<li>
		سجل دخول للوحة التحكم <a href="https://codex.wordpress.org/Glossary#cPanel" rel="external nofollow">cPanel</a>.
	</li>
	<li>
		اضغط على أيقونة MySQL Database Wizard ضمن قسم Databases.
	</li>
	<li>
		أنشئ قاعدة بيانات في الخطوة الأولى بإدخال اسم <a href="https://academy.hsoub.com/apps/web/wordpress/%D8%B9%D8%B4%D8%B1-%D9%86%D8%B5%D8%A7%D8%A6%D8%AD-%D9%84%D9%84%D8%AD%D9%81%D8%A7%D8%B8-%D8%B9%D9%84%D9%89-%D9%82%D8%A7%D8%B9%D8%AF%D8%A9-%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA-%D9%85%D9%86%D8%B8%D9%85%D8%A9-%D9%88%D9%86%D8%B8%D9%8A%D9%81%D8%A9-%D9%84%D9%85%D9%88%D9%82%D8%B9-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-%D8%A7%D9%84%D8%AE%D8%A7%D8%B5-%D8%A8%D9%83-r169/" rel="">قاعدة البيانات</a>، ثم اضغط على Next Step.
	</li>
	<li>
		أنشئ في الخطوة الثانية مستخدمًا لقاعدة البيانات بإدخال اسم المستخدم وكلمة مروره، وتأكد من قوة كلمة المرور، ثم اضغط على Create User.
	</li>
	<li>
		اضف المستخدم لقاعدة البيانات في الخطوة الثالثة واضغط على خيار All Privileges، ثم اضغط على Next Step.
	</li>
	<li>
		املأ الحقول hostname وusername وdatabasename وpassword في الخطوة الرابعة بالاعتماد على القيم من الخطوات السابقة، وانتبه أن hostname يكون عادةً localhost.
	</li>
</ol>
<h2>
	إنشاء قاعدة بيانات باستخدام phpMyAdmin
</h2>

<p>
	تستطيع اتباع التعليمات التالية لإنشاء قاعدة بيانات واسم مستخدم لها إن كانت استضافتك توفر <a href="https://codex.wordpress.org/Glossary#phpMyAdmin" rel="external nofollow">phpMyAdmin</a>. إن كنت تعمل على حاسوبك فتستطيع تثبيت phpMyAdmin على معظم توزيعات لينكس.
</p>

<blockquote class="ipsQuote" data-ipsquote="">
	<div class="ipsQuote_citation">
		اقتباس
	</div>

	<p>
		ملاحظة: هذه التعليمات مكتوبة لإصدار phpMyAdmin 4.4 لذا يمكن أن تظهر واجهة المستخدم مختلفةً قليلًا في الإصدارات اللاحقة.
	</p>
</blockquote>

<p>
	أنشئ أولًا قاعدة بيانات في حال عدم وجود واحدة مرتبطة بووردبريس ضمن القائمة الموجودة على يسار الشاشة.
</p>

<p>
	اختر اسم قاعدة بيانات ووردبريس الخاصة بك: يمكنك استخدام الاسم <code>wordpress</code> أو <code>blog</code>، لكن معظم الاستضافات (خصوصًا المشتركة) تفرض عليك بادئةً لاسم قاعدة البيانات وبعدها إشارة '_'. حتى إن عملت على حاسوبك ننصحك بالتحقق من متطلبات الاستضافة لكي لا تواجهك أي مشاكل عند نقل قاعدة البيانات من حاسوبك إليها. ادخل اسم قاعدة البيانات الذي تريد في حقل Create Database، ثم اختر المجموعة collation المناسبة للغة الموقع، وفي معظم الحالات من الأفضل اختيار أحد مجموعات "utf8_" وإذا كنت لا تستطيع إيجاد اللغة المناسبة لك، فاختر "utf8mb4generalci". (المرجع: <a href="https://make.wordpress.org/core/2015/04/02/the-utf8mb4-upgrade/" rel="external nofollow">1</a>).
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="81175" href="https://academy.hsoub.com/uploads/monthly_2021_10/002_phpMyAdmin_create_database_4.4.jpg.b42279a5c5db2dd729c50771909e5495.jpg" rel=""><img alt="002_phpMyAdmin_create_database_4.4.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="81175" data-unique="k3aroncly" src="https://academy.hsoub.com/uploads/monthly_2021_10/002_phpMyAdmin_create_database_4.4.jpg.b42279a5c5db2dd729c50771909e5495.jpg" style="width: 600px; height: auto;"></a>
</p>

<p>
	اضغط ثانيًا على أيقونة phpMyAdmin في الزاوية العلوية اليسرى للعودة للصفحة الرئيسية، ثم اضغط على Users. يجب عليك إنشاء مستخدم في حال عدم وجود مستخدم مرتبط بقاعدة البيانات السابقة.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="81176" href="https://academy.hsoub.com/uploads/monthly_2021_10/003_phpMyAdmin_users.jpg.c67dbd32662eff4004585e3e5db4a5d3.jpg" rel=""><img alt="003_phpMyAdmin_users.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="81176" data-unique="pygo2fq4q" src="https://academy.hsoub.com/uploads/monthly_2021_10/003_phpMyAdmin_users.jpg.c67dbd32662eff4004585e3e5db4a5d3.jpg" style="width: 600px; height: auto;"></a>
</p>

<ol>
<li>
		اضغط على Add user.
	</li>
	<li>
		اختر اسم المستخدم (<code>wordpress</code> اسم جيد) وادخله ضمن الحقل User name، وتأكد من أنك اخترت Use text field من القائمة المنسدلة.
	</li>
	<li>
		اختر كلمة مرور قوية (يجب أن تتضمن تشكيلةً من الأحرف اللاتينية بالحجم الكبير والصغير والأرقام والرموز)، ثم أدخلها ضمن حقل Paswword. وتأكد من أنك اخترت Use text field من القائمة المنسدلة، ثم أعد إدخال كلمة المرور في حقل Re-type.
	</li>
	<li>
		احفظ اسم المستخدم وكلمة المرور الذين اخترتهما في مكان آمن.
	</li>
	<li>
		ابقِ على جميع الخيارات أسفل Global privileges كما هي بحالتها الافتراضية.
	</li>
	<li>
		اضغط على Go.
	</li>
	<li>
		عد إلى صفحة Users واضغط على أيقونة Edit privileges للمستخدم الذي أنشأته.
	</li>
	<li>
		اختر قاعدة البيانات التي أنشأتها ضمن قسم Database-specific privileges من القائمة المنسدلة أسفل Add privileges to the following database، ثم اضغط على Go.
	</li>
	<li>
		سوف يُعاد تحديث معلومات الصفحة مع الصلاحيات التابعة لقاعدة البيانات. اضغط على Check All لاختيار جميع الصلاحيات، ثم اضغط على Go.
	</li>
	<li>
		انتبه إلى اسم المُضيف الظاهر في أعلى الصفحة بعد كلمة Server طبعًا بعد انتهاء الصفحة من التحميل بعد الخطوة السابقة. عادةً يكون localhost.
	</li>
</ol>
<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="81177" href="https://academy.hsoub.com/uploads/monthly_2021_10/004_phpMyAdmin_databases.jpg.dd0ddb88b149bae820ba5cd5357836a9.jpg" rel=""><img alt="004_phpMyAdmin_databases.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="81177" data-unique="yxaz76bey" src="https://academy.hsoub.com/uploads/monthly_2021_10/004_phpMyAdmin_databases.jpg.dd0ddb88b149bae820ba5cd5357836a9.jpg" style="width: 600px; height: auto;"></a>
</p>

<h2>
	إنشاء قاعدة بيانات باستخدام MySQL Client
</h2>

<p>
	تستطيع إنشاء قواعد بيانات ومستخدمين <a href="https://academy.hsoub.com/devops/servers/databases/mysql/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%A5%D8%B9%D8%AF%D8%A7%D8%AF-%D9%82%D8%A7%D8%B9%D8%AF%D8%A9-%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA-%D8%A8%D8%B9%D9%8A%D8%AF%D8%A9-%D9%84%D8%AA%D8%AD%D8%B3%D9%8A%D9%86-%D8%A3%D8%AF%D8%A7%D8%A1-%D9%85%D9%88%D9%82%D8%B9-%D9%8A%D8%B3%D8%AA%D8%AE%D8%AF%D9%90%D9%85-mysql-r9/" rel="">MySQL</a> بسرعة وسهولة من خلال تشغيل mysql من shell، يظهر في الأسفل سياق العملية، حيث ما هو بعد إشارة $ عبارةً عن الأوامر البرمجية.
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_1795_11" style="">
<span class="pln">$ mysql </span><span class="pun">-</span><span class="pln">u adminusername </span><span class="pun">-</span><span class="pln">p
</span><span class="typ">Enter</span><span class="pln"> password</span><span class="pun">:</span><span class="pln">
</span><span class="typ">Welcome</span><span class="pln"> to the </span><span class="typ">MySQL</span><span class="pln"> monitor</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Commands</span><span class="pln"> </span><span class="kwd">end</span><span class="pln"> </span><span class="kwd">with</span><span class="pln"> </span><span class="pun">;</span><span class="pln"> </span><span class="kwd">or</span><span class="pln"> \g</span><span class="pun">.</span><span class="pln">
</span><span class="typ">Your</span><span class="pln"> </span><span class="typ">MySQL</span><span class="pln"> connection id </span><span class="kwd">is</span><span class="pln"> </span><span class="lit">5340</span><span class="pln"> to server version</span><span class="pun">:</span><span class="pln"> </span><span class="lit">3.23</span><span class="pun">.</span><span class="lit">54</span><span class="pln">

</span><span class="typ">Type</span><span class="pln"> </span><span class="str">'help;'</span><span class="pln"> </span><span class="kwd">or</span><span class="pln"> </span><span class="str">'\h'</span><span class="pln"> </span><span class="kwd">for</span><span class="pln"> help</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Type</span><span class="pln"> </span><span class="str">'\c'</span><span class="pln"> to clear the buffer</span><span class="pun">.</span><span class="pln">

mysql</span><span class="pun">&gt;</span><span class="pln"> CREATE DATABASE databasename</span><span class="pun">;</span><span class="pln">
</span><span class="typ">Query</span><span class="pln"> OK</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> row affected </span><span class="pun">(</span><span class="lit">0.00</span><span class="pln"> sec</span><span class="pun">)</span><span class="pln">

mysql</span><span class="pun">&gt;</span><span class="pln"> GRANT ALL PRIVILEGES ON databasename</span><span class="pun">.*</span><span class="pln"> TO </span><span class="str">"wordpressusername"</span><span class="pun">@</span><span class="str">"hostname"</span><span class="pln">
</span><span class="pun">-&gt;</span><span class="pln"> IDENTIFIED BY </span><span class="str">"password"</span><span class="pun">;</span><span class="pln">
</span><span class="typ">Query</span><span class="pln"> OK</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> rows affected </span><span class="pun">(</span><span class="lit">0.00</span><span class="pln"> sec</span><span class="pun">)</span><span class="pln">

mysql</span><span class="pun">&gt;</span><span class="pln"> FLUSH PRIVILEGES</span><span class="pun">;</span><span class="pln">
</span><span class="typ">Query</span><span class="pln"> OK</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> rows affected </span><span class="pun">(</span><span class="lit">0.01</span><span class="pln"> sec</span><span class="pun">)</span><span class="pln">

mysql</span><span class="pun">&gt;</span><span class="pln"> EXIT
</span><span class="typ">Bye</span><span class="pln">
$</span></pre>

<p>
	يُظهر المثال السابق ما يلي:
</p>

<ul>
<li>
		أن مُستخدم الجذر root هو أيضًا adminusername. اختيار حساب مختلف عن الجذر ليكون مدير mysql أفضل وأكثر أمانًا.
	</li>
	<li>
		أنت تُقلص احتمالات تعرضك للاختراق في كل مرة تُخفض استخدامك فيها لحساب الجذر، حيث يعتمد الاسم الذي تستخدمه على الاسم الذي أسندته بصفة مدير لقاعدة البيانات باستخدام mysqladmin.
	</li>
	<li>
		إن wordpress أو blog هي قيم جيدة لتكون مكان databasename بصفة اسم لقاعدة البيانات.
	</li>
	<li>
		يمكنك استخدام wordpress بصفته اسمًا للمستخدم wordpressusername، لكن عليك أن تعلم أنه سيكون علني للجميع طالما أنك استخدمته هنا.
	</li>
	<li>
		تكون قيمة hostname هي عادةً localhost. إن كنت لا تعلم ما هي القيمة، فعليك التحقق من مدير النظام لديك إن لم تكن أنت هو المدير؛ أما إن كنت المدير، فعليك استخدام حساب غير حساب الجذر لإدارة قاعدة البيانات.
	</li>
	<li>
		يجب أن تكون قيمة كلمة المرور password صعبة التكهن وتتضمن تشكيلةً من الأحرف اللاتينية والأرقام والرموز. عليك استخدام أول حرف من كل كلمة واردة في جملة طويلة لتفادي استخدام كلمة شائعة في أحد القواميس.
	</li>
</ul>
<p>
	تجنب كتابة القيم السابقة في نفس النظام الذي يستخدمها لحماية بيانات أخرى وبنفس الوقت عليك تذكر قيم databasename وwordpressusername وhostname وpassword، لذلك استخدمهم مباشرةً في ملف wp-config.php حتى لا تضطر لحفظهم في مكان غير آمن.
</p>

<h2>
	إنشاء قاعدة بيانات باستخدام DirectAdmin
</h2>

<ol>
<li>
		إن كنت مستخدمًا متكررًا لحساب استضافة بموقع واحد، فتستطيع تسجيل الدخول ثم الضغط على MySQL Management، وإن كنت لا تستطيع العثور على الخيار السابق، فغالبًا يجب على الاستضافة تعديل حزمتك لتفعيل MySQL، ثم تابع الخطوة 3.
	</li>
	<li>
		إذا كان حسابك Reseller، فسوف يحتاج المدير للضغط على User Level، لكن أولًا عليه الدخول بصفة Reseller إذا كان النطاق المطلوب هو النطاق الرئيسي لحساب Reseller، أو التسجيل بصفة مستخدم إذا كان النطاق ليس الرئيسي. إذا كان النطاق رئيسيًا، فعند الدخول اضغط على User Level؛ أما إذا كان غير رئيسي فعند الدخول، فاضغط على MySQL Management.
	</li>
</ol>
<p style="margin-right: 40px;">
	إن كنت لا تستطيع العثور على الخيار السابق فعليك العودة لحساب Reseller أو المدير وتعديل MAnage user package، أو Manage Reseller package لتفعيل MySQL.
</p>

<ol start="3">
<li>
		اضغط ضمن MySQL Management على Create new database، حيث يطلب منك إضافة لاحقتين لقاعدة البيانات واسم مستخدم لها. ولتحقيق أعلى درجات الأمان، استخدم مجموعتين مختلفتين من الأحرف كل منها بطول 4-6 محارف، ثم استخدم زر توليد كلمة المرور لتوليد كلمة مرور قوية من 8 أحرف. اضغط على Create ليظهر لك في الصفحة التالية ملخص عن قاعدة البيانات واسم المستخدم وكلمة المرور واسم المضيف، وانسخ المعلومات السابقة مع إلصاقها في ملف wp-config.php.
	</li>
</ol>
<p>
	ترجمة -وبتصرف- للمقال <a href="https://wordpress.org/support/article/creating-database-for-wordpress/" rel="external nofollow">Creating Database for WordPress</a> من موقع <a href="https://wordpress.org/" rel="external nofollow">ووردبريس</a>.
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
<li>
		<a href="https://academy.hsoub.com/programming/php/wordpress/%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A7%D9%84%D8%B1%D9%88%D8%A7%D8%A8%D8%B7-%D8%A7%D9%84%D8%AF%D8%A7%D8%A6%D9%85%D8%A9-%D9%81%D9%8A-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r1343/" rel="">استخدام الروابط الدائمة في ووردبريس</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/php/wordpress/%D8%AA%D8%B7%D9%88%D9%8A%D8%B1-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-%D9%84%D9%84%D9%85%D8%A8%D8%AA%D8%AF%D8%A6%D9%8A%D9%86-%D8%A7%D9%84%D9%88%D8%AF%D8%AC%D8%AA-%D9%88%D8%A7%D9%84%D9%82%D9%88%D8%A7%D8%A6%D9%85-r598/" rel="">تطوير ووردبريس للمبتدئين: الودجت والقوائم</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/servers/databases/%D8%AA%D8%AD%D9%84%D9%8A%D9%84-%D9%86%D8%B8%D8%A7%D9%85-%D8%A7%D9%84%D9%85%D9%84%D9%81%D8%A7%D8%AA-%D9%84%D8%A5%D8%AF%D8%A7%D8%B1%D8%A9-%D8%A7%D9%84%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA-%D9%88%D8%AA%D8%AE%D8%B2%D9%8A%D9%86%D9%87%D8%A7-%D9%88%D8%A7%D8%AE%D8%AA%D9%84%D8%A7%D9%81%D9%87-%D8%B9%D9%86-%D9%86%D8%B8%D8%A7%D9%85-%D9%82%D8%A7%D8%B9%D8%AF%D8%A9-%D8%A7%D9%84%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA-r509/" rel="">تحليل نظام الملفات لإدارة البيانات وتخزينها واختلافه عن نظام قاعدة البيانات</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/servers/databases/%D9%86%D9%85%D8%B0%D8%AC%D8%A9-%D8%A7%D9%84%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA-%D9%88%D8%A3%D9%86%D9%88%D8%A7%D8%B9%D9%87%D8%A7-%D9%81%D9%8A-%D8%B9%D9%85%D9%84%D9%8A%D8%A9-%D8%AA%D8%B5%D9%85%D9%8A%D9%85-%D9%82%D9%88%D8%A7%D8%B9%D8%AF-%D8%A7%D9%84%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA-r521/" rel="">نمذجة البيانات وأنواعها في عملية تصميم قواعد البيانات</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">1360</guid><pubDate>Fri, 29 Oct 2021 15:02:00 +0000</pubDate></item></channel></rss>
