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

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



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

سألني صديق من فترة عن طرييقة إدراج محتوى داخل المقالات مع إمكانية تغييره و التحكم به كليا، أول شيء خطر في ذهني هو إنشاء حقل من نوع 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.

اقرأ أيضا: روابط nofollow في تصنيفات أو وسوم معينة

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

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

سعيد نورتي

اترك تعليقاً

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