Yazılımcı olmanın birinci kuralı tembellik mi bilmiyorum ama tanıdığım tüm yazılımcılar tembel insanlar. Ben de bu gruba dahil olduğum için, hayatta yaptığım şeyleri de otomatize etmeye çalışıyorum.

WordPress kullanan insanların bir çoğu seo işlemi için YOAST ya da All in One Seo kullanıyorlar. Ben All in One Seo Pack kullanıyorum ve çok memnunum. Seo paketinin genel ayarlarını yaptığımız zaman iş tam olarak bitmiyor. Girdiğimiz her içerik de Seo ayarları için resimdeki alanları da doldurmamız gerekiyor.

all-in-one-seo-ayarlari
All in One Seo İçerik Ayarları

Ben bu ayarları her seferinde doldurmaya üşendim ve bu eklentinin hangi işlemleri yaptığını araştırdım. Sonuçta çok basit ekleme işlemi yaptığını görünce bunu otomatik hale getirmeye karar verdim.

Bu yüzden veri tabanında 3 tane prosedür yazdım. Bu prosedürleri her 1 saatte çalışacak şekilde “Olaylar” bölümüne ekledim. Ancak burada şöyle bir sorunla karşılaştım. Bir çoğumuzun yaptığı gibi “Paylaşımlı Sunucu” kullanıyorum ve kullandığım hosting firması(Natro), bu özelliği paylaşımlı sunucularda kullanamayacağımı söyledi. Bende basit ve yeni bir yöntem düşündüm. Siteye yeni bir sayfa ekleyip, bu prosedürleri oradan çağırmak. Yaptığım işlemi 2 gündür kullanıyorum ve şimdiden daha basit yolları için bakınmaya başladım bile. Onu da yapınca paylaşırım.

Prosedür 1. Anahtar Kelimeler

Anahtar kelimeleri içeriğe girdiğiniz etiketlerden alır ve keywords alanına (,) ile ekler.

DELIMITER //
create procedure procedure_name()
BEGIN
declare current_streak int;
DECLARE p_id varchar(255);
DECLARE m_key varchar(255);
DECLARE m_val varchar(255);

declare cur cursor for select post_id,meta_key,meta_value from (SELECT a.object_id post_id,’_aioseop_keywords’ meta_key,GROUP_CONCAT(c.name) meta_value
FROM wp_term_relationships a LEFT JOIN wp_term_taxonomy b ON a.term_taxonomy_id = b.term_taxonomy_id
LEFT JOIN wp_terms c ON a.term_taxonomy_id = c.term_id
LEFT JOIN wp_posts d ON a.object_id = d.id
WHERE d.post_status = ‘publish’
and b.taxonomy = ‘post_tag’
group by a.object_id
ORDER BY a.object_id DESC
) as t1
where not exists (select 1 from wp_postmeta where post_id=t1.post_id and meta_key=’_aioseop_keywords’);

declare cur1 cursor for select max(meta_id) from wp_postmeta;

open cur1;
fetch cur1 into current_streak;
open cur;
start_loop: loop
fetch cur into p_id,m_key,m_val;
set current_streak = current_streak +1;
insert into wp_postmeta (meta_id,post_id,meta_key,meta_value) values (current_streak,p_id,m_key,m_val);
end loop;
close cur;
END //
DELIMITER ;

Prosedür 2. Açıklama

Açıklama alanı 160 karakteri geçmemesi gerekiyor. substr(post_content,41,160) bu komut onun için eklendi. Açıklama kısmı içeriğin ilk paragrafından alınarak ekleniyor. Burada 41. karakterden başlamasının sebebi ise, site de göreceğiniz üzere ilk paragrafların kalın harflerle yazılıyor ve iki yana yaslanmış şekilde olması.Bu özelliği eklediğiniz zaman içerik aslında şu komutlarla başlıyor (<p style=”text-align: justify;”><strong>) Sitemizde bir kurallar bütünü var ve bu yüzden ben bu şekilde yazdım ancak kendi sisteminize bunu uyarlayabilirsiniz.

DELIMITER //
create procedure procedure_name()
BEGIN
declare current_streak int;
DECLARE p_id varchar(255);
DECLARE m_key varchar(255);
DECLARE m_val varchar(255);

declare cur cursor for select post_id,meta_key,meta_value from (SELECT a.object_id post_id,’_aioseop_description’ meta_key,
substr(post_content,41,160) meta_value
FROM wp_term_relationships a LEFT JOIN wp_term_taxonomy b ON a.term_taxonomy_id = b.term_taxonomy_id
LEFT JOIN wp_terms c ON a.term_taxonomy_id = c.term_id
LEFT JOIN wp_posts d ON a.object_id = d.id
WHERE d.post_status = ‘publish’
and b.taxonomy = ‘post_tag’
group by a.object_id
ORDER BY `a`.`object_id` DESC
) as t1
where not exists (select 1 from wp_postmeta where post_id=t1.post_id and meta_key=’_aioseop_description’);

declare cur1 cursor for select max(meta_id) from wp_postmeta;

open cur1;
fetch cur1 into current_streak;
open cur;
start_loop: loop
fetch cur into p_id,m_key,m_val;
set current_streak = current_streak +1;
insert into wp_postmeta (meta_id,post_id,meta_key,meta_value) values (current_streak,p_id,m_key,m_val);
end loop;
close cur;
END //
DELIMITER ;

Prosedür 3. Başlık

Seo için başlığı da içeriğin başlığından aldım. Seo için 60 karakteri aşmaması için substr(post_title,1,60) komutunu kullandım. Burayı kendinize göre uyarlayabilirsiniz.

DELIMITER //
create procedure procedure_name()
BEGIN
declare current_streak int;
DECLARE p_id varchar(255);
DECLARE m_key varchar(255);
DECLARE m_val varchar(255);

declare cur cursor for select post_id,meta_key,meta_value from (SELECT a.object_id post_id,’_aioseop_title’ meta_key,
substr(post_title,1,60) meta_value
FROM wp_term_relationships a LEFT JOIN wp_term_taxonomy b ON a.term_taxonomy_id = b.term_taxonomy_id
LEFT JOIN wp_terms c ON a.term_taxonomy_id = c.term_id
LEFT JOIN wp_posts d ON a.object_id = d.id
WHERE d.post_status = ‘publish’
and b.taxonomy = ‘post_tag’
group by a.object_id
ORDER BY `a`.`object_id` DESC
) as t1
where not exists (select 1 from wp_postmeta where post_id=t1.post_id and meta_key=’_aioseop_title’);

declare cur1 cursor for select max(meta_id) from wp_postmeta;

open cur1;
fetch cur1 into current_streak;
open cur;
start_loop: loop
fetch cur into p_id,m_key,m_val;
set current_streak = current_streak +1;
insert into wp_postmeta (meta_id,post_id,meta_key,meta_value) values (current_streak,p_id,m_key,m_val);
end loop;
close cur;
END //
DELIMITER ;

Bu prosedürleri, veri tabanında oluşturduktan sonra sıra bunları çağıracağımız php sayfasına geliyor. Ftp içinde public_html klasörü altına bir php dosyası oluşturun
ve içine şu kodları ekleyin.

global $wpdb, $table_prefix;
if(!isset($wpdb))
{
require_once(‘wp-config.php’);
require_once(‘wp-includes/wp-db.php’);
}
$mydb = new wpdb(‘veritabanı kullanıcı adı’,’veritabanı şifresi’,’veritabanı adı’,’localhost’);
$rows = $mydb->get_results(“call keyword için oluşturduğunuz prosedür ismi”);
$rows1 = $mydb->get_results(“call başlık için oluşturduğunuz prosedür ismi”);
$rows2 = $mydb->get_results(“call açıklama için oluşturduğunuz prosedür ismi”);

Son işlem olarak da siteadi.com/phpadi.php şeklinde çağırdığınız da gerekli işlemleri tamamlayacak.

Soru, öneri ve görüşlerinizi yorum bölümüne bırakabilirsiniz.

2 YORUMLAR

  1. 3 yıldan beri All in one seo eklentisini kullandım memnundum ama Yoast SEO’yu da merak ediyordum ve geçiş yaptım 1 yılı geçti herhalde hayla kullanıyorum.

CEVAP VER