WordPress の不連続な記事 ID の問題を解決するにはどうすればよいですか?次の記事では、WordPress が不連続な記事 ID の問題を完全に解決する方法を紹介します。お役に立てば幸いです。
固定リンクに記事IDを使用しているWordPressブログはたくさんありますが、WordPressではさまざまな理由から記事IDが不連続になるという問題が発生しており、この問題を解決するためにフォーラムで質問するブロガーがよくいますが、解決できる人はほとんどいません。彼らから満足のいく答えが得られます。
今日は、この問題を完璧に解決する方法を説明します。WordPress 3.0 以降のバージョンには、現在も 2 つの ID 番号が必要です。これを無効にする方法はありません。記事IDの不連続問題をある程度解決する方法については、読み進めてください。
もちろん、パーマリンクで投稿 ID を使用しない場合、投稿 ID はユーザーにとって透過的であり、問題ありません。パーマリンクに投稿IDが使われていても、特に気にしないのであれば、その切れ目すら関係なく、この記事もあまり意味がありません。
1. 記事のリビジョンを無効にする
いわゆる記事のリビジョンとは、記事を変更するたびに、変更前の記事のバージョンが自動的に保存されることを意味します。専門用語ではバージョン管理と呼ばれます。場合によっては、記事を誤って変更してしまった場合、以前の内容を復元することができます。これは Wiki ドキュメントを維持する上で非常に役立ちますが、このリビジョンはあまり役に立たないようです。これも、不連続な記事 ID に関する問題の 1 つを引き起こします。記事のリビジョンを無効にするには、wp-config.php ファイルに追加できます:
define('WP_POST_REVISIONS', false);
現在のテーマの function.php に次の PHP コードを追加することもできます:
// 禁用修订版本,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. 記事のリビジョンを削除します。
記事のリビジョンを無効にしても、以前に作成された記事のリビジョンはデータベースに保存されたままですが、実際にはほとんど役に立たず、削除することができます。削除方法については、phpmyadmin で次の SQL ステートメントを実行できます (固定された記事に影響するため、慎重に使用してください。バックアップを作成してください):
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. 不要な添付ファイルを削除します
多くの添付ファイルがあると思いますブロガーは記事を公開しています。画像、ビデオ、音楽などの一部の添付ファイルは同時にアップロード/挿入されます。これらの添付ファイルは、WordPress 管理のバックグラウンド - メディア ライブラリで確認できます。異なるメディアが異なる記事に対応します。ただし、これらのメディアも記事 ID を占有し、記事と同じデータベース テーブル wp_posts に保存されることに注意してください。特に記事のIDが完全に連続していることを求める場合は、記事公開時にこれらのメディアをアップロード/挿入せず、WordPress管理のバックグラウンド-メディアライブラリで以前にアップロードしたメディアを削除してください(この操作は機能しませんのでご注意ください)削除するだけです) レコード、アップロードしたファイルは削除されます)、必要に応じて FTP を使用してこれらのファイルを再アップロードしてください。
4. 自動保存を無効にする
自動保存の利点は、記事を編集すると、Web ページが突然閉じられて何千ものエラーが発生するのを防ぐために、編集した記事が短時間ごとにシステムによって自動的に保存されることです。前に書く予定だった言葉が突然消えてしまいました。欠点は、各記事に自動的に保存されるレコードがあり、そのレコードが記事 ID を占有することです。これが、記事 ID が連続しない理由の 1 つです。この機能が必要ない場合は、次のコードをファイルに追加できます。現在のテーマのfunctions.php:
// 禁用自动保存,所以编辑长文章前请注意手动保存。 add_action( 'admin_print_scripts', create_function( '$a', "wp_deregister_script('autosave');" ) );
5. 不連続な記事IDを並べ替えます
方法1: 現在のテーマのfunctions.phpに次のPHPコードを追加します。ページを投稿しない、メニューを追加しない、メディアをアップロードしない場合、基本的に後続の記事IDは連続し、以前に公開された記事IDは変更されず、SEOに影響しません:
// 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' );
固定記事、メニュー、親子ページなどの機能を使用している場合、以下の方法は動作しません:
方法2: 上記の手順を完了すると、基本的には、公開されている記事のIDが保証されます。将来は連続的になるでしょうが、以前はすでに行われていました。公開された記事 ID は依然として混乱しているため、ID が連続的であることを確認するために再配置する必要があります。以下の URL から PHP スクリプトを作成しました。ダウンロード後、最初の手順に従ってデータベースの情報を編集し、ブログ スペースにアップロードします。 「OK」を参照してください。phpmyadmin に移動して、wp_posts テーブル内の ID が連続しているかどうかを確認できます。繰り返しますが、開始する前にデータベースをバックアップしてください。 (投稿 ID を固定リンクとして使用する場合、すべての記事の URL を変更する可能性があり、検索エンジンの包含に影響します。投票プラグインなどの新しいデータベース テーブルを作成するプラグインを使用する場合)などの問題も発生します。以下のスクリプトを実行すると、親子関係が失われますのでご注意ください。