Maison  >  Article  >  Tutoriel CMS  >  Une brève analyse de la façon de résoudre le problème des identifiants d'articles discontinus dans WordPress (méthode parfaite)

Une brève analyse de la façon de résoudre le problème des identifiants d'articles discontinus dans WordPress (méthode parfaite)

青灯夜游
青灯夜游avant
2023-03-15 20:34:122045parcourir

Comment résoudre le problème des identifiants d'articles discontinus dans WordPress ? L’article suivant vous expliquera comment WordPress peut parfaitement résoudre le problème des identifiants d’articles discontinus. J’espère qu’il vous sera utile !

Une brève analyse de la façon de résoudre le problème des identifiants d'articles discontinus dans WordPress (méthode parfaite)

De nombreux blogs WordPress utilisent des identifiants d'articles dans leurs liens fixes, mais WordPress a causé le problème des identifiants d'articles discontinus pour diverses raisons. Les blogueurs posent souvent des questions sur le forum pour résoudre ce problème, mais peu peuvent obtenir une réponse satisfaisante. réponse de leur part.

Aujourd'hui, je vais vous expliquer comment résoudre parfaitement ce problème. Dire que c'est parfait est peut-être un peu trop. Les versions après WordPress 3.0 auront un brouillon automatique. Chaque article publié occupera actuellement deux numéros d'identification. Il n'y a aucun moyen de le désactiver. Veuillez continuer à lire pour voir comment résoudre dans une certaine mesure le problème des identifiants d'articles discontinus.

Bien sûr, si vous n'utilisez pas d'identifiant de publication dans votre permalien, alors l'identifiant de publication est transparent pour vous et n'a pas d'importance. Même si l'identifiant de la publication est utilisé dans le permalien, si vous ne vous en souciez pas particulièrement, même la discontinuité n'a pas d'importance, et cet article n'aura pas beaucoup de sens pour vous.

1. Désactiver les révisions d'articles

La soi-disant révision d'article signifie que chaque fois que vous modifiez un article, la version de l'article sera automatiquement enregistrée pour vous avant la modification. Le terme professionnel est appelé contrôle de version, ce qui garantit que le. L'article est modifié par erreur. Dans certains cas, le contenu précédent peut être restauré. Ceci est très utile pour maintenir les documents Wiki, mais comme notre petit blog, cela ne semble pas être d'une grande utilité. De plus, cette révision occupe un identifiant dans. la base de données, ce qui provoque également l'un des problèmes liés aux identifiants d'articles discontinus. Pour désactiver les révisions d'articles, vous pouvez ajouter dans le fichier wp-config.php :

define('WP_POST_REVISIONS', false);

Vous pouvez également ajouter le code PHP suivant dans les fonctions.php du thème actuel :

// 禁用修订版本,2015年3月5日更新
add_filter( 'wp_revisions_to_keep', 'specs_wp_revisions_to_keep', 10, 2 );
function specs_wp_revisions_to_keep( $num, $post ) {
   if ( 'post_type' == $post->post_type )
      $num = 0;

   return $num;
}

2. Supprimer les révisions d'articles

Après avoir désactivé les révisions d'articles, les révisions d'articles précédemment créées sont toujours stockées dans la base de données. Elles sont en réalité de peu d'utilité et occupent l'ID. Nous pouvons les supprimer. Quant à la façon de supprimer, vous pouvez exécuter l'instruction SQL suivante dans phpmyadmin (cela affectera l'article épinglé, à utiliser avec prudence ! Et faites une sauvegarde) :

DELETE a,b,c
FROM wp_posts a
LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id)
LEFT JOIN wp_postmeta c ON (a.ID = c.post_id)
WHERE a.post_type = 'revision';

3. Supprimez les pièces jointes inutiles

Je crois que beaucoup les blogueurs publient des articles. Certaines pièces jointes seront téléchargées/insérées en même temps, comme des images, des vidéos, de la musique, etc. Ces pièces jointes sont visibles dans l'arrière-plan de gestion de WordPress - médiathèque. Différents médias correspondent à différents articles. Mais vous devez noter que ces médias occupent également l'ID de l'article et qu'ils sont stockés dans la même table de base de données wp_posts que l'article. Si vous tenez particulièrement à ce que les identifiants des articles soient parfaitement continus, veuillez ne pas télécharger/insérer ces médias lors de la publication de l'article, et veuillez supprimer les médias précédemment téléchargés dans l'arrière-plan de gestion WordPress - médiathèque (notez que cette opération n'est pas juste suppression) et les fichiers que vous avez téléchargés seront supprimés), veuillez utiliser FTP pour télécharger à nouveau ces fichiers si nécessaire.

4. Désactivez l'enregistrement automatique

L'avantage de l'enregistrement automatique est que lorsque vous modifiez un article, le système enregistre automatiquement l'article modifié pour vous à intervalles courts pour éviter que la page Web ne se ferme soudainement et ne provoque des milliers de messages. les mots à écrire auparavant. Tout d’un coup, c’était parti. L'inconvénient est que chaque article aura un enregistrement automatiquement enregistré, qui occupe également un identifiant d'article, ce qui est l'une des raisons pour lesquelles les identifiants d'article ne sont pas consécutifs. Si vous n'avez pas besoin de cette fonction, vous pouvez ajouter le code suivant au. function.php du thème actuel :

// 禁用自动保存,所以编辑长文章前请注意手动保存。
add_action( 'admin_print_scripts', create_function( '$a', "wp_deregister_script('autosave');" ) );

5. Réorganiser les identifiants d'articles discontinus

Méthode 1 : Vous pouvez ajouter le code PHP suivant au function.php du thème actuel, de sorte que si vous postez simplement des articles, pas de pages, pas de menus, si vous ne téléchargez pas de média, en gros, les identifiants d'articles suivants seront consécutifs, et les identifiants d'articles précédemment publiés ne seront pas modifiés et n'affecteront pas le référencement :

// WordPress 3.8测试有效
function keep_id_continuous(){
  global $wpdb;

  // 删掉自动草稿和修订版
  $wpdb->query("DELETE FROM `$wpdb->posts` WHERE `post_status` = 'auto-draft' OR `post_type` = 'revision'");

  // 自增值小于现有最大ID,MySQL会自动设置正确的自增值
  $wpdb->query("ALTER TABLE `$wpdb->posts` AUTO_INCREMENT = 1");  
}

add_filter( 'load-post-new.php', 'keep_id_continuous' );
add_filter( 'load-media-new.php', 'keep_id_continuous' );
add_filter( 'load-nav-menus.php', 'keep_id_continuous' );

Si vous utilisez des fonctions telles que des articles épinglés, des menus et des pages parent-enfant, la méthode suivante ne fonctionnera pas :

Méthode 2 : Après avoir terminé les étapes ci-dessus, vous pouvez essentiellement garantir que les identifiants des articles publiés dans l'avenir sera continu, mais cela a déjà été fait auparavant. Les identifiants des articles publiés sont toujours dans le chaos et ils doivent être réorganisés pour garantir que les identifiants sont continus. J'ai écrit un script PHP. Vous pouvez le télécharger à partir de l'URL suivante. Après le téléchargement, ouvrez-le avec un éditeur de texte selon les instructions du début. Ensuite, téléchargez le fichier PHP sur votre espace de blog. voir OK, vous pouvez accéder à phpmyadmin pour vérifier si les identifiants de la table wp_posts sont consécutifs. Encore une fois, veuillez sauvegarder votre base de données avant de commencer. (Si vous utilisez l'identifiant de publication comme lien fixe, cela peut modifier l'URL de tous les articles, ce qui affectera l'inclusion dans les moteurs de recherche ; si vous utilisez un plug-in pour créer une nouvelle table de base de données, comme un plug-in de vote, etc. ., des problèmes surviendront également ; si une page avec une relation parent-enfant a été créée dans votre blog, si vous exécutez le script suivant, cette relation sera perdue Veuillez l'utiliser avec prudence !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer