ちょっと誤字脱字を発見し、訂正します。
すると、投稿日とは別に存在する「更新日」が、訂正した日に変わります。
ただ誤字脱字をなおしただけなのに…。
更新日を変更させずに修正だけできる神業のご紹介。
更新日時はそのまま、関数を記入して修正可能に
素晴らしい神業を知りました。
これは天才的な関数ですね。
本当にありがたいです。
作っていただいた方に心から感謝の気持ちをお伝えして、と。
WordPressでサイトを作っていて、
ちょっとブログの中に誤字や脱字を発見。
訂正したい…。
でも、いちいち更新日が更新されていくのは何か嫌です。
内容には何も変化が無い訳ですからね。
気にならない方は、全然平気なのかもしれませんが。
参考にしたサイト
記事を修正した時に更新日時(modified_time)を変更せずに保存する方法
更新日時(modified_time)を変更せずにWordPressの記事を修正する方法
更新日時modified_timeはそのままで修正
ここからfunction.phpを触ります。
いつもいつも言いますが、要注意です。
一歩間違うとサイトがエラーを起こし、真っ白になります。
カスタムする直前に、
絶対にWordPress全てのデータをバックアップして下さい。
最新のバックアップを取っておいて下さい。
上記に載せたリンク先に載っているコードです。
私もfunction.phpに記入しました。
以下の内容。
(このままコピーしないで下さい。UTF-8Nに変換して下さい。)
/* 管理画面が開いたときに実行 */
add_action( 'admin_menu', 'add_update_level_custom_box' );
/* 更新ボタンが押されたときに実行 */
add_action( 'save_post', 'save_custom_field_postdata' );
/* カスタムフィールドを投稿画面に追加 */
function add_update_level_custom_box() {
//ページ編集画面にカスタムメタボックスを追加
add_meta_box( 'update_level', '更新レベル', 'html_update_level_custom_box', 'post', 'side', 'high' );
}
/* 投稿画面に表示するフォームのHTMLソース */
function html_update_level_custom_box() {
$update_level = get_post_meta( $_GET['post'], 'update_level' );
echo '<div style="padding-top: 3px; overflow: hidden;">';
echo '<div style="width: 100px; float: left;"><input name="update_level" type="radio" value="high" ';
if( $update_level[0]=="" || $update_level[0]=="high" ) echo ' checked="checked"';
echo ' />通常更新</div><div style="width: 100px; float: left;"><input name="update_level" type="radio" value="low" ';
if( $update_level[0]=="low" ) echo ' checked="checked"';
echo '/>修正のみ<br /></div>';
echo '</div>';
}
/* 設定したカスタムフィールドの値をDBに書き込む記述 */
function save_custom_field_postdata( $post_id ) {
$mydata = $_POST['update_level'];
if( "" == get_post_meta( $post_id, 'update_level' )) {
/* update_levelというキーでデータが保存されていなかった場合、新しく保存 */
add_post_meta( $post_id, 'update_level', $mydata, true ) ;
} elseif( $mydata != get_post_meta( $post_id, 'update_level' )) {
/* update_levelというキーのデータと、現在のデータが不一致の場合、更新 */
update_post_meta( $post_id, 'update_level', $mydata ) ;
} elseif( "" == $mydata ) {
/* 現在のデータが無い場合、update_levelというキーの値を削除 */
delete_post_meta( $post_id, 'update_level' ) ;
}
}
/* 「更新」以外は更新日時を変更しない */
add_filter( 'wp_insert_post_data', 'my_insert_post_data', 10, 2 );
function my_insert_post_data( $data, $postarr ){
$mydata = $_POST['update_level'];
if( $mydata == "low" ){
unset( $data["post_modified"] );
unset( $data["post_modified_gmt"] );
}
return $data;
}
以上です。
これで、投稿を修正するときに、
更新日時を更新するか、
修正のみか、を選べるようになります。
投稿編集画面→
表示オプション→
更新レベル にチェック入れる→
すると、投稿編集画面の横か下あたりに、
更新レベルを選択するツールが表示されます。
神業です。
感謝しております。
こちらのブログはBloggerです。
WordPressの実際の表示を確認したい方は
ラビットしま子の「人生美容パラダイス」をご覧下さい。
当ブログの情報は全ての方に応用できるとは限りません。
ご利用は自己責任です。当ブログ側はいかなる責任も負いません。
必ずデータは最新のバックアップを取っておいて下さい。
WordPressを利用される場合はUTF-8Nの文字コードに必ず変換して下さい。
当ブログのコードをコピーしてphpファイル等に直で貼付けすると
ファイルやデータが破損します。
パソコンのメモ帳は不可です。
詳細はWordPressヘルプを参照下さい。
ラビットしま子はサイト制作のプロではありません。
個別のカスタマイズについての相談は乗ってあげたいけど、乗れません。
(わからんから)
スポンサードリンク