Şimdi de Wordpresste Binlerce Etiketi Toplu Silme Eklentisi Var mı? sorusuna yanıt verip r10 üyerlerine katkıda bulunmak istedim.
Aşağıdaki kodu bir .php dosyası olarak kaydedin (örneğin, toplu-etiket-silici.php olarak adlandırabilirsiniz). Dosyayı WordPress wp-content/plugins klasörüne ekleyin ve eklentiyi WordPress'ten etkinleştirin.
<?php
/*
Plugin Name: Toplu Etiket Silici
Description: WordPress'te etiketleri topluca silmek için "Hepsini Seç" özelliğine sahip basit bir eklenti.
Version: 1.1
Author: R10.net TahsinCetinkaya
*/
if (!defined('ABSPATH')) {
exit; // Güvenlik için doğrudan erişimi engelle
}
// Admin menüsüne eklentiyi ekleyelim
add_action('admin_menu', 'toplu_etiket_silici_menu');
function toplu_etiket_silici_menu() {
add_submenu_page(
'tools.php', // "Araçlar" menüsünün altına ekler
'Toplu Etiket Silici',
'Toplu Etiket Silici',
'manage_options',
'toplu-etiket-silici',
'toplu_etiket_silici_arayuz'
);
}
function toplu_etiket_silici_arayuz() {
// Form gönderildiyse etiketi silelim
if (isset($_POST['etiketler']) && is_array($_POST['etiketler'])) {
foreach ($_POST['etiketler'] as $etiket_id) {
wp_delete_term((int) $etiket_id, 'post_tag');
}
echo '<div class="updated"><p>Seçilen etiketler başarıyla silindi.</p></div>';
}
// Tüm etiketleri alalım
$etiketler = get_terms(array(
'taxonomy' => 'post_tag',
'hide_empty' => false,
));
echo '<div class="wrap">';
echo '<h1>Toplu Etiket Silici</h1>';
echo '<form method="post" id="toplu-etiket-silici-form">';
echo '<table class="form-table">';
// Hepsini seç kutusu
echo '<tr>';
echo '<th><input type="checkbox" id="hepsini-sec"></th>';
echo '<td><strong>Hepsini Seç</strong></td>';
echo '</tr>';
// Etiketleri listeleyelim
foreach ($etiketler as $etiket) {
echo '<tr>';
echo '<th><input type="checkbox" name="etiketler[]" value="' . esc_attr($etiket->term_id) . '" class="etiket-checkbox"></th>';
echo '<td>' . esc_html($etiket->name) . '</td>';
echo '</tr>';
}
echo '</table>';
echo '<p><input type="submit" value="Seçilen Etiketleri Sil" class="button button-primary"></p>';
echo '</form>';
echo '</div>';
// JavaScript ile hepsini seç/deselect fonksiyonunu ekleyelim
?>
<script type="text/javascript">
document.getElementById('hepsini-sec').addEventListener('change', function() {
var checkboxes = document.querySelectorAll('.etiket-checkbox');
for (var i = 0; i < checkboxes.length; i++) {
checkboxes[i].checked = this.checked;
}
});
</script>
<?php
}- Admin Menüsüne Ekleme: tools.php menüsünün altına "Toplu Etiket Silici" adında bir menü eklenir.
- Etiketleri Listeleme ve Seçme: Etiketler, bir tablo şeklinde listelenir. Her bir etiket için bir checkbox bulunur.
- Etiketleri Silme: Form gönderildiğinde seçili etiketlerin term_id değerleri alınır ve wp_delete_term fonksiyonu ile silinir.