yunusozen adlı üyeden alıntı: mesajı görüntüle
chatgpt ya da translate üzerinden kopyalayıp yapıştırdığınız içerikler, attrib yapmakta.. yani içeriğin html tarafını incelediğinizde data-start="" data-end="" tarzında saçma sapan attribler yüzünden siteler google'a yakalanıyor ve sıralama kaybediyor. bugün pm istediğim bir sitede de bu sorunu gördüm ve şöyle bir çözüm ürettim.

aşağıda vereceğim kodu, wordpresste aktif olan temanızın functions.php dosyasında uygun bir yere ekleyin (en altına olabilir).
bu kod wordpresste bir menü oluşturacak, menüye girdiğiniz zaman, yakala ve sil butonlarını göreceksiniz,
yakala butonu sitede yayınlanmış, taslak, pending vs durumundaki tüm yazılarda attrib arayacak, sil butonu ise bulduklarını silecek.
hemen altındaki input alanları ise anlık olarak attrib kaldırmaya yaramaktadır.

tüm sitelerinizde attrib kontrolü yapmanızda fayda var, bunu geliştirdikten sonra 5 sitemde bayağı attrib çıktı. hepsi de düşmüş olan siteler.......

bu konuyu bilerek bu kategoriye açtım hepiniz faydalanın diye, rica ederim

add_action('admin_menu', 'custom_attribute_cleaner_menu');
function custom_attribute_cleaner_menu(){
add_menu_page(
'Attribute Cleaner',
'Attribute Cleaner',
'manage_options',
'attribute-cleaner',
'attribute_cleaner_page_callback'
);
}

function attribute_cleaner_page_callback(){
?>
<div class="wrap">
<h1>Attribute Cleaner</h1>
<p>Bu araç, gönderilerdeki ChatGPT kaynaklı fazladan data, id ve class attribute’larını yakalayıp sayar veya temizler.</p>
<button id="yakala-btn" class="button button-primary">Yakala</button>
<button id="sil-btn" class="button button-secondary">Sil</button>
<div id="result" style="margin-top:20px;"></div>
<br><br>
<label for="code-input"><strong>Kod Giriş Alanı:</strong></label>
<textarea id="code-input" rows="8" cols="80" style="display:block;"></textarea>
<br>
<label for="code-output"><strong>Kod Çıkış Alanı:</strong></label>
<textarea id="code-output" rows="8" cols="80" style="display:block;" readonly></textarea>
</div>
<script type="text/javascript">
jQuery(document).ready(function($){
$('#yakala-btn').click(function(e){
e.preventDefault();
$('#result').html('İşlem yapılıyor...');
$.ajax({
url: ajaxurl,
type: 'POST',
data: {
action: 'yakala_data'
},
success: function(response){
$('#result').html(response);
}
});
});

$('#sil-btn').click(function(e){
e.preventDefault();
if(confirm('Bu işlem, tüm gönderilerdeki data, id ve class attribute’larını silecektir. Devam etmek istiyor musunuz?')){
$('#result').html('İşlem yapılıyor...');
$.ajax({
url: ajaxurl,
type: 'POST',
data: {
action: 'sil_data'
},
success: function(response){
$('#result').html(response);
}
});
}
});

$('#code-input').on('input', function(){
var originalCode = $(this).val();
var cleanedCode = originalCode.replace(/\sdata(?:-[\w]+)*="[^"]*"/gi, "");
$('#code-output').val(cleanedCode);
});
});
</script>
<?php
}

add_action('wp_ajax_yakala_data', 'yakala_data_callback');
function yakala_data_callback(){
$args = array(
'numberposts' => -1,
'post_type' => 'post',
'post_status' => 'any'
);
$posts = get_posts($args);
$total_count = 0;
foreach($posts as $post){
preg_match_all('/\bdata(?:-[a-zA-Z0-9_]+)*="[^"]*"/i', $post->post_content, $matches);
$count = count($matches[0]);
$total_count += $count;
}
echo 'Toplam data attribute sayısı: ' . $total_count;
wp_die();
}

add_action('wp_ajax_sil_data', 'sil_data_callback');
function sil_data_callback(){
$args = array(
'numberposts' => -1,
'post_type' => 'post',
'post_status' => 'any'
);
$posts = get_posts($args);
$total_replacements = 0;
foreach($posts as $post){
$content = $post->post_content;
$new_content = preg_replace('/\s(data(?:-[a-zA-Z0-9_]+)*|id|class)="[^"]*"/i', '', $content, -1, $count);
if($count > 0){
wp_update_post(array(
'ID' => $post->ID,
'post_content' => $new_content
));
$total_replacements += $count;
}
}
echo 'Toplam ' . $total_replacements . ' attribute kaldırıldı.';
wp_die();
}
Toplam 289 attribute kaldırıldı.
ellerine sağlık Hocam