Глупо, я урезал стол своих сообщений, не думая о терминах отношений. Теперь у меня есть куча 404-х, потому что есть разрывные отношения. Можно ли перестроить таблицу с правильными сопряжениями?
Если ваше значение AUTO_INCREMENT
не было сброшено, и ваши новые сообщения будут по-прежнему иметь уникальный ID
и вы можете сделать следующее:
SELECT tr.*, p.ID FROM wp_term_relationships AS tr LEFT JOIN wp_posts AS p ON tr.object_id = p.ID WHERE p.ID is NULL;
чтобы определить, какие отношения являются сиротами, и использовать DELETE FROM
чтобы исправить это.
warning: Усечение wp_term_relationships удаляет все в этой таблице! если вы хотите только удалить отношения тегов, то убедитесь, что вы используете правильный sql.
После обрезания таблицы wp_term_relationships я использовал собственный скрипт для повторной пометки моих сообщений. Вы можете сделать что-то подобное:
$numposts = wp_count_posts(); $posts = get_posts(array('numberposts'=>(int)$numposts->publish)); foreach($posts as $post){ $tags = myCustomTaggingFunc($post); //this returns an array of tags wp_update_term($post->ID,$tags); }
довольно простой.