内のコメントがワードプレス内で更新すると消えてしまい...
ツイート
guest
2018/07/12
カスタムフィールド内のコメントがワードプレス内で更新すると消えてしまいますが、どの辺りに間違いがありそうでしょうか
ウェブカツ!!コーチ
講師からの回答
カスタムフィールド「コメント」内で入力をして更新ボタンを押した際に入力内容が消えている場合、2通りの原因が考えられます。
1.そもそも入力の値が保存されていない(保存する処理に問題あり)
2.保存はされているが、フィールド内に反映されていない(フィールド内に保存された値を表示する処理に問題あり)
です。
公開ボタンを押した際に
同じ固定ページの編集画面内の「表示オプション」を押して「カスタムフィールド」にチェックを入れると「カスタムフィールド」という欄を表示できるので、
更新した際にそこに入力された文字列が表示されていなければ保存自体されていません。
(他にも、DBの中身を直接見て保存されているか確認する方法もあります。)
詳しくは、下記を参考にしてください。
http://hokori.net/archives/158
保存されていないのであれば、
functions.phpの54行目からの処理を見直してみてください。
add_action()で定義した関数名と作っている関数名が同じかどうか。
save_custom_postdata()内の処理が例とあっているか。
を確認してみましょう。
保存はされているようであれば、
custom_area()内のget_post_meta()のキー名が保存する処理のキー名と違う可能性があります。
get_post_meta()は保存したキー名を指定することで、その値を取り出せるWordPressで用意されている関数です。
それをtextareaタグ内に埋め込んでいるので、更新した際の画面にもきちんと入力された値が表示される。という仕組みです。
そのあたりを見直してみましょう。
1.そもそも入力の値が保存されていない(保存する処理に問題あり)
2.保存はされているが、フィールド内に反映されていない(フィールド内に保存された値を表示する処理に問題あり)
です。
公開ボタンを押した際に
同じ固定ページの編集画面内の「表示オプション」を押して「カスタムフィールド」にチェックを入れると「カスタムフィールド」という欄を表示できるので、
更新した際にそこに入力された文字列が表示されていなければ保存自体されていません。
(他にも、DBの中身を直接見て保存されているか確認する方法もあります。)
詳しくは、下記を参考にしてください。
http://hokori.net/archives/158
保存されていないのであれば、
functions.phpの54行目からの処理を見直してみてください。
add_action()で定義した関数名と作っている関数名が同じかどうか。
save_custom_postdata()内の処理が例とあっているか。
を確認してみましょう。
保存はされているようであれば、
custom_area()内のget_post_meta()のキー名が保存する処理のキー名と違う可能性があります。
get_post_meta()は保存したキー名を指定することで、その値を取り出せるWordPressで用意されている関数です。
それをtextareaタグ内に埋め込んでいるので、更新した際の画面にもきちんと入力された値が表示される。という仕組みです。
そのあたりを見直してみましょう。
2018/10/13
guest
ご返信いただきありがとうございます。
本文の通り対応しましたが、エラー箇所が見つけられません。
データベースのpostmeta内には保存されていないようでした。
/*===================================
カスタムフィールド
======================================*/
/*投稿ページへ表示するカスタムボックスを定義する*/
add_action('admin_menu', 'add_custom_inputbox');
/*追加した表示項目のデータ更新 保存のためのアクションフック*/
add_action('save-post', 'save_custom_postdata');
/*入力項目がどの投稿タイプのページに表示されるかの設定*/
function add_custom_inputbox() {
//第一引数:編集画面のhtmlに挿入されるid属性名
//第二引数:管理画面に表示されるカスタムフィールド名
//第三引数:メタボックス内に出力される関数名
//第四引数:管理画面に表示されるカスタムフィールドの場所(postなら投稿、pageなら固定ページ)
//第五引数:配置される順序
add_meta_box( 'about_id','ABOUT入力欄', 'custom_area', 'page', 'normal');
}
/*管理画面に表示される内容*/
function custom_area(){
global $post;
echo 'コメント :<textarea cols="50" rows="5" name="about_msg">'.get_post_meta($post->ID,'about',true).'</textarea><br>';
}
/*投稿ボタンを押した際のデータ更新と保存*/
function save_custom_postdata($post_id){
$about_msg = '';
//カスタムフィールドに入力された情報を取り出す
if(isset($_POST['about_msg'])){
$about_msg = $_POST['about_msg'];
}
//内容が変わっていた場合、保存していた情報を更新する
if( $about_msg != get_post_meta($post_id, 'about', true)){
update_post_meta($post_id, 'about',$about_msg);
}
elseif ($about_msg == '') {
delete_post_meta($post_id, 'about',get_post_meta($post_id,'about',true));
}
}
本文の通り対応しましたが、エラー箇所が見つけられません。
データベースのpostmeta内には保存されていないようでした。
/*===================================
カスタムフィールド
======================================*/
/*投稿ページへ表示するカスタムボックスを定義する*/
add_action('admin_menu', 'add_custom_inputbox');
/*追加した表示項目のデータ更新 保存のためのアクションフック*/
add_action('save-post', 'save_custom_postdata');
/*入力項目がどの投稿タイプのページに表示されるかの設定*/
function add_custom_inputbox() {
//第一引数:編集画面のhtmlに挿入されるid属性名
//第二引数:管理画面に表示されるカスタムフィールド名
//第三引数:メタボックス内に出力される関数名
//第四引数:管理画面に表示されるカスタムフィールドの場所(postなら投稿、pageなら固定ページ)
//第五引数:配置される順序
add_meta_box( 'about_id','ABOUT入力欄', 'custom_area', 'page', 'normal');
}
/*管理画面に表示される内容*/
function custom_area(){
global $post;
echo 'コメント :<textarea cols="50" rows="5" name="about_msg">'.get_post_meta($post->ID,'about',true).'</textarea><br>';
}
/*投稿ボタンを押した際のデータ更新と保存*/
function save_custom_postdata($post_id){
$about_msg = '';
//カスタムフィールドに入力された情報を取り出す
if(isset($_POST['about_msg'])){
$about_msg = $_POST['about_msg'];
}
//内容が変わっていた場合、保存していた情報を更新する
if( $about_msg != get_post_meta($post_id, 'about', true)){
update_post_meta($post_id, 'about',$about_msg);
}
elseif ($about_msg == '') {
delete_post_meta($post_id, 'about',get_post_meta($post_id,'about',true));
}
}
2018/06/01
guest
コードの入力を間違えておりました。解決しました。
ご迷惑をおかけしました。
ご迷惑をおかけしました。
2018/06/01
部活の学習一覧
Lesson 01
「WordPressって何?」
Lesson 02
「WordPressを使ってみよう!」
Lesson 03
「売れるテンプレートを作ろう!〜準備編〜」
Lesson 04
「売れるテンプレートを作ろう!〜共通パーツ編〜」
Lesson 05
「売れるテンプレートを作ろう!〜固定ページ編〜」
Lesson 06
「売れるテンプレートを作ろう!〜記事一覧ページ編〜」
Lesson 07
「売れるテンプレートを作ろう!〜記事ページ編〜」
Lesson 08
「売れるテンプレートを作ろう!〜関数編その1〜」
Lesson 09
「カスタムフィールドの作り方」
Lesson 10
「カスタムフィールドの作り方その2」
Lesson 11
「カスタムウィジェットの作り方」
Lesson 12
「最終回!!」
コーヒーブレイク
「はたらくプログラミング 第6話」
ご意見箱