WordPress’te yazıya eklenen ilk resim Öne çıkarılmış görsel olsun

Her yazı için Öne çıkarılmış görseli tek tek seçmek yerine kısa bir yöntemle WordPress’te yazıya eklenen ilk resim Öne çıkarılmış görsel olarak ayarlayabiliriz. Bunun için functions.php dosyasına aşağıdaki kodları ekleriz:

function auto_featured_image() {
    global $post;
    if (!has_post_thumbnail($post->ID)) {
        $attached_image = get_children( "post_parent=$post->ID&post_type=attachment&post_mime_type=image&numberposts=1" );
        
      if ($attached_image) {
              foreach ($attached_image as $attachment_id => $attachment) {
                   set_post_thumbnail($post->ID, $attachment_id);
              }
         }
    }
}
// Use it temporary to generate all featured images
add_action('the_post', 'auto_featured_image');
// Used for new posts
add_action('save_post', 'auto_featured_image');
add_action('draft_to_publish', 'auto_featured_image');
add_action('new_to_publish', 'auto_featured_image');
add_action('pending_to_publish', 'auto_featured_image');
add_action('future_to_publish', 'auto_featured_image');

Contact form 7 icin css yüklemesini iptal etmek

Contact Form 7 eklentisini kullananlar,  bu eklentiye ait style dosyasının, yani css dosyasının yüklemesini iptal etmek için yapılacak ufak bir adım function.php dosyasına aşağıdaki kodu eklemektir. Böylelikle kendi style.css dosyamızı kullanarak formları istediğimiz şekilde biçimlendirebiliriz.

// contact form 7 icin css yuklemesini iptal et
add_filter( 'wpcf7_load_css', '__return_false' );

RSS yayınına bilgi eklemek

Web sitenizi RSS sistemi ile takip edenler yazdığınız yazılardan haberdar olurlar. Bazıları ise bu RSS yayınını kopya içerik üretmek için kullanır, buna bir nebze engel olabilirsiniz.

WordPress otomatik olarak RSS yayını yapar, varsayılan bu yayını özelleştirebiliriz. Bunun için functions.php dosyasına aşağıdaki fonksiyonu ekleyebilirsiniz.

function add_to_feed($content){
 $content .= "<p>Yazılarımı okuduğunuz için teşekkürler...</p>";
 return $content;
}

add_filter( "the_content_feed", "add_to_feed" );

Koyu olarak yazılan kısmı dilediğiniz şekilde değiştirebilirsiniz. Ya da bu kısma link içeren bir HTML kodu yerleştirebilirsiniz.

?doing_wp_cron uzantısından nasıl kurtulunur?

?doing_wp_cron uzantısı wordpress tarafından arka planda sisteme yaptırılan cron işlerinin bir sonucu olarak karşımıza çıkıyor. Bu işler genellikle backup alma ile ilgilidir. Adres çubuğunda bunun gözükmesini istemiyorsa bir kaç adımda bundan kurtulabiliriz.

Öncelikle wp-config.php dosyasına aşağıdaki satırı ekleyerek WordPress cron işlerini durduruyoruz.

define('DISABLE_WP_CRON', 'true');

Sonrasında cpanel üzerinden giriş yaparak servera bu işleri belirli zamanlarda çalıştırabileceğini söylüyoruz. Cron bölümüne gelerek aşağıdaki kodu yapı çalıştırma zamanlarını belirleyebilirsiniz.

wget -q -O - http://www.hakkiceylan.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1

WordPress bloglarda yazıdan sonra sınırlı sayıda etiket göstermek

Normal şartlarda genellikle single.php dosyasının içerisinde the_tags() fonksiyonuyla yazıya ait tüm etiketler yazının sonunda gösterilir. Fakat bazı durumlarda etiketler çok fazla olur ve tasarımın kötü görünmesine yol açabilir. Bunu engellemek için etiket gösterimine sınırlama getirebiliriz. functions.php dosyasına aşağıdaki fonksiyonu yazarak kullanabiliriz.

add_filter('term_links-post_tag','limit_to_five_tags');
function limit_to_five_tags($terms) {
return array_slice($terms,0,5,true);
}

Sonrasında yine aynı the_tags() fonksiyonunu kullanarak etiketleri göstermeye devam edebiliriz, fakat bu sefer gösterilecek etiket sayısı 5 ile sınırlanmış olacaktır.

WordPress özel alanlara göre sıralama

Yazılarımızı yayınlama tarihine, yorum sayısına veya ismine göre sıralayabiliyoruz. Eklediğimiz özel alanlara (custom fields) göre de sıralamamız mümkün. Bunun için yazıları listelediğimiz php dosyasını açıp aşağıdaki şekilde düzenleme yapabiliriz.

<?php
$args = array( 'numberposts' => 5); 
$args = array('meta_key' => 'seyahat-zamani', 'orderby' => 'meta_value_num', 'order' => 'ASC');
$metasorting = get_posts( $args );
foreach( $metasorting as $post ) : ?>
<h2><?php the_title(); ?></h2>
<?php the_excerpt(); ?>
<?php endforeach; ?>

Google Pagespeed Analytics hatası çözümü

Google Pagespeed ile test yaparken Google Analytics’den dolayı alınan hatayı engellemek amacıyla analytics kodunu aşağıdaki şekilde yükletmek yeterli olacaktır.

<?php if (!isset($_SERVER['HTTP_USER_AGENT']) || stripos($_SERVER['HTTP_USER_AGENT'], 'Speed Insights') === false): ?>
// google analytics kodunu buraya ekleyin
<?php endif; ?>

URL adres parçalama ve kullanma

Bir URL de son kısmı kullanmak için, örneğin bulunduğumuz sayfanın adresini veren bir fonksiyon kullanıyoruz ve buradan gelen değerin son kısmı ile ilgileniyoruz:

<?php $url = curPageURL(); $id = explode('/', $url); $kategori_adi = $id[3]; ?>
<?php $wp_query->query('post_type=portfolio&portfolio-category='.$kategori_adi.'&posts_per_page='.$portfolios_per_page.'&post_status=publish'.'&paged='.$paged); ?>

WordPress yüklenen resim boyutunu sınırlamak

Yazı veya sayfaya resim yüklerken çok küçük ya da çok büyük olmasını engellemek için genişlik ve yükseklik değerlerine sınır getirebiliriz. function.php dosyasına ekleyeceğimiz bir fonksiyon bunu sağlayabilir.

add_filter('wp_handle_upload_prefilter','mdu_validate_image_size');
function mdu_validate_image_size( $file ) {
    $image = getimagesize($file['tmp_name']);
    $minimum = array(
        'width' => '320',
        'height' => '500'
    );
    $maximum = array(
        'width' => '1500',
        'height' => '1000'
    );
    $image_width = $image[0];
    $image_height = $image[1];

    $too_small = "Yüklenen görüntünün boyutu çok küçük. Genişlik minimum {$minimum['width']}px ve yükseklik minimum {$minimum['height']}px olmalı. Yüklenen dosya $image_width x $image_height piksel.";
    $too_large = "Yüklenen görüntünün boyutu çok büyük. Genişlik maksimum {$maximum['width']}px ve yükseklik maksimum {$maximum['height']}px olmalı. Yüklenen dosya $image_width x $image_height piksel.";

    if ( $image_width < $minimum['width'] || $image_height < $minimum['height'] ) {
        // add in the field 'error' of the $file array the message 
        $file['error'] = $too_small; 
        return $file;
    }
    elseif ( $image_width > $maximum['width'] || $image_height > $maximum['height'] ) {
        //add in the field 'error' of the $file array the message
        $file['error'] = $too_large; 
        return $file;
    }
    else
        return $file;
}

wp_emojicons kaldırmak için

Yeni versiyonlarda WordPress için otomatik olarak yüklenen wp_emojicons srciptini kaldırmak ve wordpressi biraz daha hızlandırmak için function.php dosyasına aşağıdaki eklemeyi yapabiliriz.

// disable wp_emojicons
remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
remove_action( 'admin_print_scripts', 'print_emoji_detection_script' );
remove_action( 'wp_print_styles', 'print_emoji_styles' );
remove_action( 'admin_print_styles', 'print_emoji_styles' );

Rich Snippets kullanımı ve shema.org

Rich Snippets kullanımı (NewsArticle için) için WordPress temalarında bazı değişiklikler yapmamız gerekir. İlk olarak her yazının bulunduğu div’e aşağıdaki şekilde ekleme yapmamız gerekir.

<div class="post" id="post-<?php the_ID(); ?>" itemscope itemtype="http://schema.org/NewsArticle">

Tarih kısmı için aşağıdaki şekilde değiştirebiliriz:

<div class="tarih" itemprop="datePublished" content="<?php the_time('Y-m-d H:i'); ?>">

Başlık kısmı için aşağıdaki ekleme yapılmalı:

<h2 itemprop="headline">

İçerik kısmına da aşağıdakini ekleyebiliriz p ya da div olabilir fark etmez.

<p itemprop="articleBody">

Post thumbnail kullanımını aşağıdaki şekilde yapmamız gerekir:

<?php if ( has_post_thumbnail() ) { the_post_thumbnail( 'thumbnail', array( 'itemprop' => 'image' ) );}; ?>

Son olarak resimler için function.php dosyasına aşağıdaki kodu eklersek tüm resimlere eklemeyi otomatik yapacaktır.

// shema.org icin resimlere ekleme
function add_responsive_class($content){
        $content = mb_convert_encoding($content, 'HTML-ENTITIES', "UTF-8");
        $document = new DOMDocument();
        libxml_use_internal_errors(true);
        $document->loadHTML(utf8_decode($content));
        $imgs = $document->getElementsByTagName('img');
        foreach ($imgs as $img) {           
           $img->setAttribute('itemprop','image');
        }
        $html = $document->saveHTML();
        return $html;   
}
add_filter        ('the_content', 'add_responsive_class');

WordPress admin alanı için CSS eklemek

WordPress admin alanı için CSS eklemek istiyorsak CSS dosyamızı hazırlayıp admin.css olarak tema dosyalarımızın içerisine kaydediyoruz. Sonrasında function.php dosyasına aşağıdaki kodları giriyoruz;

function admin_theme_style() {
    wp_enqueue_style('custom-admin-style', get_template_directory_uri() . '/css/admin.css');
}
add_action('admin_enqueue_scripts', 'admin_theme_style');

Kullanıcı Profiline Yeni Alanlar Eklemek

WordPress üyelik sistemiyle gelen kullanıcı profilindeki alanlar çoğu zaman yetersiz kalabilir. Bunları artırmak ve bu kısma özel alanlar eklemek, sonrasında da bu alanları dilediğimiz yerde gösterebilmek için functions.php dosyasına aşağıdaki satırları ekliyoruz: Okumaya devam et Kullanıcı Profiline Yeni Alanlar Eklemek

WordPress otomatik eklenen youtube kodunu değiştirmek

WordPress ile bir yazı yazarken eklediğiniz youtube linki otomatik olarak embed koduna çevrilir ve bir video eklenir. Otomatik olarak eklenen kodda belirli yükseklik ve genilik bilgileri vardır bunlara müdahale edebilmek için function.php dosyasına aşağıdaki satırlar eklenebilir:

add_filter( 'embed_defaults', 'bigger_embed_size' );
function bigger_embed_size() {return array( 'width' => 600, 'height' => 430 );}

Excerpt özelleştirmesi

Excerpt özelleştirmesi son kısım için;

function new_excerpt_more( $more ) { return '..'; }
add_filter('excerpt_more', 'new_excerpt_more');

Excerpt özelleştirmesi kelime saysını değiştir;

function custom_excerpt_length( $length ) {	return 16; }
add_filter( 'excerpt_length', 'custom_excerpt_length', 999 );

Eklentinin güncelleme bildirimini gizlemek

WordPress temasının function.php dosyasına aşağıdaki kodu ekleyerek belli bir eklentinin güncelleme bildirimini admin ekranında gizleyebiliriz.

add_filter('site_transient_update_plugins', 'dd_remove_update_nag');
function dd_remove_update_nag($value) {
 unset($value->response[ plugin_basename('quick-event-manager/quick-event-manager.php') ]);
 return $value;
}

Conditional, şartlı sayfa şablonları

WordPress ile tek bir sayfa şablonunda şartlı kullanım yapılabilir.

<?php if (is_page()) { ?>
  Page ise burası.. 
<?php } elseif (is_single()) { ?>
  Tekil bir post ise burası..
<?php } elseif (is_category()) { ?>
  Kategori arşivi ise burası..
<?php } elseif (is_author()) { ?>
  Yazar arşivi ise burası..
<?php } elseif (is_home()) { ?>
  Anasayfa ise burası gösterilir.
<?php } else { ?>
<?php } ?>

Özel bir page, post, category vs ise is_page(‘hakkimizda’) ya da is_category(‘5’)şeklinde tek bir tanımlama da yapılabilir. Başka bir şekilde de eğer yazımız belli bir kategoriye aitse… şeklinde kullanılabilir.

<?php if (in_category('nikon')) { ?>
  Kategori bilgisi nikon ise bu kısmı göster..
<?php } elseif (in_category('canon')) { ?>
  Kategori bilgisi canon ise bu kısmı göster..  
<?php } else { ?>
<?php } ?>