2016年3月6日

更新日時を変えずに修正する方法。WordPressのfunction.phpに記述。

スポンサードリンク

 WordPressでブログを更新していて、
ちょっと誤字脱字を発見し、訂正します。
すると、投稿日とは別に存在する「更新日」が、訂正した日に変わります。
ただ誤字脱字をなおしただけなのに…。

更新日を変更させずに修正だけできる神業のご紹介。

更新日時はそのまま、関数を記入して修正可能に


 素晴らしい神業を知りました。
これは天才的な関数ですね。

本当にありがたいです。
作っていただいた方に心から感謝の気持ちをお伝えして、と。


 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ヘルプを参照下さい。


 ラビットしま子はサイト制作のプロではありません。
個別のカスタマイズについての相談は乗ってあげたいけど、乗れません。
(わからんから)


スポンサードリンク