Kategori arşivi: Wordpress

wordpress kod örnekleri, wordpress performans iyileştirme teknikleri, wordpress güvenlik çözümleri, hata giderme taktikleri ve ipuçları

Wordpress’te AMP Sayfaları Nasıl Kapatılır?

AMP (Hızlandırılmış Mobil Sayfalar) sayfaları, mobil cihazlarda hızlı yükleme süreleri için optimize edilmiş web sayları anlamına gelmektedir. Ancak, bazı web siteleri için AMP sayfaları uygun olmayabilir örnek vermem gerekirse mobile tam uyumlu olan web siteleri aslında AMP için pekte uygun değildir.

Bu makalede, Wordpress web sitenizde AMP sayfalarını basit bir şekilde nasıl kapatabileceğinizi göstereceğim.

1. AMP Eklentisini Kaldırma

AMP sayfalarını kapatmanın en kolay yolu, AMP eklentisini kaldırmaktır. Wordpress’te AMP eklentisi yüklüyse, AMP sayfalarını etkinleştirmek veya devre dışı bırakmak için ayarlarını değiştirebilirsiniz.

  1. Wordpress yönetici paneline giriş yapın.
  2. Sol taraftaki menüde “Eklentiler” seçeneğine tıklayın.
  3. AMP eklentisini bulun ve “Kaldır” seçeneğine tıklayın.
  4. Eklentiyi kaldırmak için “Eklentiyi Kaldır” butonuna tıklayın.

2. functions.php Dosyasında Değişiklik Yapma

AMP eklentisi yüklü değilse veya AMP sayfalarını kapatmak için daha fazla kontrol istiyorsanız, functions.php dosyasında değişiklik yapabilirsiniz. Bu yöntem, AMP sayfalarını kapatmanın daha kapsamlı bir yoludur.

  1. Wordpress yönetici paneline giriş yapın.
  2. Sol taraftaki menüde “Görünüm” seçeneğine tıklayın.
  3. “Düzenleyici” seçeneğine tıklayın.
  4. “functions.php” dosyasını seçin.
  5. Dosyanın sonuna şu kodu ekleyin:
add_filter( 'amp_enabled', '__return_false' );
  1. Değişiklikleri kaydetmek için “Dosyayı Güncelle” butonuna tıklayın.

3. .htaccess Kullanarak sayfaların yönlendirilmesi

(site. com/ilgili-konu/amp/ => site. com/ilgili-konu/ olarak yönlendirir. Ayrıca işlem yapmaya gerek yoktur, bütün linkler anında yönlenir.

RedirectMatch 301 ^/(.+)/amp(/.*)?$ /\$2

Kodu kendi amp url yapınız göre uyarlayabilirsiniz.

4. Nginx Üzerinde sayfaların yönlendirilmesi

(site. com/ilgili-konu/amp/ => site. com/ilgili-konu/ olarak yönlendirir.)

# Disable AMP and Redirect Main Url Schema
rewrite ^(.*/)amp/$ $1 permanent;

Kodu kendinize göre uyarlayabilirsiniz.

WordPress SMTP Mail Ayarları Nasıl Yapılır?

Wordpress’de ön tanımlı olarak bilindiği gibi herhangi bir SMTP hizmeti veya aracı bulunmuyor, wordpress smtp destekliyor ancak e-posta göndermek için bir takım ayar yapmamız gerekiyor.

Hem güvenle e-posta göndermek hemde gelen kutusuna doğrudan iletilmesi için yapacağımız bu ayarlar çok ama çok önemli.

Güvenlik demişken Wordpress web sitenizin güvenliğini önemsiyorsanız CloudFlare Firewall ile WordPress Güvenliği Nasıl Sağlanır? Makalesine göz atmanızı öneririm.

Wordpress SMTP için Kullanılabilecek 4 Eklenti

Çoğu kişi ise wordpress smtp eklentilerini kullanma noktasında zorlanıyor ve mail gönderimi yapamıyor, düzgün birkaç eklenti var bunları sizler için aşağıda listeledim istediğinizi seçebilirsiniz.

Wordpress SMTP İçin Eklenti Nasıl Kurulur?

WordPress admin panelimizden “Eklentiler”-> “Yeni Ekle” ye tıklıyoruz ve arama alanına SMTP yazıyoruz. Bu anlatım sırasında burada “Fluent SMTP” eklentisini kullanacağız listeden bulup “Şimdi Kur” butonuna tıklıyoruz ve kurulumu tamamlıyoruz.

Bağlantı eklememizi isteyecek bizden, aşağıda görselde görebileceğiniz gibi pek çoğunu bu eklenti ücretsiz bir şekilde destekliyor.

fluentsmtp ayarları, wordpress smtp ayarı nasıl yapılır, wordpress smtp mail ayarları

Ben E-posta gönderimi ucuz olan “Amazon SES” tercih ettim, 60 bine yakın e-postayı ücretsiz gönderiyorsunuz üstüne de ek gönderdikleriniz e-postalar baya ucuza patlıyor.

Ama bu anlatımı yaparken SMTP üzerinden anlatacağım bu sebeple sol baştaki “Other SMTP” seçeneğini seçin. Aşağıdaki gibi bir ekran karşılayacak sizi

wordpress smtp ayarı, wordpress mail gönderim ayarları, wordpress smtp ile e-posta atma

Burada Hosting kullanan arkadaşlar panel üzerinden oluşturdukları SMTP bilgilerini kullanacak, böyle bir imkânı olmayan ise elinde bulunan SMTP bilgilerini kullanabilirler. Dışarıdan bu hizmeti almak isterseniz

SMTP Hizmeti Sağlayan Firmalar

Sıralamayı wordpress smtp hizmetinin kalitesi ve fiyatı göz önünde bulundurarak yapıyorum, en üstte yer alan fiyat performans olarak en iyi kabul edebileceğimiz firma olduğunu unutmayınız.

Fluent SMTP E-posta Gönderim Ayarları Nasıl Yapılır?

  • From Email: Varsa hostinginiz altında oluşturduğunuz e-posta hesap bilgisi, yoksa elinizde ki diğer SMTP e-posta adresi
  • From Name: E-postaların gönderileceği ad, istediğinizi girebilirsiniz.
  • Smtp Host: Hosting üzerinde kuruluyorsa localhost, aksi durumda size verilmiş olan host bilgisi girilmeli
  • Smtp Port/Encryption: Genellikle 587 olur bu sebeple TLS seçin, 465 ise SSL seçmeyi unutmayın. (Hosting kullananlar None olarak seçili bırakmalı)
  • Use Auto TLS: Seçeneğini aktif hale getirin. (Hosting kullananlar bu seçeneği kapalı tutmalı)
  • SMTP Username: Varsa hostinginiz de oluşturduğunuz e-posta için kullanılacak kullanıcı adı bilgisi
  • SMTP Password: varsa hostinginiz de oluşturduğunuz e-posta için kullandığınız parola bilgisi

Tüm bu işlemleri tamamladıktan sonra “Save Connection Settings” butonuna basarak ayarlarınızı kayıt etmeyi unutmayın. Başarılı bir şekilde yapılandırmanızı tamamladınız artık e-posta göndermek için hazırsınız. “Email Test” sekmesinden e-posta gönderile bilirliğini test etmeyi unutmayın.

Wordpress’de Güvenli Jetpack Kullanımı

Jetpack eklentisi kullanmak isteyen ama güvenlik risklerini göze alamayan arkadaşlarımız oluyor veya kimi zaman yapılandırma konusunda bilgisiz olunuyor ve direk olarak xmlrpc.php dışarıya açılıyor.

Bunun yerine jetpack eklentisinin IP aralıklarına izin verebilirsiniz böylelikle gereksiz güvenlik risklerine girmemiş olursunuz.

Jetpack eklentisine ait IP adreslerinin tedarik edilmesi

curl -4sk https://jetpack.com/ips-v4.txt

Bu komutun çıktısı aşağıdaki gibi olacak ve güncel ip adreslerini başarılı bir şekilde almış olacaksınız.

122.248.245.244/32
54.217.201.243/32
54.232.116.4/32
192.0.80.0/20
192.0.96.0/20
192.0.112.0/20
195.234.108.0/22

Şimdi bu ip adreslerini web sunucunuza bildirmeniz gerekiyor ki xmlrpc.php rotasında bu ipler işlesin. Ben NGINX için size örneği vereyim.

location ~* /(xmlrpc\.php) {
    allow 122.248.245.244/32;
    allow 54.217.201.243/32;
    allow 54.232.116.4/32;
    allow 192.0.80.0/20;
    allow 192.0.96.0/20;
    allow 192.0.112.0/20;
    allow 195.234.108.0/22;
    deny all;
}

Bu locatin yapısı sayesinde artık xmlrpc.php dosyanıza sadece yukarıda belirlediğiniz ip adresleri erişebilecek. Aksi bir durumda siz dahil erişim sağlayamayacaksınız.

Rank Math SEO wp_actionscheduler_groups Hatası Ve Çözümü

Veritabanında iyileştirme çalışması yaparken, sürüm yükseltme sırasında aşağıdaki sorun ile karşılaştım. Analytics modülünü kullanmıyor olsam bu hatayı görmeyecektim aslında, ama bu sorunu çözüme kavuşturalım.

Her ne hikmetse veritabanında kullanılan wp_actionscheduler_groups tablosuna bir şeyler olmuş bozulmuş. Bunu çözmek için yapacağımız şey çok basit olacak paniklemeye gerek yok.

2020/11/22 19:54:30 [error] 29691#29691: *173 FastCGI sent in stderr: "PHP message: require_once('wp-admin/admin.php'), require_once('wp-load.php'), require_once('wp-config.php'), require_once('wp-settings.php'), do_action('init'), WP_Hook->do_action, WP_Hook->apply_filters, CMB2_Bootstrap_270->include_cmb, cmb2_bootstrap, do_action('cmb2_admin_init'), WP_Hook->do_action, WP_Hook->apply_filters, RankMath\Admin\Options->register_option_page, include('/plugins/seo-by-rank-math/includes/modules/analytics/views/options.php'), as_get_scheduled_actions, ActionScheduler_DBStore->fetch_action, W3TC\DbCache_WpdbNew->query, W3TC\DbCache_WpdbInjection_QueryCaching->query, W3TC\_CallUnderlying->query, W3TC\DbCache_WpdbNew->query, W3TC\DbCache_WpdbInjection->query, W3TC\DbCache_WpdbNew->default_query tarafından oluşturulan SELECT a.*, g.slug AS `group` FROM wp_actionscheduler_actions a LEFT JOIN wp_actionscheduler_groups g ON a.group_id=g.group_id WHERE a.action_id=14837 sorgusu için WordPress veritabanı hatası Unknown column 'g.slug' in 'field list'PHP message: PHP Fatal error:  Uncaught Error: Call to a member function getTimestamp() on null in /var/www/public/wp-content/plugins/seo-by-rank-math/includes/modules/analytics/views/options.php:45

Öncelikle SSH üzerinden makineye erişip plugin klasörüne giriş yapıyorsunuz ve öncelikli olarak eklentiyi devredışı bırakıyorsunuz.

cp -r seo-by-rank-math/ seo-by-rank-math-backup/
rm -rf seo-by-rank-math/

Ardından eklenti pasif duruma geçmesi sayesinde /wp-admin içerisine giriş yapabiliyoruz ve _repair-action-scheduler eklentisini .zip uzantılı bir şekilde indiriyoruz ve kuruyoruz. Eklentiyi etkinleştirdiğinizde otomatik olarak sorunu çözmek için veritabanında gerekli değişiklikleri yapacak.

SEO Eklentimizi daha sonra tekrar aktif edeceğimiz için sunucuda eklenti klasöründe dosya adını eskisi gibi değiştiriyoruz ve seo-by-rank-math yapıyoruz.

cp -r seo-by-rank-math-backup/ seo-by-rank-math/
rm -rf seo-by-rank-math-backup/

Ardından eklentiler sayfasından Rank Math Eklentisini aktifleştirmeyi unutmayın.

Wordpress Shield Security Kurulum Ve Ayarları

Wordpress üzerinde envai çeşit güvenlik eklentisi bulunuyor, Wordfence gibi popüler olanlarıda var. Ancak öyle bir eklenti var ki popüler olmamasına rağmen kendisini çok güzel geliştiriyor ve uygun fiyatlar ile satılıyor. Gelin hep birlikte Shield Security kurulumuna göz atalım ve web sitemizde ek güvenlik katmanı oluşturalım.

Bu eklentide öne çıkan özelliklerden bazıları şunlardır

  • Yerleşik 2FA, U2F desteği
  • E-Posta doğrulama
  • Virüs ve Malware tarama
  • Güvenlik güncelleştirmelerini otomatik gerçekleştirme
  • Wordpress’in temel dosyalarını kitleme
  • Hack koruması
  • Eklenti ve Tema koruma

Unutmayın bu makalede Pro sürüm üzerinden anlatımlar yapılmıştır. Bir takım özellikler ücretsiz sürümde aktif olmayabilir. Aktif etmek için aylık 1$ bir ücret karşılığında PRO sürümüne geçiş yapabilirsiniz. Pişman olmayacağınıza eminim.

Eklentiyi direk olarak wordpress üzerinden indirebilirsiniz. İndirip kurduğunuz anda sizi aşağıdaki ekran karşılayacak ve burada pek çok özellik olduğunuda göreceksiniz.

wordpress simple firewall, wordpress shield security, Shield Security: Powerful All-In-One Protection

Sol üstten ayarlar sekmesine tıklayarak gereken ayarları yapmalıyız,

Genel Ayarlar

Eklenti Varsayılanları

  • IP kaynağı – CloudFlare aktif olarak kullanılıyorsa HTTP_CF_CONNECTING_IP kullanılmıyorsa REMOTE_ADDR
  • E-posta Raporu – Mevcut kullanmakta olduğunuz raporların iletileceği e-posta adresi
  • XML-RPC Uyumluluğu – Kapalı

Genel Eklenti Seçenekleri

  • Anonymous Usage Statistics – Açık
  • Eklenti Uyarıları – Açık
  • Eklenti Rozetini Göster – İsteğe bağlı
  • Allow WP-CLI – İsteğe bağlı
  • Eklenti Ayarlarını Sil – Kapalı
  • Locale Override – İsteğe bağlı

CAPTCHA

  • Captcha Provider – Google hCaptcha
  • Captcha Style – Hafif Tema
  • Captcha Site Key – Değiştirin
  • Captcha Secret – Değiştirin

İçe Aktar / Dışa Aktar

  • içe aktarma/dışa aktarma izni ver – Kapalı

Güvenlik Yöneticisi

Güvenlik Yönetici Kısıtlama Ayarları

  • Security Admin PIN – Mutlaka ayarlayın
  • Security Admins – Ana yöneticisnin kullanıcı adını girin
  • Güvenlik Yönetici Zaman Aşımı – 15
  • Allow Email Override – Kapalı

Erişim Kısıtlama Bölgeleri

  • Wordpress Seçenekleri – Açık
  • Yönetici Kullanıcılar – Açık
  • Eklentiler – Açık
  • Temalar – Açık
  • Sayfalar– Açık

Kötü IP’leri / Ziyaretçi Engeli

Auto IP Blocking Rules 

  • Offense Limit – 3
  • Otomatik Blok Bitimi – Month
  • User Auto Unblock
    • With Shield Bot Protection – Açık
    • Magic Email Links To Unblock Logged-In Users – Açık

Detect & Capture Login Bots

  • Failed Login – Double-Increment Offense Counter
  • Invalid Usernames – Immediate Block

Detect & Capture Probing Bots

  • 404 Detect – Audit Log Only
  • Link Cheese – Audit Log Only
  • XML-RPC Access – Immediate Block

Detect Behaviours Common To Bots

  • Fake Web Crawler – Double-Increment Offense Counter
  • Empty User Agents – Increment Offense Counter

İşlem Denetimi Seçenekleri

  • Otomatik Temizlik – 30
  • Maksimum İz Uzunluğu – 10000

Hack Koruma

File Scanning and Malware Protection

  • WordPress Core Files – Açık
  • Malware – Açık
  • Plugins & Themes – Açık
  • Automatic File Repair – Açık

Güvenlik açıkları tarayıcısı

  • Abandoned Plugin Scanner – Açık
  • Güvenlik Açığı Tarayıcısı – Açık
  • Otomatik Güncellemeler – Açık

Realtime Change Detection

  • File Locker
    • WP Config – Açık
    • Root .htaccess – Açık
    • Root index.php – Açık
    • Root Web.Config – Açık

Tanınmayan dosyalar tarayıcısı

  • Tanınmayan dosyalar tarayıcısı – Scan Enabled – Automatically Delete Files
  • Tarama yüklemeleri – Açık
  • Dosya dışlamaları – Ön tanımlı olarak bırakın

Tarama Seçenekleri

  • Günlük tarama frekansı – 6 Times (scan every 4hrs)
  • Yeniden yükleme bağlantılarını göster – Açık

Trafik İzle

Trafik İzleme seçenekleri

  • Enable Traffic Logger – Açık
  • Trafik günlüğü dışlamaları
    • WP CRON – Açık
    • Arama Motorları– Açık
    • Uptime Monitoring Services – Açık
  • Özel Dışlamalar – Olduğu gibi bırakın
  • Otomatik bitiş temizliği – 30
  • Maksimum günlük uzunluğu – 1000

Brute Force Traffic Rate Limiting

  • Enable Rate Limiting – Açık
  • Max Request Limit – 120
  • Request Limit Time Interval – 300

Güvenlik Duvarı

Güvenlik Duvarı Engelleme Seçenekleri

  • Çerezleri İçerir – Açık
  • Dizin Dolaşımları – Açık
  • SQL Sorgulamaları – Açık
  • WordPress Koşullar – Açık
  • Alan Kesme – Açık
  • PHP Kodu – Açık
  • Exe Dosya Yükleme – Açık
  • Temel Şemalar – Kapalı
  • Agresif Tarama – Kapalı

Güvenlik Duvarı Blok Yanıtı Seçimi

  • Blok Yanıt – Die
  • E-posta Raporu Gönder – Kapalı

Whitelists – Pages, Parameters, and Users that bypass the Firewall

  • Beyaz Liste Parametreleri – Ön tanımlı bırakın
  • Yoksay Yöneticiler – Kapalı

Oturum açma koruma

Brute Force Oturum Açma Koruması

  • Koruma konumları
    • Login – Açık
    • Register – Açık
    • Lost Password – Açık
    • Checkout (WooCommerce) – Açık
  • Bekeleme süresi – 30
  • Bot Koruması – Açık
  • CAPTCHA – Hafif Tema
  • AntiBot Forms – Olduğu gibi bırakın

E-posta iki-faktörlü kimlik doğrulaması

  • Etkin E-posta kimlik doğrulama – Açık
  • Zorlamak – E-posta kimlik doğrulama
    • Aboneler – Açık
    • İçerik Sağlayıcılar – Açık
    • Yazarlar – Açık
    • Editörler – Açık
    • Yöneticiler – Açık
  • Allow Any User – Açık

Google Authenticator Iki faktörlü kimlik doğrulaması

  • Etkin Google Doğrulayıcı – Açık

Kullanıcı Yönetimi

Kullanıcı Oturum Yönetimi

  • Oturum Zaman Aşımı – 3
  • Boşta Zaman Aşımı – 48
  • Konuma Kilitle – Açık
  • Azami Eşzamanlı Oturum – 1

Kullanıcı Kaydı

  • Validate Email Addresses – Log Only
  • Email Validation Checks
    • Email Address Syntax – Açık
    • Domain Is Registered – Açık
    • Domain Resolve To IP – Açık
    • Domain MX – Açık
    • Disposable Email Service – Açık

Parola ilkeleri

  • Parola ilkelerini etkinleştir – Açık
  • Çalınmış parolaları engelle – Açık
  • Asgari uzunluk – 16
  • Asgari güç – Çok Güçlü
  • Varolan kullanıcılara uygula – Açık
  • Parola süre sonu – 90

Automatic And Manual User Suspension

  • Allow Manual User Suspension – Kapalı
  • Auto-Suspend Expired Passwords – Açık
  • Auto-Suspend Idle Users – 0
  • Auto-Suspend Idle User Roles – Ön tanımlı bırakın

Yönetici Giriş Bildirimi

  • Kullanıcı giriş bildirimi e-postası – Açık
  • Yönetici Giriş Bildirim E-posta – Ana Yönetici e-postasını giriniz

Önemsiz yorumlar

Otomatik Bot yorum SPAM Koruması

  • CAPTCHA – Hafif Tema
  • İstenmeyen Bot koruması – Açık
  • SPAM Action – Move To SPAM

İnsan Yorum SPAM Koruma Fitresi

  • İnsan SPAM Filtresi – Açık
  • SPAM Action – Move To SPAM

Common Settings For All SPAM Scanning

  • Trusted Commenter Minimum – 10
  • Trusted User Roles – Ön tanımlı bırakın

Reporting

Report Frequencies

  • Alert Frequency – Daily
  • Info Frequency – Monthly

Otomatik Güncellemeler

WordPress Bileşenleri İçin Otomatik Güncelleme

  • Tümünü Devre Dışı Bırak – Kapalı
  • WordPress Çekirdek Güncellemeleri – Major and Minor Versions
  • Eklentiler – Açık
  • Temalar – Açık

Otomatik güncelleme seçenekleri

  • Güncelleme gecikmesi – 5
  • Ekleti Oto Güncelleme – As Soon As Possible
  • E-postaya Rapor Gönder – Açık
  • Rapor E-posta Adresi – Ana yönetici e-posta adresi

HTTP Başlıkları

Gelişmiş güvenlik başlıkları

  • İframes engelle – On: Block All iFrames
  • XSS koruma – Açık
  • MIME algılaması engelleme – Açık
  • Yönlendirme Politikası – No Referrer When Downgrade

İçerik güvenlik ilkesi

  • Etkin CSP – Kapalı
  • Kendi – Açık
  • Satır içi öğeler – Açık
  • Katıştırılmış veri – Açık
  • Eval () izin ver – Kapalı
  • HTTPS – Kapalı
  • İzin verilen sunucular – Varsa ekleyin
  • Manual Rules – Varsa ekleyin

WP Lockdown

API & XML-RPC

  • Devre dışı XML-RPC – Açık
  • Anonim REST API’sı – Açık

İzinler ve Erişim Seçenekleri

  • Dosya Düzenleme Devre Dışı – Açık
  • SSL Yöneticiye Zorla – Açık

WordPress Bilinmezlik Seçenekleri

  • Kullanıcı Adı Yemleme Blok – Açık
  • Clean WP Files – Açık
  • WP Jeneratör Etiketi – Açık

Comms

SureSend Email

  • SureSend Emails – 2FA Login Codes (admins only)

Wordpress’te Replytocom Bağlantıları Nasıl Düzeltilir?

Wordpres ile ilgili konulardan devam ettiğimiz şu sıralar, SEO ve URL yapısında kullanmak için bir ipucu vermeden edemeyeceğim, özellikle yapılan yorumlarda bağlantı sonlarına eklenen ?replytocom google tarafında arama sonuçlarında çıkabiliyor. Şimdi buna engel olacağız.

Aşağıdaki kod parçacığını temanızda yer alan functions.php içerisine ekleyiniz.

function removeReplytocomRedirect() {
  global $post;

  if ( ! empty( $post ) && isset( $_GET['replytocom'] ) && is_singular() ) {
    $post_url     = get_permalink( $post->ID );
    $comment_id   = sanitize_text_field( $_GET['replytocom'] );
    $query_string = remove_query_arg( 'replytocom', sanitize_text_field( $_SERVER['QUERY_STRING'] ) );

    if ( ! empty( $query_string ) ) {
      $post_url .= '?' . $query_string;
    }
    $post_url .= '#comment-' . $comment_id;

    wp_safe_redirect( $post_url, 301 );
    die();
  }

  return false;
}

function removeReplytocomLink( $link ) {
  return preg_replace( '`href=(["\'])(?:.*(?:\?|&|&)replytocom=(\d+)#respond)`', 'href=$1#comment-$2', $link );
}

add_action( 'template_redirect', 'removeReplytocomRedirect');
add_filter( 'comment_reply_link', 'removeReplytocomLink' );

Wordpress’te “wp-login” Hata Mesajları Nasıl Değiştirilir?

Güvenlik önlemi olarak wordpress kullanan web sitelerinde mümkünse hata mesajlarının özelleştirilmesi istenir, bu noktada yapılması gereken çok basit olmakla birlikte saldırılardan sizi koruma noktasında etkili olabilir.

Aşağıdaki kod parçacığını temanızda yer alan functions.php içerisine ekleyiniz.

function changeLoginErrors($errors)
{
  if( !in_array($GLOBALS['pagenow'], array('wp-login.php')) ) {
    return $errors;
  }

  return '<strong>ERROR</strong>: Wrong login or password';
}
add_filter('login_errors', 'changeLoginErrors');

Wordpress’te REST API Nasıl Devre Dışı Bırakılır?

Bilindiği üzere Wordpress yakın bir tarihte REST API desteğini getirerek pek çok uygulamaya bu yolla destek sağladı ve Gutenberg gibi güzel editörlerin karşımıza çıkmasına sebep oldu

Ancak dışarıdan direk erişilebilir olan bu API bizi istenmeyen durumlara sokabilir, bunu bildiğimiz için dış dünyaya kapatarak sadece admin tarafından kullanılmasını sağlamalıyız,

Aşağıdaki kod parçacığını temanızda yer alan functions.php içerisine ekleyiniz.

function disable_wp_rest_api($access) {
	if (!is_user_logged_in()) {
		
		$message = apply_filters('disable_wp_rest_api_error', __('REST API restricted to authenticated users.', 'disable-wp-rest-api'));
		
		return new WP_Error('rest_login_required', $message, array('status' => rest_authorization_required_code()));
		
	}
	return $access;
}
add_filter('rest_authentication_errors', 'disable_wp_rest_api');

Wordpress’te Görsellere Otomatik Alt Etiketi Ekleme

Wordpress blogunuz var ve görsellere daha öncesinde alt etiketi eklemediniz ve SEO açısından dara düştüyseniz bu kod sizin açınızdan hayati öneme sahip olacağını düşünüyorum.

Bu kod bloğu sayesinde görsellerinizin tamamına alt etiketini otomatik ekleyebilirsiniz, direk olarak makalenizin başlığı ile ilişkilendirilecek ve SEO açısından sıkıntı yaşamayacaksınız.

function images_alt_autocomplete( $content ) {
  global $post;

  if ( empty( $post ) ) {
    return $content;
  }

  $old_content = $content;

  preg_match_all( '/<img[^>]+>/', $content, $images );

  if ( ! is_null( $images ) ) {
    foreach ( $images[0] as $index => $value ) {
      if ( ! preg_match( '/alt=/', $value ) ) {
        $new_img = str_replace( '<img', '<img alt="' . esc_attr( $post->post_title ) . '"', $images[0][ $index ] );
        $content = str_replace( $images[0][ $index ], $new_img, $content );
      } else if ( preg_match( '/alt=["\']\s?["\']/', $value ) ) {
        $new_img = preg_replace( '/alt=["\']\s?["\']/', 'alt="' . esc_attr( $post->post_title ) . '"', $images[0][ $index ] );
        $content = str_replace( $images[0][ $index ], $new_img, $content );
      }
    }
  }

  if ( empty( $content ) ) {
    return $old_content;
  }

  return $content;
}
add_filter( 'the_content', 'images_alt_autocomplete', 9999 );

Wordpress’te Emojiler Nasıl Devre Dışı Bırakılır?

Wordpress blogunuzda aktif olarak kullandığınız herhangi bir emoji bulunmuyorsa veya kullanmak istemiyorsanız. Bu özelliği kapatmanızı özellikle öneririm,

Düzenlemeyi yaptığınız andan itibaren HTTP istekleri düşecek ve kullanılmayan bir JS dosyasıda ortadan kalkmış olacak.

Aşağıdaki kod parçacığını temanızda yer alan functions.php içerisine ekleyiniz.

// Disable Wordpress Emoji
function disable_wp_emojicons() {
  remove_action( 'admin_print_styles', 'print_emoji_styles' );
  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_filter( 'wp_mail', 'wp_staticize_emoji_for_email' );
  remove_filter( 'the_content_feed', 'wp_staticize_emoji' );
  remove_filter( 'comment_text_rss', 'wp_staticize_emoji' );
  add_filter( 'tiny_mce_plugins', 'disable_emojicons_tinymces' );
  add_filter( 'wp_resource_hints', 'disable_emojis_remove_dns_prefetchs', 10, 2 );
}
add_action( 'init', 'disable_wp_emojicons' );

function disable_emojicons_tinymces( $plugins ) {
  if ( is_array( $plugins ) ) {
    return array_diff( $plugins, array( 'wpemoji' ) );
  } else {
    return array();
  }
}

function disable_emojis_remove_dns_prefetchs( $urls, $relation_type ) {
  if ( 'dns-prefetch' == $relation_type ) {
  $emoji_svg_url = apply_filters( 'emoji_svg_url', 'https://s.w.org/images/core/emoji/2/svg/' );
  $urls = array_diff( $urls, array( $emoji_svg_url ) );
}
  return $urls;
}

Bu değişiklikten hemen sonra sitenizde yer alan önbelleği temizlemeyi unutmayınız.

Wordpress’de Özelleştirilmiş Önizleme Linki Nasıl Oluşturulur?

Wordpress üzerinde Gutenberg kullanan benim gibi arkadaşlar kullandıkları preview linkini cache kurallarına göre özelleştirmek isteyebilirler, bu noktada aşağıdaki gibi functions.php dosyasında yapılacak bir değişiklik ile linki istediğiniz şekilde düzenleyebilme imkanınız mümkün

Zaman damgası eklemeyi unutmadık ve gereken kod şu şekilde oldu

function fix_preview_link_on_draft() {
  echo '<script type="text/javascript">
    jQuery(document).ready(function () {
      const checkPreviewInterval = setInterval(checkPreview, 1000);
      function checkPreview() {
        const editorPreviewButton = jQuery(".edit-post-header-preview__button-external");
        const editorPostSaveDraft = jQuery(".editor-post-save-draft");
        if (editorPostSaveDraft.length && editorPreviewButton.length && editorPreviewButton.attr("href") !== "' . get_preview_post_link() . '&no-cache=' . time() . '" ) {
          editorPreviewButton.attr("href", "' . get_preview_post_link() . '&no-cache=' . time() . '");
          editorPreviewButton.off();
          editorPreviewButton.click(false);
          editorPreviewButton.on("click", function() {
            editorPostSaveDraft.click();
            setTimeout(function() { 
              const win = window.open("' . get_preview_post_link() . '&no-cache=' . time() .'", "_blank");
              if (win) {
                win.focus();
              }
            }, 1000);
          });
        }
      }
    });
  </script>';
}
add_action('admin_footer', 'fix_preview_link_on_draft');

Bundan sonra admin panelinde cache silmeyi unutmayın, daha sonrasında istediğiniz gibi linkleriniz oluşmaya başlayacak.

Wordpress’de Kullanılmayan Eklenti Ayarlarının Veritabanından Kaldırılması

Silmek isteiğimiz ayarlar için önce bütün kayıtlara bakmanız gerekebilir, bunun için

SELECT * FROM tkmyuwul_options

Ardından gözünüze kestirdiğiniz silinecek ayar için SQL komutunu hazırlıyoruz. Böylelikle bahsi geçen ayarı kalıcı olarak tablodan uçuruyoruz.

DELETE FROM tkmyuwul_options WHERE option_name LIKE "icwp_%"

Ben şöyle bir SQL hazırladım, kullanmayı bıraktığım bütün pluginlerin ayarlarını böylelikle kaldırdım.

DELETE FROM tkmyuwul_options WHERE option_name LIKE "crayon_%";
DELETE FROM tkmyuwul_options WHERE option_name LIKE "icwp_%";
DELETE FROM tkmyuwul_options WHERE option_name LIKE "psp_%";
DELETE FROM tkmyuwul_options WHERE option_name LIKE "wordfence_%";
DELETE FROM tkmyuwul_options WHERE option_name LIKE "woocommerce_%";
DELETE FROM tkmyuwul_options WHERE option_name LIKE "adblocker_%";
DELETE FROM tkmyuwul_options WHERE option_name LIKE "tinypng_%";
DELETE FROM tkmyuwul_options WHERE option_name LIKE "monsterinsights_%";
DELETE FROM tkmyuwul_options WHERE option_name LIKE "pvb_%";
DELETE FROM tkmyuwul_options WHERE option_name LIKE "boldgrid%";
DELETE FROM tkmyuwul_options WHERE option_name LIKE "responsive_lightbox%";
DELETE FROM tkmyuwul_options WHERE option_name LIKE "shift8%";
DELETE FROM tkmyuwul_options WHERE option_name LIKE "githuber%";
DELETE FROM tkmyuwul_options WHERE option_name LIKE "duplicate_post%";
DELETE FROM tkmyuwul_options WHERE option_name LIKE "hcaptcha%";
DELETE FROM tkmyuwul_options WHERE option_name LIKE "shield_mod%";
DELETE FROM tkmyuwul_options WHERE option_name LIKE "ninja_forms%";
DELETE FROM tkmyuwul_options WHERE option_name LIKE "ht_%";
DELETE FROM tkmyuwul_options WHERE option_name LIKE "wp-optimize%";
DELETE FROM tkmyuwul_options WHERE option_name LIKE "updraft_%";
DELETE FROM tkmyuwul_options WHERE option_name LIKE "%\\_transient\\_%";