トラックバックとピングバックを有効にしたい。マルチサイトインストール内のすべてのサイトのすべての既存の投稿とページでそれらを無効にする方法はありますか?次に、既存の各サイトの設定でトラックバックとピングバックを許可しないようにオプションを設定しますか。
このコードはローカルテストMultisiteでテストされています。大丈夫に思えるが、マイナーな不具合が見つかりました。
- 実行するとすべてのドラフト/保留中の投稿がリストページから消えますが、更新後に再び表示されます。理由はわかりません.
/*
* Turn off trackback/pingbacks and comments on all existing multisite sites
*
* Important: Run Only Once, visit any admin page and delete/disable the hook
*
*/
add_action('admin_init','wpse_55209_run_only_once');
function wpse_55209_run_only_once()
{
global $wpdb;
$blogs = $wpdb->get_results("
SELECT blog_id
FROM {$wpdb->blogs}
WHERE site_id = '{$wpdb->siteid}'
AND spam = '0'
AND deleted = '0'
AND archived = '0'
AND mature = '0'
AND public = '1'
");
foreach ($blogs as $blog)
{
update_blog_option($blog->blog_id, 'default_ping_status', 'closed');
update_blog_option($blog->blog_id, 'default_pingback_flag', 'closed');
update_blog_option($blog->blog_id, 'default_comment_status', 'closed');
switch_to_blog( $blog->blog_id );
$wpdb->set_blog_id($blog->blog_id);
$allposts = $wpdb->get_results("SELECT ID FROM $wpdb->posts WHERE post_status != 'inherit'" );
foreach( $allposts as $pt )
{
$my_post = array();
$my_post['ID'] = $pt->ID;
$my_post['comment_status'] = 'closed';
$my_post['ping_status'] = 'closed';
wp_update_post( $my_post );
}
}
}