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

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

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

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

في ووردبريس نتوفر على دالة 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();
    }
}

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

الآن لدينا السايد بار ولدينا الدالة 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 );
}

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

اقرأ أيضا: إضافة هاشتاك تلقائيا للمواضيع المنشورة بواسطة Jetpack

الأن كل ما علينا فعله هو “فلترة” محتوى المقالة وإدراج السايد بار في وسطها باستخدام الدالة 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' );

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

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

اقرأ أيضا: عرض آخر المستخدمين المسجلين على ووردبريس

close

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

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

12 تعليق

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

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

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

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

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

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

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

اترك تعليقًا

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