recent
أخبار ساخنة

برمجة موقع ووردبريس بثلاث ملفات فقط وكيفية دمج ووردبريس ولارافيل Laravel

برمجة موقع ووردبريس بثلاث ملفات فقط وكيفية دمج ووردبريس ولارافيل Laravel
في هذا المقال سوف يتم برمجة وتطوير موقع ووردبريس بثلاث ملفات فقط، هذه الملفات هي index.php و style.css و functions.php، والهدف من إنشاء موقع بثلاث ملفات هو توضيح أن ووردبريس يمكن التلاعب من خلاله وإنشاء أي قالب بأشكال متعددة، وهذا يوضح مدى الإمكانيات المتاحة بواسطته للمطوريين.

 يعد ووردبريس تطوير كبير للغة البرمجة PHP ويمكن من خلاله استخدام اي دالة function خاصة به أو Method والتي تختلف عن الدالة بأنها موجودة في داخل اي كلاس Class من كلاسات ووردبريس المطورة والمطورة للغة PHP، كما يمكن أيضا استخدام الخطفات Hooks وهي أيضا دوال مخصصة للوحة التحكم الخاصة بووردبريس والربط بها لأي دالة أخرى.

ملاحظة

مرجع ووردبريس لكل تلك الأدوات موجود على الرابط التالي، مراجع الاكواد على موقع منظمة ووردبريس Developer Code References للاستفادة بها وتطويرها أيضا.

ويجب ان نعلم أنه لا يجب علينا الالتزام بقواعد ثابتة إذا كنا نعرف ما نقوم به تماما، عند برمجة وتطوير قالب ووردبريس theme أو برنامج مساعد plugin أو ما يطلق عليه عادة بالعربية إضافة ووردبريس، أما إذا كنت مبتدئ فعليك مشاهدة سلسلة الفيديوهات التي سجلتها حتى تعرف ما يجب أن تفعل أولا لتصبح محترف، هذه الفيديوهات على يوتيوب تزيد عن عشرين فيديو، واعتقد لا يقل الفيديو الواحد عن 5 دقائق ولا يزيد عن عشرين دقيقة تقريبا، ويمكنك الوصول لها من هذا الرابط لها على القناة.  

ولكي تعرف ما أقصد، فقد ذكرت في بداية السلسلة، أن منظمة ووردبريس قامت بعمل تنظيم للملفات وتقسيمها فيما يسمى التسلسل الهرمي لقالب ووردبريس WordPress Template Hierarchy وهي كما بالشكل التالي: 

التسلسل الهرمي لقالب ووردبريس WordPress Template Hierarchy



اهم هذه الملفات كما ذكرت بالسلسلة بالترتيب هم index.php وهو الملف الرئيسي للموقع، والذي يتم عرض كل ما تريد به من مقتطفات المنشورات أو المنتجات والدورات التعليمية وغيرها، ثم ملف style.css وفائدته للتشكيل العام للموقع، ثم الثلاث ملفات المعروفة header.php و footer.php و sidebar.php، وتستخدم لتقسيم الملفات الأساسية الرئيسية مثل index إلى الترويسة العلوية header والتذييل footer والشريط الجانبي sidebar، ثم يأتي ملف page.php لعرض الصفحات، وملف single.php لعرض المنشورات أوالمنتجات في حالة المتاجر الإلكترونية باستخدام ووكومرس، أو الدورات على منصات التعليم عن بعد باستخدام LearnPress المجاني أو LearnDash المدفوع وما إلى ذلك من أنواع المواقع الأخرى، يأتي بعد ذلك ملف category.php للتصنيفات و tag.php للوسوم، والذان يندرجان أسفل ملف archive.php، وهناك العديد من الملفات الأخرى المهمة. 

سبب تقسيم ملفات ووردبريس header و footer و sidebar و content

ملفات الترويسة header.php والتذييل footer.php والشريط الجانبي sidebar.php، وملف الرابع لقسم المحتوى في اي موقع غالبا يسمى content.php، يستخدمه الكثير من المطوريين، يتم استخدامهم لسبب مهم، وهو تسهيل عملية التغيير والفحص والعلاج والتصحيح debugging لحل أي مشاكل تظهر بالقالب، وكذلك تستخدم تلك الملفات لسهولة تطوير للقالب.  

فعلى سبيل المثال إن تم وضع الجزء العلوي من اي ملف HTML وهو العنصر head في كل ملف من ملفات المشروع على حدة، مثل ملف المنشورات single.php وملف الصفحات page.php وملف الرئيسية home أو index.php وملف الأرشيف archive.php وغيرها من الملفات الكثيرة جدا، واردت بعد ذلك فجأة، ان تضيف رابط لتغيير الخط المستخدم في الموقع، لخط جديد ربما يكون ظهر على الساحة وأعجبك، ففي هذه الحالة يجب عليك إنشاء عنصر tag جديد والذي يسمى link tag، وتقوم بإضافة دالة function داخله للربط مع مجلد الخط الجديد الذي سوف ستستخدمه.

وبالتالي فسوف يصبح لديك ملفات كثيرة يجب عليك تعديلها والإضافة للكود الجديد لها، أما إذا كان هناك ملف واحد مشترك للعنصر head في ملف مخصص واحد وهو طبعا ملف header.php، فلن يحدث أي خطأ وسيقل المجهود المبذول، وفي حالة وجود خطأ، فإن عملية العلاج والتصحيح debug ستكون سهلة جدا، نفس الشيء لقسم التذييل في آخر أي ملف وهي التي تحتوي على السكريبت مثل جافا سكريبت وغيرها، حيث يتم جعلها في ملف واحد وهو footer.php للتسهيل، وكذلك قسم الشريط الجانبي الثابت في كل صفحات ومنشورات الموقع، يتم جعله في ملف مخصص يسمى sidebar.php.

ملف content.php غالبا يكون به القسم الرئيسي للصفحة main، والذي يوجد به جمل البرمجة المشهورة while loop و if statment، ولكن هذا الملف غالبا يكون متغير من ملف لأخر، ويتم إنشاء هذا الملف ومشابهاته في مجلد يحتويهم، مع إضافة تسمية مخصصة جديدة حسب الملف المرتبط به، مثلا ملف page وملف single، يكون مضاف للمحتوى في حالة page جزء جديد مثل content-page.php وللربط مع ملف المنشورات single يكون content-single.php، وهكذا بالنسبة لباقي الملفات الأخرى، المجلد الذي يحتوي ملفات content في قوالب منظمة ووردبريس المشهورة التي أنشأها مطوري ووردبريس انفسهم، والمعروفة ب Twenty ثم اسم ورقم الإصدار الجديد، يسمى غالبا template-parts.


خواص مهمة جدا تضيفها منظمة ووردبريس لكل الملفات

هناك خواص كثيرة تضيفها منظمة ووردبريس للملفات الرئيسية تساعد جدا في تسهيل الحياة على المطوررين خاصة والمستخدمين عامة، احد هذه الخواص هي التي تهمنا لتقسيم الملفات لثلاث ملفات فقط وهي الدالة body_class، هذه الدالة function تعطينا كلاسات كثيرة جدا ولكن أهم ما يميزها أنه تعطينا كلاس home class في الصفحة الرئيسية المنتجة من الملف index.php والكلاس page class المنتج في ملف page.php وكلاسclass single المنتج في ملف single.php وكل ملف مهم يتم انتاج كلاس خاص به مثل اللأرشيف والتصنيفات والوسوم وغيرها الكثير. 

الناتج لتلك الكلاسات في الملفات الرئيسية ستراها في الأشكال التالية:

الصفحة الرئيسية الناتجة من index.php




المنشور الفردي من ملف single.php


الصفحة الفردية من ملف page.php


صفحة الارشيف من ملف archive.php



صفحة التصنيفات من ملف category.php

  

هذا هو ما سيساعدنا في انتاج ثلاث ملفات فقط واستخدامها لتطوير قالب ووردبريس، ويمكننا استغلال ذلك بعمل جملة if statment ويتم اختيار من خلالها أي من تلك الكلاسات لانتاج الجزء الخاص بمحتويات الجزء المهم من اي صفحة contents، هذه الجزئية تتم من خلال عمل ثلاث دوال في ملف functions.php كل من تلك الدوال مسؤول عن اظهار محتويات ملف index ومشابهاته archive و category و tag وغيرها وهي كثيرة او استخدام archive فقط لأنه كافي ويمثل كل الملفات من هذه النوعية.




/**
* IF statement to choose The right class
*/
<?php
/**
* index file function tlath_index()
*/
function tlath_index(){
    echo '<div class="show-index">';
    if(have_posts(  )){
        while(have_posts(  )){
            echo '<div class="prcent25 col-xxl-3">';
   
            the_post();
            echo '<div class="thumbnail-all">';
            the_post_thumbnail();
            echo '</div>';
            ?>  
              <h2 class="post_title">
                  <a href="<?php the_permalink(); ?>">
                    <?php the_title(  ); ?>
                </a>
            </h2>
   
    <div class="postedby">
        <a href="<?php permalink_link(  ); ?>"><span>الكاتب:<?php the_author_posts_link();?>  , </span></a>
        <a href="<?php the_permalink(); ?>"><span> النشر في :<?php the_date( get_option( 'date_format', 'F Y')); ?></span></a>
    </div>
    <!-- END post by class -->
   
   
    <div class="the_contents">
    <?php the_excerpt(); ?>    
    </div>
    </div><!-- class persent25 -->

    <?php
        }
    }
    echo '</div>';
   
    ?>



<?php

}

?>






والدالة الثانية لاظهار محتويات ملف page




<?php

/**
* single file function tlath_single()
*/


function tlath_single(){
    echo '<div class="show-single">';
    if(have_posts(  )){
   
    while(have_posts(  )){
            echo '<div class="prcent100 col-xxl-12">';
   
            the_post();
            echo '<div class="thumbnail-all">';
            the_post_thumbnail();
            echo '</div>';
            ?>  
              <h2 class="post_title">
                  <a href="<?php the_permalink(); ?>">
                    <?php the_title(  ); ?>
                </a>
            </h2>
   
<div class="postedby">
<a href="<?php permalink_link(  ); ?>"><span>الكاتب:<?php the_author_posts_link();?>  , </span></a>
<a href="<?php the_permalink(); ?>"><span> النشر في :<?php the_date( get_option( 'date_format', 'F Y')); ?></span></a>
<a><span>  التصنيفات :<?php the_category(); ?> </span></a>
<a><span><?php the_tags(); ?> </span></a>
</div>  

   
   
    <div class="the_contents">
            <?php the_content( ); ?>
    </div>
</div><!-- class persent100 -->

   
    <?php
        }
    }
    echo '</div>';
   


    }
?>



والدالة الثالثة لاظهار محتويات ملف single



<?php

/**
* page file function tlath_page()
*/
    function tlath_page(){
        echo '<div class="show-single">';
        if(have_posts(  )){
       
        while(have_posts(  )){
                echo '<div class="prcent100 col-xxl-12">';
       
                the_post();
                echo '<div class="thumbnail-all">';
                the_post_thumbnail();
                echo '</div>';
                ?>  
                  <h2 class="post_title">
                      <a href="<?php the_permalink(); ?>">
                        <?php the_title(  ); ?>
                    </a>
                </h2>
       

       
        <div class="the_contents">
                <?php the_content( ); ?>
           
        </div>
        </div><!-- class persent100 -->
   
       
        <?php
            }
        }
        echo '</div>';
       
   
   
        }

?>



ثم الاختيار منها حسب جملتنا if statment التي نكتبها في ملف index.php كالتالي:


/**
* IF statement to choose The right class
*/

$classes = get_body_class();
if (in_array('home',$classes) ||in_array('archive',$classes)) {
    tlath_index();
 
} else if(in_array('page',$classes) ){
    tlath_page();
 
} else{
    tlath_single();

}


يصبح لدينا الآن تحكم كامل في اختيار ما نضيفه للصفحات عن اختيار الكلاس المطلوب داخل تاج body.

ما يتم بالتفصيل والشرح ستجده في فيديو بداية المقال لسهولة فهم ما يتك بالضبط. 

كيفية دمج ووردبريس مع لارافيل

اصبح الكثيرين يتنافسون على إثبات ما هو الأفضل من الطرق لإنشاء المواقع بكل أنواعها ويتنافس في ذلك نوعين من المبرمجين النوع الأول يستخدم ووردبريس والنوع الآخر يستخدم المكتبات أو الإطارات Frameworks بقيادة الإطار المشهور Laravel.

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

وبالنسبة لمطوري ووردبريس يمكنهم تعلم بعض الأشياء الجديدة والغير صعبة فربما تفيد في إنتاج الكثير من المواقع ذات المميزات العجيبة، الناتجة من إندماج القوتين، وبالتوفيق بإذن الله .


سلسلة فيديوهات لدمج ووردبريس مع لارافيل والتعامل معهما سويا

google-playkhamsatmostaqltradent