كيفية إدراج ودجات داخل محتوى المقالات في ووردبريس

كيفية إدراج ودجات داخل محتوى المقالات في الوودربريس
كيفية إدراج ودجات داخل محتوى المقالات في الوودربريس

سألني صديق من فترة عن طرييقة إدراج محتوى داخل المقالات مع إمكانية تغييره و التحكم به كليا، أول شيء خطر في ذهني هو إنشاء حقل من نوع textarea في مخصص ووردبريس وجعل محتواه يظهر داخل التدوينة، لكن الفكرة لم تقنعني لأنه في هذه الحالة فقط سنتمكن من إضافة نصوص أو أكواد فقط وليس كل ما نرغب به … الفكرة التي أعجبتني بالفعل هي إنشاء sidebar و إدراجه داخل التدوينة وهكذا سنتمكن من وضع أي شيء داخلها، وعندما أقول أي شيء يعني أي شيء يخطر في بالك يمكن إدارجه وسط محتوى التدوينة 🙂

إنشاء سايدبار جديد

للوصول إلى النتيجة المرغوبة أول شيء سنقوم به إذا هو إنشاء sidebar جديد وذلك بإستعمال الدالة register_sidebar() التي يمكن أن نمرر لها array يحتوى على سبعة عناصر، أهم هذه العناصر هما ال name و ال id.

$args = array( 'name' => __( 'Content sidebar', 'text_domain' ), 'id' => 'content-sidebar', 'description' => '', 'class' => 'content-sidebar', 'before_widget' => '<div id="%1$s" class="widget %2$s">', 'after_widget' => '</div>', 'before_title' => '<h3 class="widgettitle">', 'after_title' => '</h3>' ); register_sidebar( $args );
Code language: PHP (php)

جلب السايدبار

في ووردبريس نتوفر على دالة dynamic_sidebar التي تستعمل لطباعة السايدبار، لكن لا توجد أي دالة من نوع get ، أظنك فهمت لماذا نريد دالة من نوع get، نعم نحتاجها لغرض استعمالها في الفلتر the_content.

اقرأ أيضا: عرض محتوى المقالات على شكل أعمدة

الطريقة التي خطرت في بالي هي الآتية، إذا كانت لديك فكرة أخرى أعلمني بها إذا 🙂 وشكرا مسبقا.

if ( ! function_exists( 'get_dynamic_sidebar' ) ) { function get_dynamic_sidebar( $name ) { if ( ! is_active_sidebar( $name ) ) { return; } ob_start(); dynamic_sidebar( $name ); return ob_get_clean(); } }
Code language: PHP (php)

إداراج السايدبار وسط محتوى المقالات

الآن لدينا السايدبار ولدينا الدالة get_dynamic_sidebar() ، فقط بقي لنا إدراجه داخل محتوى المقالات، لأجل هذا سأقوم بإستعمال كود متداول بشكل كبير في الإنترنت وكنت قد استعملته من قبل في تدوينة وضع الإعلانات داخل محتوى المقالة، لكن مع بعض التغييرات الطفيفة، حيث أن الكود الأصلي يمكن بواسطته إضافة محتوى بعد فقرة معينة من المقالة لكن أنا قمت بالتعديل عليه لكي يقوم بإضافة السايدبار الخاص بنا في منتصف المقالة بالظبط.

function insert_sidebar( $insertion, $content ) { $closing_p = '</p>'; $paragraphs = explode( $closing_p, $content ); $paragraph_count = count($paragraphs ); $paragraph_id = floor( $paragraph_count / 2 ); foreach ($paragraphs as $index => $paragraph) { if ( trim( $paragraph ) ) { $paragraphs[$index] .= $closing_p; } if ( $paragraph_id == $index + 1 ) { $paragraphs[$index] .= $insertion; } } return implode( '', $paragraphs ); }
Code language: PHP (php)

أول شيء تقوم به الدالة هو تفكيك المحتوى بواسطة دالة ال PHP pexplode() ثم بعدها الحصول على عدد الفقرات الموجودة في المحتوى بواسطة دالة ال PHP count() و بالتالي قسمته على 2 وذلك للحصول على نصف عدد الفقرات، ما تبقى أظن أنه مفهموم بما فيه الكفاية.

اقرأ أيضا: كيفية تمكين مدير روابط ووردبريس

الأن كل ما علينا فعله هو “فلترة” محتوى المقالة وإدراج السايدبار في وسطها باستخدام الدالة insert_sidebar()

function insert_sidebar_in_the_content( $content ) { if ( ! is_singular( 'post' ) ) { return $content; } $sidebar = get_dynamic_sidebar( 'content-sidebar' ); $content = insert_sidebar( $sidebar, $content ); return $content; } add_filter( 'the_content', 'insert_sidebar_in_the_content' );
Code language: PHP (php)

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

إذا أعجبك الموضوع ووجدته مفيد، لا تنسى مشاركته مع أصدقائك لكي يستفيد عدد أكبر من الناس

اقرأ أيضا: كيفية إخفاء بعض الإضافات من لوحة تحكم ووردبريس

close

قم بالتسجيل على قائمتي البريدية لكي تكون من الأوائل في الحصول على تدوينات وشروحات حصرية

أنا لا أرسل أبدا البريد المزعج! اقرأ سياسة الخصوصية لمزيد من المعلومات.

12 تعليق

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

  2. شكرا لك على ابداعاتك اخي سعيد فعلا مقالاتك وشروحاتك تفيد الزائر وتخليه يعود غصبا عنه ?

    عشان يتعلم منك ومن ابداعاتك استمر الله يحفظك

  3. جزاك الله خير يا باشمهندس سعيد و نسأل الله عز وجل ان يجعل هذا في ميزان حسناتك

    الموضوع اعجبني لكن لدي بعض سؤال :

    اين اضع كود انشاء الsidebar و بقية الاكواد في الوردبريس؟

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

اترك تعليقًا

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *