20 Eylül 2019    /  Emre Yılmaz Yazar

  Okuma süresi: 11 dakika
 Yorum Yok
 155 Görüntüleme

WordPress için İşe Yarar Functions.php Kodları

Paylaş:

Günümüzde birçok web site WordPress kullanıyor. WordPress tabanlı bu web sitelerinin fonksiyonlarının çoğu da eklentiler ile sağlanıyor. Birkaç satırlık kodlar ile kazandırılacak fonksiyonların eklentiler ile sağlanması; hem web site hızına, hem de sunucu işlemcisinin iş yüküne etki ediyor. Üstelik eklenti sayısı arttıkça bu etki şaşırtıcı düzeyde artıyor. Hız düşünce de; bu durum, arama motorları tarafından pek hoş karşılanmıyor, dolayısıyla sıralamalarda geri gitmeye başlıyorsanız. Üstelik bununla da sınırlı değil. Hiçbir internet kullanıcısı, özellikle de “hız” kavramının bu denli ön planda olduğu günümüzde, yavaş açılan web sitelerinde gezinmekten hoşlanmıyor. Bu da demek oluyor ki; web site hızınızın düşmesi, birçok ziyaretçinizin bir daha uğramayacağı anlamına gelebilir. Tüm bunları göz önünde bulundurarak; aşağıda sıraladığımız ve internet araması yoluyla daha fazlasını da bulabileceğiniz functions.php kodları ile hem geliştirme ve düzeltmeleri uygulayabilir, hem de site hızınızı koruyabilirsiniz. Bu yazımızda, eklentiler ile site hızınızı düşürmeden, sadece temanızın functions.php dosyasını kullanarak halledebileceğiniz işlevler ve kodlarından bahsedeceğiz.

Functions.php nedir? Ne işe yarar?

Kısaca functions.php dosyası, WordPress temasının içerdiği tüm fonksiyonların yazıldığı dosyadır. Bu dosyaya, diğer sayfa ve şablonlar tarafından kullanılacak filtreler, özellikler, fonksiyonlar tanımlanır. Böylece, eklenti ihtiyacını neredeyse sıfıra indirerek web sitesi üzerinde geliştirmeler ve düzeltmeler yapılabilir.


İşe Yarar Functions.php Kodları

Functions.php kodları birçok konuda işinize yarayacak, eklenti kullanmadan web sitenizde başarılı değişiklikler yapmanızı sağlayacak kodlardır. Aşağıda yer alan kodları, functions.php dosyası içinde <?php ile ?> etiketleri arasına eklemeniz gerekmektedir.


Versiyon bilgisini kaldırma

Web sitenizin kaynak görüntülemesini yaptığınızda, WordPress sürümünün kaynak kodları arasında yer aldığını görebilirsiniz. Bu gösterim, her ne kadar basit bir özellik gibi görünse de, güncellemeler konusunda çok hızlı değilseniz ilerleyen zamanlarda başınızı ağrıtabilir. Bu gösterimi durdurmazsanız, WordPress sürümünüzde yer alan güvenlik açıklarını bilen bir bilgisayar korsanına, tüm ipuçlarını tek satır ile sunmuş olursunuz. Versiyon bilgisini gizlemek için aşağıdaki kodu kullanabilirsiniz.

function complete_version_removal() {
return ‘  ‘;
}
add_filter(‘the_generator’, ‘complete_version_removal’);


Ziyaretçilere bakım modu gösterme

Web siteniz ile ilgili bir düzenleme yapacağınız zaman, bu süreçte ziyaretçilerin “bakım modu” uyarısı ile karşılaşmasını istiyorsanız, aşağıdaki kod tam size göre.

function wp_maintenance_mode(){
if(!current_user_can(‘edit_themes’) || !is_user_logged_in()){
wp_die(‘Bakım yapıyoruz. Yaklaşık olarak 1 gün sonra hizmetinizdeyiz.’, ‘Bakım yapıyoruz. Yaklaşık olarak 1 gün sonra hizmetinizdeyiz.’, array(‘response’ => ‘503’));
}
}
add_action(‘get_header’, ‘wp_maintenance_mode’);


Yeniden boyutlandırılan resimleri netleştirme

Yazılara eklediğiniz ya da öne çıkarılan görsel olarak belirlediğiniz resimlerde, yeniden boyutlandırma işlemi uygulanırsa, -özellikle JPEG formatına sahip ise- bulanıklık söz konusu olabiliyor. Ziyaretçiler ve web site sahipleri için oldukça sinir bozucu olan bu durumu çözmek için aşağıdaki kodu kullanabilirsiniz. Unutmamakta fayda var; bu kod sadece JPEG formatlı resimler için geçerli.

function ajx_sharpen_resized_files( $resized_file ) {
$image = wp_load_image( $resized_file );
if ( !is_resource( $image ) )
return new WP_Error( ‘error_loading_image’, $image, $file );
$size = @getimagesize( $resized_file );
if ( !$size )
return new WP_Error(‘invalid_image’, __(‘Could not read image size’), $file);
list($orig_w, $orig_h, $orig_type) = $size;
switch ( $orig_type ) {
case IMAGETYPE_JPEG:
$matrix = array(
array(-1, -1, -1),
array(-1, 16, -1),
array(-1, -1, -1),
);
$divisor = array_sum(array_map(‘array_sum’, $matrix));
$offset = 0;
imageconvolution($image, $matrix, $divisor, $offset);
imagejpeg($image, $resized_file,apply_filters( ‘jpeg_quality’, 90, ‘edit_image’ ));
break;
case IMAGETYPE_PNG:
return $resized_file;
case IMAGETYPE_GIF:
return $resized_file;
}
return $resized_file;
}
add_filter(‘image_make_intermediate_size’, ‘ajx_sharpen_resized_files’,900);

Admin paneli logosu değiştirme

Yönetim paneline girerken karşılaştığını giriş ekranında yer alan WordPress logosunu değiştirmek istiyor olabilirsiniz. Bu isteğinizin birçok nedeni olabilir ama, bu nedenlerin hiçbiri önemli değil. Aşağıda yer alan kodu functions.php dosyasına ekleyerek giriş ekranında yer alan logoyu istediğiniz bir görsel ile değiştirebilirsiniz.

function custom_loginlogo() {
echo ‘<style type=”text/css”>
body.login div#login h1 a {
background-image: url(https://sizinsiteniz.com/logo.png);
}
.login h1 a {
background-size: 269px;
width: 269px;
height:60px;
</style>’;
}
add_action(‘login_head’, ‘custom_loginlogo’);


jQuery dosyalarını Google CDN üzerinden çekme

WordPress 3.1 sürümünden itibaren kullanılabilir olan bu özellik, web sitenizde yer alan jQuery kodlarının çalışmasını sağlayan js dosyalarını Google CDN üzerinden çekmenizi sağlıyor. Bu da, ziyaretçilerinizin web sitenize girdiklerinde, bu dosyaları browserları ile indirmesi anlamına geliyor. Böylece hem web sitenizdeki trafik, hem de binen yük artmış oluyor. Bu dosyaları Google CDN ile sunmak, web site sunucunuzun daha az yorulmasına, web sitenizin işlem yoğunluğunu azaltmasına fayda sağlar. Bu kodu kullanarak, web sitenizin hızına katkıda bulunabilirsiniz.

function replace_jquery() {
if (!is_admin()) {
// comment out the next two lines to load the local copy of jQuery
wp_deregister_script(‘jquery’);
wp_register_script(‘jquery’, ‘http://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js’, false, ‘1.11.3’);
wp_enqueue_script(‘jquery’);
}
}
add_action(‘init’, ‘replace_jquery’);


“Devamını oku” yazısı için kelime sınırı belirleme

Yazılarınızın listelenmesinde gösterilen özet içerikler, belirlenen kelime sınırlarına göre çalışır. Örnek olarak; 300 kelime olarak belirlediğiniz bu fonksiyonda, özet olarak sadece ilk 300 kelime gösterilir. Bu özelliğin çalışma ayarını aşağıdaki kod ile yapabilirsiniz.

function new_excerpt_length($length) {
return 100;
}
add_filter(‘excerpt_length’, ‘new_excerpt_length’);


Yazılar veya sayfalar bölümlerinde öne çıkarılan görselleri gösterme

WordPress yönetim panelinde, yazı ve sayfaların listelendiği Tüm Sayfalar ve Tüm Yazılar sekmelerinde, yazı ve sayfaların yanında; kategori, yazar, etiketler gibi unsurlar da listelenir. Bu bölümlerde, yazı ve sayfalarınıza ek olarak, ilgili öne çıkarılan görselleri de listelemek istiyorsanız aşağıdaki kodu kullanabilirsiniz.

if ( !function_exists(‘AddThumbColumn’) && function_exists(‘add_theme_support’) ) {
add_theme_support(‘post-thumbnails’, array( ‘post’, ‘page’ ) );
function AddThumbColumn($cols) {
$cols[‘thumbnail’] = __(‘Thumbnail’);
return $cols;
}
function AddThumbValue($column_name, $post_id) {
$width = (int) 35;
$height = (int) 35;
if ( ‘thumbnail’ == $column_name ) {
// thumbnail of WP 2.9
$thumbnail_id = get_post_meta( $post_id, ‘_thumbnail_id’, true );
// image from gallery
$attachments = get_children( array(‘post_parent’ => $post_id, ‘post_type’ => ‘attachment’, ‘post_mime_type’ => ‘image’) );
if ($thumbnail_id)
$thumb = wp_get_attachment_image( $thumbnail_id, array($width, $height), true );
elseif ($attachments) {
foreach ( $attachments as $attachment_id => $attachment ) {
$thumb = wp_get_attachment_image( $attachment_id, array($width, $height), true );
}
}
if ( isset($thumb) && $thumb ) {
echo $thumb;
} else {
echo __(‘None’);
}
}
}
// for posts
add_filter( ‘manage_posts_columns’, ‘AddThumbColumn’ );
add_action( ‘manage_posts_custom_column’, ‘AddThumbValue’, 10, 2 );
// for pages
add_filter( ‘manage_pages_columns’, ‘AddThumbColumn’ );
add_action( ‘manage_pages_custom_column’, ‘AddThumbValue’, 10, 2 );


Yorum kısmına minimum karakter sınırı ekleme

Yorumlar, yazılarınızın ilgi görmesi, önemsenmesi ve arama motorları etkileri açısından oldukça etkili fonksiyonlardır. Fakat, bazen kötü niyetli kişilerce suistimal edilmesi, bazen de kısa ve anlamsız yorumların can sıkıcı olabilmesi ihtimali ile, yorum kısmında minimum karakter sınırı belirlemek isteyebilirsiniz. Böylece ziyaretçileriniz yorum yaparken, belirlediğiniz sınırın altında uzunlukta bir yazı girdiklerinde uyarı ile karşılaşırlar ve daha uzun yorumlar yapmalarını zorunlu hale getirmiş olursunuz. Bu kod, functions.php kodları olarak bilinen hazır kodlar arasında en çok kullanılan kodlardan biridir.

add_filter( ‘preprocess_comment’, ‘minimal_comment_length’ );

add_filter( ‘preprocess_comment’, ‘minimal_comment_length’ );

function minimal_comment_length( $commentdata ) {

$minimalCommentLength = 20; if ( strlen( trim( $commentdata[‘comment_content’] ) ) < $minimalCommentLength ) {

wp_die( ‘Lütfen daha uzun bir yorum giriniz. En az: ‘ . $minimalCommentLength . ‘ characters long.’ );

} return $commentdata;

}


Yazıdaki ilk resmi otomatik olarak öne çıkan görsel olarak belirleme

Yazdığınız yazılarda, her yazı için ayrı ayrı öne çıkarılan görsel belirlemek için uğraşmak istemiyorsanız, aşağıdaki kodu kullanarak yazıya eklediğiniz ilk resmin otomatik olarak öne çıkan görsel olarak belirlenmesini sağlayabilirsiniz.

add_filter(‘get_post_metadata’, function($value, $object_id, $meta_key, $single) {
if ($meta_key !== ‘_thumbnail_id’ || $value) {
return $value;
}
preg_match(‘~<img[^>]+wp-image-(\\d+)~’, get_post_field(‘post_content’, $object_id), $matches);
if ($matches) {
return $matches[1];
}
return $value;
}, 10, 4);

RSS’de öne çıkarılan görselleri gösterme

RSS kaynakları, birçok web sitesi için çok önemli unsurlardır. RSS kaynaklarınızda, öne çıkarılan görselleri de göstermek isterseniz, aşağıdaki kodu kullanabilirsiniz.

function rss_post_thumbnail($content) {

function rss_post_thumbnail($content) {

global $post; if(has_post_thumbnail($post->ID)) {

$content = get_the_post_thumbnail($post->ID) . $content;

}

return $content;

}

add_filter(‘the_excerpt_rss’, ‘rss_post_thumbnail’);

add_filter(‘the_content_feed’, ‘rss_post_thumbnail’);


WordPress kurulumu ile gelen varsayılan bileşenleri kaldırma

Herhangi bir sebepten ötürü, varsayılan (default) olarak gelen bileşenleri kaldırmak isteyebilirsiniz. Bunun için aşağıdaki kodu kullanabilirsiniz.

function unregister_default_wp_widgets() {
unregister_widget(‘WP_Widget_Pages’);
unregister_widget(‘WP_Widget_Calendar’);
unregister_widget(‘WP_Widget_Archives’);
unregister_widget(‘WP_Widget_Links’);
unregister_widget(‘WP_Widget_Meta’);
unregister_widget(‘WP_Widget_Search’);
unregister_widget(‘WP_Widget_Categories’);
unregister_widget(‘WP_Widget_Recent_Posts’);
unregister_widget(‘WP_Widget_Recent_Comments’);
unregister_widget(‘WP_Widget_RSS’);
unregister_widget(‘WP_Widget_Tag_Cloud’);
}
add_action(‘widgets_init’, ‘unregister_default_wp_widgets’, 1);


“WordPress ile oluşturduğunuz için teşekkürler” yazısını değiştirme

Yönetimin panelinizin en altında yer alan bu yazıyı, istediğiniz bir metin ile değiştirmek isterseniz, aşağıdaki kodu kendinize göre düzenleyip functions.php dosyasına eklemeniz yeterli olacaktır.

function custom_admin_footer() {
echo ‘Burayı tırnak işaretlerine dokunmadan kendinize göre düzenleyin’;
}
add_filter(‘admin_footer_text’, ‘custom_admin_footer’);


“Devamını oku” yazısını değiştirme

Web sitenizin yazılarının listelendiği kısımda yer alan ve yazılarınızın özetinin ardından görünen “Devamını oku” yazısını/butonunu değiştirmek isterseniz, aşağıdaki kodu kendinize göre düzenleyip kullanabilirsiniz.

function modify_read_more_link() {
return ‘<a class=”more-link” href=”‘ . get_permalink() . ‘”>İstediğiniz yazıyı buraya yazın</a>’;
}
add_filter( ‘the_content_more_link’, ‘modify_read_more_link’ );


Sonuç

Bu yazımızda, WordPress tabanlı web sitenizi yavaşlatmadan kullanabileceğiniz functions.php kodları sıraladık. Daha fazlası için Codex sayfasına göz atabilirsiniz. Eklemek istedikleriniz ve önerileriniz için yorum kısmını kullanabilir veya iletişim sayfamızı ziyaret edebilirsiniz.

Yazı hakkında görüşlerinizi belirtmek istermisiniz?

Yazarlar

İlginizi Çekebilir