كيفية إنشاء وتخصيص مقتطفات ووردبريس
نشرت: 2020-04-16المقتطف هو نص اختياري مرتبط بالمنشور. في معظم الأحيان ، يتم استخدامه كملخص آخر. إذا كنت تستخدم المحرر الجديد ، فسترى أن هناك خيارًا في الشريط الجانبي يسمى Excerpt :

إذا لم تظهر ، فقد تضطر إلى تمكين الخيار من إعدادات Gutenberg. انقر فوق رمز علامة القطع في الزاوية اليمنى العليا من المحرر ثم انقر فوق الخيارات :

ثم ابحث عن مقتطفات وقم بتمكينها:

اعتمادًا على كيفية تكوين السمة الخاصة بك ، سيظهر المقتطف عند النظر إلى منشوراتك في المدونة ، ونتائج البحث ، وما إلى ذلك. على سبيل المثال ، في مدونتنا ، يمكنك أن ترى كيف يتم تقديم جميع منشوراتنا مع المقتطفات ذات الصلة:

الآن ، هل كتابة هذا المقتطف إلزامي دائمًا؟ إذا لم نفعل ذلك ، فماذا يفعل WordPress؟ هل تظهر شيئًا أو لا شيء على الإطلاق؟ حسنًا ، سنقوم بالإجابة على هذه الأسئلة وسنلقي نظرة فاحصة على الخيارات التي يوفرها WordPress لنا المقتطفات المخصصة.
كيف تعمل مقتطفات ووردبريس
يحتوي WordPress على وظيفتين للحصول على مقتطفات المنشور: get_the_excerpt و the_excerpt . تم تعريف كلاهما في wp-includes/post-template.php وإذا ألقيت نظرة على كود المصدر الخاص بهما ، فستكتشف أن كل ما the_excerpt هو echo نتيجة get_the_excerpt (بعد تصفيته باستخدام the_excerpt ). لذلك ، في الأساس ، يمكننا القول تقريبًا أن الشيء الوحيد الذي تحتاج إلى فهمه لمعرفة كيفية عمل المقتطفات في WordPress هو دالة get_the_excerpt .
كما ترى ، get_the_excerpt بسيط للغاية:
function get_the_excerpt( $post = null ) { // ... $post = get_post( $post ); if ( empty( $post ) ) { return ''; } // ... return apply_filters( 'get_the_excerpt', $post->post_excerpt, $post ); } بشكل أساسي ، يقوم بتحميل منشور (إذا لم تقم بتعيين واحد ، فإنه يستخدم المنشور المتاح في حلقة WordPress) ويعيد سمة post_excerpt الخاصة به. لذا يبدو أنه لا يوجد مقتطف يعني أن WordPress لن يعرض أي شيء في النهاية ، أليس كذلك؟
ليس بهذه السرعة يا صديقي.
لاحظ أن هذه الوظيفة لا تُرجع فعليًا قيمة post_excerpt مباشرةً. بدلاً من ذلك ، يتم تصفيته باستخدام مرشح جديد: get_the_excerpt. لذلك إذا كانت هناك أي إجراءات مرتبطة بهذا الفلتر ، فمن المحتمل أن تتغير النتيجة النهائية ولن تكون سلسلة فارغة بعد الآن ...
وبالفعل ، هذا ما يحدث هنا! إذا لم نكتب مقتطفًا لمنشور معين ، فهذا ما سنراه في الواجهة الأمامية:

ستكون الكلمات الأولى في منشورنا هي المقتطفات التي يولدها WordPress.
الدالة wp_trim_excerpt
إذا أجرينا بحثًا سريعًا في شفرة مصدر WordPress ، فسنرى أنه ، افتراضيًا ، لا يوجد سوى إجراء واحد مرتبط get_the_excerpt . على وجه التحديد ، في wp-includes/default-filters.php نرى أن دالة تسمى wp_trim_excerpt .
وفقًا لمستندات WordPress ، wp_trim_excerpt مسؤول عن إنشاء مقتطف بحد أقصى 55 كلمة وإلحاق علامة حذف إذا لزم الأمر. وإليك المفتاح: تعتبر الوظيفة أن إنشاء مقتطف "ضروري" إذا لم يكن هناك مقتطف بالفعل (وهو ، بشكل عام ، يعادل القول بأن المستخدم لم يكتب المقتطف في المحرر). يمكنك أن ترى هذا في الكود المصدري للوظيفة:
function wp_trim_excerpt( $text = '', $post = null ) { $raw_excerpt = $text; if ( '' == $text ) { $post = get_post( $post ); $text = get_the_content( '', false, $post ); // [...] » Generates the excerpt using the post content } return apply_filters( 'wp_trim_excerpt', $text, $raw_excerpt ); } يرى؟ إذا لم يكن هناك مقتطف ( $text هو السلسلة الفارغة) ، فاسترجع محتوى المنشور الحالي ( get_the_content من $post ) واستخدمه لإنشاء مقتطف.

من هذه النقطة فصاعدًا ، يمكنك الاستمرار في البحث واكتشاف كيف يقوم WordPress بالفعل بإنشاء الكود المصدري. ومع ذلك ، أعتقد أنك حصلت على الفكرة بالفعل ، لذلك دعونا نلقي نظرة على الوثائق مرة أخرى ، حيث إنها تلقي بعض الضوء على هذا الموضوع:
تُرجع 55 كلمة كحد أقصى مع ملحق علامة القطع إذا لزم الأمر. يمكن تعديل الحد الأقصى البالغ 55 كلمة عن طريق الإضافات / السمات باستخدام مرشح
وثائقexcerpt_length. يمكن تعديل سلسلة "[...]" بواسطة الإضافات / السمات باستخدام مرشحexcerpt_more.wp_trim_excerpt
أنت تعرف الآن كل شيء يجب معرفته لتخصيص المقتطفات التلقائية التي ينشئها WordPress لمشاركاتك بشكل كامل.
كيفية تخصيص المقتطفات التلقائية
دعنا نلقي نظرة على بعض الأمثلة حول كيفية استخدام المرشحات التي رأيناها خلال منشور اليوم لتخصيص مقتطفات تلقائية. بالمناسبة ، تذكر أنه من أجل إضافة أي من هذه التعديلات إلى موقع الويب الخاص بك ، ربما تحتاج إلى إنشاء مكون إضافي.
أ) كيفية تغيير عدد الكلمات التي أريدها في مقتطفاتي
هذا هو واحد من أبسط. لقد رأينا بالفعل أن لدينا تحت تصرفنا مرشح excerpt_length لاختيار عدد الكلمات التي نريدها في مقتطفاتنا ، لذا فلنستخدمها:
function nelio_100_word_excerpts( $length ) { if ( is_admin() ) { return $length; } return 100; } add_filter( 'excerpt_length', 'nelio_100_word_excerpts', 99 ); لاحظ أن أول شيء نفعله في وظيفتنا هو التأكد من أننا في المقدمة. إذا كنا على لوحة القيادة ( is_admin ) ، فمن الأفضل ألا نفعل أي شيء بمقتطفاتنا. بمجرد أن نتأكد من أننا في "بيئة آمنة" ، نحتاج فقط إلى إعادة الرقم السحري. في حالتي: 100 كلمة.
ب) كيفية تغيير النص الذي يظهر بعد الاستخراج التلقائي
هذا أيضًا سهل للغاية لأننا رأينا بالفعل أن هناك مرشحًا له:
function nelio_clickable_read_more( $more ) { if ( is_admin() ) { return $more; } return sprintf( '<a href="%s">Tell me more!</a>', esc_url( get_the_permalink() ) ); } add_filter( 'excerpt_more', 'nelio_clickable_read_more', 99 );في هذه الحالة ، كل ما نفعله هو إرجاع النص "أخبرني المزيد!" بعد الملخص وجعله رابطًا حتى يتمكن المستخدمون من النقر عليه.
ج) كيفية قصر طول المقتطف على عدد معين من الأحرف
تحتوي وظيفة wp_trim_words على مرشح بنفس الاسم يمكننا استخدامه لتعديل المقتطف النهائي الذي يستخدمه WordPress. فلنستخدمه:
function nelio_140_char_excerpts( $excerpt, $raw_excerpt ) { if ( is_admin() ) { return $excerpt; } if ( '' !== $raw_excerpt ) { return $excerpt; } return mb_substr( $excerpt, 0, 140 ); } add_filter( 'wp_trim_excerpt', 'nelio_140_char_excerpts', 99, 2 ); ينطبق عامل التصفية wp_trim_words على المقتطفات التلقائية والمقتطفات المعرفة من قبل المستخدم. في المثال الخاص بي ، أنا مهتم فقط بتعديل المقتطفات التي تم إنشاؤها تلقائيًا ، لذلك أحتاج إلى إضافة شرط جديد. إذا كنت تتذكر ، wp_trim_words يولد مقتطفًا تلقائيًا فقط إذا كان المقتطف الأصلي فارغًا ، لذلك كل ما عليك فعله هو التحقق من ذلك للحصول على النتيجة المرجوة.
من ناحية أخرى ، لاحظ أنني استخدمت mb_substr بدلاً من وظيفة substr الفرعية الكلاسيكية. إذا كنت تتساءل عن السبب ، فإن السبب بسيط: إذا كنت تكتب في مدونتك بلغة أخرى غير الإنجليزية ، فمن المحتمل أن تستخدم أحرفًا متعددة البايت ، ويمكن أن يحدث خطأ في اختصار السلاسل متعددة البايت باستخدام substr . اقرأ وثائق PHP لمزيد من المعلومات حول هذا الموضوع.
د) كيفية إنشاء مقتطفات من الفقرة الأولى من المحتوى
وأخيرًا ، مثال على كيفية إنشاء مقتطف باستخدام الفقرة الأولى بالضبط من منشورك. لا يوجد تفسير هذه المرة ، لذا انتبه لما أفعله:
function nelio_first_paragraph_excerpts( $excerpt, $raw_excerpt ) { if ( is_admin() ) { return $excerpt; } if ( '' !== $raw_excerpt ) { return $excerpt; } $content = apply_filters( 'the_content', get_the_content() ); return substr( $content, 0, strpos( $content, '</p>' ) + 4 ); } add_filter( 'wp_trim_excerpt', 'nelio_first_paragraph_excerpts', 99, 2 );بالمختصر…
تكمن القوة العظيمة لـ WordPress في قابليته للتوسع. لقد رأينا اليوم بالتفصيل كيف ينشئ WordPress مقتطفات منشورة وجميع المرشحات والوظائف التي يقدمها لتخصيص النتيجة النهائية لاحتياجاتك.
آمل أن تكون قد أحببت منشور اليوم. شاركها مع أصدقائك حتى يعرف المزيد من الناس مزايا WordPress!
صورة مميزة من Aaron Burden على Unsplash.
