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