Haibor は ID 管理の概念があり、クリーンでシンプルなものを好むため、新しいバージョンの WordPress の自動下書き保存機能には非常に不満があり、ログ ID の無駄が多くなり、ログ ID が不連続になります。この機能を廃止してください! !
まず状況を説明すると、ID の不連続は主に 3 つの機能によって引き起こされます。1 つは自動保存機能 Auto-Save、2 つ目は履歴バージョン Post Revisions、3 つ目は自動ドラフト機能 Auto-Draft! Wordpress のバージョンが異なると、解決策も異なります。対応するソリューションを選択してください。
wordpress 3.1 より前のバージョン (3.1 を除く):
1. wp-config.php ファイルを開き、「$table_prefix = 'wp_';」の前に次のコードを追加します。
定義('WP_POST_REVISIONS', false);
定義('AUTOSAVE_INTERVAL', false);
2. wp-adminpost-new.php と wp-adminpost.php の 2 つのファイルを見つけて開き、「wp_enqueue_script('autosave');」をコメント化するか削除します。
//wp_enqueue_script('自動保存');
3. wp-adminincludespost.php ファイルを見つけて開き、「if ($create_in_db) {」を見つけて、その前に次の行を追加します。
$create_in_db = false;
WordPress 3.1 以降のバージョン (3.1 を含む):
バージョン 3.1 以降、プログラムは自動ドラフト機能に変更を加えました。上記の方法の 3 番目のステップでは、バックグラウンドで記事を公開するときに操作権限がないことを示すメッセージが表示されます。
まず、上記の手順 1 と 2 に従って、自動保存機能と履歴バージョンのポスト リビジョン機能を無効化します。次に、自動ドラフト機能の無効化に取り組んでみましょう。
上記のメソッドの 3 番目のステップは無効であるため、$create_in_db = false コードを追加することはできませんが、[新しい記事を追加] をクリックする限り、この時点では正常に機能します。記事を編集してもしなくても、最後に「保存」をクリックするか、「下書きとして保存」をクリックしない限り(編集ページを直接閉じるなど)、プログラムはデフォルトでタイトルが付いた非表示の自動下書きログを自動的に追加します。 「Auto-Draft」およびステータス「auto-draft」。データベースからデータを抽出するには phpmyadmin のみを使用できます。したがって、良いブログのアイデアがない場合は、安易にクリックして新しい記事を追加しないでください。
かなり完璧な 2 つの解決策を以下に示します。基本的なコードは、コンピュータ上の「保留中」という名前のフォルダから取得されます。ソースが見つかりません。関係者、インターネット、および元の作成者に感謝します。ここでそれを整理して改善し、皆さんと共有します。この時点で、ID 管理以外のユーザーは下のコメントに直接ジャンプできます。 !
注: 以下に記載されている行数は、WordPress 3.2 バージョンに基づいています。
オプション 1: 非表示の自動ドラフトを、表示されるドラフト ログ ドラフトに変更します。
上記の手順 3 を参照して、wp-adminincludespost.php ファイルを見つけて開き、「if ($create_in_db) {」を見つけて、約 423 行を探します。
$post_id = wp_insert_post( array( 'post_title' => __( '自動ドラフト' ), 'post_type' => $post_type, 'post_status' => '自動ドラフト' ) );
上記のコードを次のように変更します。
$post_id = wp_insert_post( array( 'post_title' => __( '自動ドラフト' ), 'post_type' => $post_type, 'post_status' => 'ドラフト' ) );
ヒント: この解決策では、[新しい記事を追加] をクリックしたときに下書きが自動的に作成されるのを防ぐことはできませんが、このときに作成されるのは記事リストに表示される下書きログであり、クリックして編集できます。もちろん、新しい記事を追加するために複数回クリックすると、複数の下書きログが生成され、あまり良くありません (笑)。
オプション 2: 原則として、最も古い自動ドラフトを取得し、それを現在の記事として使用します。これにより、元の自動ドラフト機能に基づいて記事 ID の連続性が維持され、7 日前の自動ドラフトを削除する機能が削除されます。
さらに wp-adminincludespost.php ファイルを見つけて開き、「if ($create_in_db) {」を見つけて、行 418 ~ 427 を探します。
if ( $create_in_db ) {
// 7 日以上前の古い自動ドラフトをクリーンアップします
$old_posts = $wpdb->get_col( "SELECT ID FROM $wpdb->posts WHERE post_status = 'auto-draft' AND DATE_SUB( NOW(), INTERVAL 7 DAY ) > post_date" );// 7 日前の自動下書きを削除
foreach ( (配列) $old_posts as $delete )
wp_delete_post( $delete, true ); // 強制削除
$post_id = wp_insert_post( array( 'post_title' => __( '自動ドラフト' ), 'post_type' => $post_type, 'post_status' => '自動ドラフト' ) );
$post = get_post( $post_id );
if ( current_theme_supports( 'post-formats' ) && post_type_supports( $post->post_type, 'post-formats' ) && get_option( 'default_post_format' ) )
set_post_format( $post, get_option( 'default_post_format' ) );
} それ以外 {
と置き換えます
if ( $create_in_db ) {
global $current_user;//現在のログイン管理ユーザーを取得します
$post = $wpdb->get_row( "SELECT * FROM $wpdb->posts WHERE post_status = 'auto-draft' AND post_type = '$post_type' AND post_author = $current_user->ID ORDER BY ID ASC LIMIT 1" ); //最も早い自動ドラフトを取得する
if ( !$post ) {
$post_id = wp_insert_post( array( 'post_title' => __( '自動ドラフト' ), 'post_type' => $post_type, 'post_status' => '自動ドラフト' ) );
$post = get_post( $post_id );
}
if ( current_theme_supports( 'post-formats' ) && post_type_supports( $post->post_type, 'post-formats' ) && get_option( 'default_post_format' ) )
set_post_format( $post, get_option( 'default_post_format' ) );
} それ以外 {
オプション 2 の原理は上で説明されていますので、必要に応じてコードのコメントとともに読んでください。オプション 2 の解決策は、データベースに非表示の自動ドラフト ログがある場合、クリックして新しい記事を追加することです。新しい記事は自動的に生成されません。非表示の自動ドラフトの代わりに、現在の記事に必要なデータベース レコードとして最も古い非表示のドラフトが直接呼び出されます。同時に、ID の不連続性を避けるために、コード ステートメント「自動ドラフトを削除します。」 7日以上経過したもの」は削除されます。
子供用の靴が必要な場合は、席に座ってください。より良い提案や質問がある場合は、メッセージを残してください。
この記事は Nuodou のオリジナルです。転載する場合は、この記事へのリンクを削除しないでください: http://www.nuodou.com/item/622.html 。
Haibor さんの貢献に感謝します