WordPress Alıntıları Nasıl Oluşturulur ve Özelleştirilir

Yayınlanan: 2020-04-16

Alıntı, bir gönderiyle ilişkili isteğe bağlı bir metindir. Çoğu zaman, yazı özeti olarak kullanılır. Yeni düzenleyiciyi kullanıyorsanız, kenar çubuğunda Alıntı adlı bir seçenek olduğunu göreceksiniz:

Gutenberg'den alıntılar
Gutenberg'den alıntılar.

Görünmezse, seçeneği Gutenberg'in ayarlarından etkinleştirmeniz gerekebilir. Editörün sağ üst köşesindeki üç nokta simgesine ve ardından Seçenekler'e tıklayın:

Gutenberg ayarları
Gutenberg ayarları.

Ardından Alıntıyı arayın ve etkinleştirin:

Bir gönderiden alıntıyı düzenlemek için panel nasıl etkinleştirilir.
Bir gönderiden alıntıyı düzenlemek için panel nasıl etkinleştirilir.

Temanızın nasıl yapılandırıldığına bağlı olarak, blogdaki gönderilerinize, bir aramanın sonuçlarına vb. bakarken alıntı görünecektir. Örneğin, blogumuzda tüm gönderilerimizin ilgili alıntılarla nasıl sunulduğunu görebilirsiniz:

Nelio'nun blogunda alıntılarıyla birlikte gönderiler.
Nelio'nun blogunda alıntılarıyla birlikte gönderiler.

Şimdi, bu alıntıyı yazmak her zaman zorunlu mu? Biz yapmazsak, WordPress ne yapar? Bir şey gösteriyor mu ya da hiçbir şey göstermiyor mu? Pekala, bu soruları cevaplayacağız ve WordPress'in alıntıları özelleştirmemize sağladığı seçeneklere daha yakından bakacağız.

WordPress Alıntıları Nasıl Çalışır?

WordPress'in bir gönderiden alıntı yapmak için iki işlevi vardır: get_the_excerpt ve the_excerpt . Her ikisi de wp-includes/post-template.php içinde tanımlanmıştır ve kaynak kodlarına bir göz atarsanız, the_excerpt yaptığı her şeyin get_the_excerpt sonucunun echo olduğunu keşfedersiniz ( get_the_excerpt ile filtreledikten the_excerpt ). Yani, esasen, WordPress'te alıntıların nasıl çalıştığını bilmek için anlamanız gereken tek şeyin get_the_excerpt işlevi olduğunu kabaca söyleyebiliriz.

Gördüğünüz gibi get_the_excerpt son derece basittir:

 function get_the_excerpt( $post = null ) { // ... $post = get_post( $post ); if ( empty( $post ) ) { return ''; } // ... return apply_filters( 'get_the_excerpt', $post->post_excerpt, $post ); }

Temel olarak, bir gönderi yükler (bir gönderi ayarlamazsanız, WordPress döngüsünde bulunan gönderiyi kullanır) ve post_excerpt niteliğini döndürür. Görünüşe göre hiçbir alıntı, WordPress'in sonunda hiçbir şey göstermeyeceği anlamına gelmiyor, değil mi?

O kadar hızlı değil dostum.

Bu işlevin aslında doğrudan post_excerpt değerini döndürmediğini unutmayın. Bunun yerine yeni bir filtre kullanarak filtreler: get_the_excerpt. Dolayısıyla, bu filtreyle ilişkili herhangi bir eylem varsa, nihai sonuç potansiyel olarak değişebilir ve artık boş dize olmayabilir…

Ve gerçekten, burada olan da bu! Belirli bir gönderi için bir alıntı yazmazsak, ön uçta göreceğimiz şey şudur:

Otomatik alıntı.
WordPress tarafından oluşturulan otomatik alıntı.

yazımızın ilk kelimeleri WordPress'in oluşturduğu alıntı olacaktır.

wp_trim_excerpt İşlevi

WordPress kaynak kodunda hızlı bir arama yaparsak, varsayılan olarak get_the_excerpt filtresiyle ilişkili yalnızca tek bir eylem olduğunu görürüz. Özellikle, wp-includes/default-filters.php wp_trim_excerpt içinde wp_trim_excerpt adlı bir fonksiyonun bağlı olduğunu görüyoruz.

WordPress belgelerine göre, wp_trim_excerpt , maksimum 55 kelime ve gerekirse bir üç nokta içeren bir alıntı oluşturmaktan sorumludur. Ve işte anahtar: fonksiyon, halihazırda bir alıntı yoksa bir alıntı oluşturmanın “gerekli” olduğunu düşünür (bu, genel olarak, kullanıcının alıntıyı editörde yazmadığını söylemekle eşdeğerdir). Bunu işlevin kaynak kodunda görebilirsiniz:

 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 ); }

Görmek? Herhangi bir alıntı yoksa ( $text boş dizedir), o zaman mevcut gönderinin içeriğini alın ( get_the_content from $post ) ve bir alıntı oluşturmak için kullanın.

Bu noktadan sonra, kazmaya devam edebilir ve WordPress'in kaynak kodunu gerçekte nasıl oluşturduğunu keşfedebilirsiniz. Ancak, bu fikri zaten anladığınızı düşünüyorum, bu konuya biraz ışık tutacağı için belgelere tekrar bir göz atalım:

Gerekirse üç nokta eklenmiş en fazla 55 kelime döndürür. 55 kelime sınırı, excerpt_length filtresi kullanılarak eklentiler/temalar tarafından değiştirilebilir. ' […]' dizesi, excerpt_more filtresi kullanılarak eklentiler/temalar tarafından değiştirilebilir.

wp_trim_excerpt Belgeleri

Artık WordPress'in gönderileriniz için oluşturduğu otomatik alıntıları tamamen özelleştirmek için bilmeniz gereken her şeyi biliyorsunuz.

Otomatik Alıntıları Özelleştirme

Otomatik alıntıları özelleştirmek için bugünün gönderisinde gördüğümüz filtreleri nasıl kullanabileceğimize dair bazı örneklere bakalım. Bu arada, bu değişikliklerden herhangi birini web sitenize eklemek için muhtemelen bir eklenti oluşturmanız gerektiğini unutmayın.

a) Alıntılarımda istediğim kelime sayısını nasıl değiştirebilirim?

Bu en basitlerinden biridir. Alıntılarımızda kaç kelime istediğimizi seçmek için excerpt_length filtresine sahip olduğumuzu zaten gördük, bu yüzden kullanalım:

 function nelio_100_word_excerpts( $length ) { if ( is_admin() ) { return $length; } return 100; } add_filter( 'excerpt_length', 'nelio_100_word_excerpts', 99 );

İşlevimizde yaptığımız ilk şeyin ön uçta olduğumuzdan emin olmak olduğuna dikkat edin. Dashboard'daysak ( is_admin ), alıntılarımızla hiçbir şey yapmasak iyi olur. "Güvenli bir ortamda" olduğumuzdan emin olduktan sonra sihirli numaramızı geri göndermemiz yeterli. Benim durumumda: 100 kelime.

b) Otomatik bir alıntıdan sonra görünen metin nasıl değiştirilir?

Bu da son derece kolay çünkü bunun için bir filtre olduğunu zaten gördük:

 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 );

Bu durumda tek yaptığımız “Bana daha fazlasını anlat!” metnini döndürmek. özetten sonra ve kullanıcıların üzerine tıklayabilmesi için bir bağlantı yapın.

c) Bir alıntının uzunluğu belirli sayıda karakterle nasıl sınırlandırılır?

wp_trim_words işlevi, WordPress'in kullandığı son alıntıyı değiştirmek için kullanabileceğimiz aynı ada sahip bir filtreye sahiptir. Öyleyse kullanalım:

 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 filtresi hem otomatik hem de kullanıcı tanımlı alıntılar için geçerlidir. Örneğimde, yalnızca otomatik olarak oluşturulmuş alıntıları değiştirmekle ilgileniyorum, bu yüzden yeni bir koşul eklemem gerekiyor. Hatırlarsanız, wp_trim_words yalnızca orijinal alıntı boşsa otomatik bir alıntı oluşturur, bu nedenle istenen sonucu elde etmek için tek yapmanız gereken bunu kontrol etmektir.

Öte yandan, klasik substr işlevi yerine mb_substr kullandığıma dikkat edin. Nedenini merak ediyorsanız, nedeni basit: Blogunuzda İngilizce dışında bir dilde yazıyorsanız, büyük olasılıkla çok baytlı karakterler kullanacaksınız ve çok baytlı dizeleri substr ile kısaltmak yanlış gidebilir. Bununla ilgili daha fazla bilgi için PHP belgelerini okuyun.

d) İçeriğin ilk paragrafı ile alıntılar nasıl oluşturulur

Ve son olarak, gönderinizin tam olarak ilk paragrafını kullanarak bir alıntının nasıl oluşturulacağına dair bir örnek. Bu sefer açıklama yok, o yüzden yaptığım şeye dikkat et:

 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 );

Kısacası…

WordPress'in büyük gücü genişletilebilirliğinde yatmaktadır. Bugün, WordPress'in nihai sonucu ihtiyaçlarınıza göre özelleştirmek için alıntıları ve sunduğu tüm filtreleri ve işlevleri nasıl oluşturduğunu ayrıntılı olarak gördük.

Umarım bugünkü yazımı beğenmişsinizdir. Daha fazla insanın WordPress'in avantajlarını bilmesi için arkadaşlarınızla paylaşın!

Aaron Burden tarafından Unsplash'ta öne çıkan görsel.