数字の0が数字型なのかfalseなのか文字型なのかイコールで代入するだけでは再抽出の際に確認できませんのでそういう使用方法をやめる方向で検討できませんか。
もしくは全プログラムにおいて記事情報の授受を全て文字型で確実に受け渡すよう変更する必要があると思います。
-
この返信は5年、 5ヶ月前に
msioが編集しました。理由: さいのじがまちがえていました。
こんにちは
チケットはクローズされちゃいましたね・・・
0だけのときに保存なんてできる必要ないだろ的回答で、理由はよく分かりません。
特に議論もされていません。
カスタムフィールド使えということなんでしょうか・・・
タイトルを0にしたい理由が書いていないと、対応されないかもしれないですね。
切実なバグというのであれば、それ相応の理由があるのでしょうから、チケットに理由も追記したらよいのではないでしょうか。
こんにちは、
0をタイトルに入力した場合に、00に戻ってしまうという事ですが、
再現がうまくいかないので、あくまでアテズッポなのですが
例えば、タイトルに abc 本文に abc と入力していったん保存して、
次に、タイトルと本文を削除して、保存すると、タイトル本文共に、abcになります。
タイトル本文共に、空白だった場合保存の処理が行われず、元の文章が再現されるという事なのではないかと思います。
では、なぜ文字列0が空白と同様の扱いになるのかという点ですが、
自分のテーマでの、タイトルが空白な場合の処理の例です
if( empty( $mytime->post_title )){//mytimeは $post
$mytime->post_title = '<span class="icon-link-no-title entry-title-text">no title</span>';
}
empty()は、文字列0もtrueを返してくるので、タイトルが0の場合、このフォールバックリンクが表示されました。
保存時のコアのコードは見ていませんが、それに類するような事があるのかも といった印象でした。
「再現がうまくいかないので」と書きましたが、再現できました。
本文に、0 だけ書くのをやめて、<!--これ数字-->
みたいな、マーカーをつけておけばいいのではないかと思います。本文の数字を取得する時に、マーカーを削除でどうですか?
こういう使い方お勧めするわけではありませんが、現状のTinyMCEだと、数値だけを保存して、後でP要素付で出力するという仕組みなので、このような事になっているのだろうと思います。
確かにタイトルや本文を0のみにするのは極めて稀なんでしょうけど、保存されない事自体が正常ではないと思うんですがね。
0だろうが1だろうが人間から見たらただの文字に変わりなく、0でも00でも文字です。
挙動として正しいと思わないから報告しましたが、相手にされませんでしたね。まあ分かります、極めて稀ですもんね。
理由を述べたとしても稀すぎて相手にされないので、自分で対処するほか方法は無いと感じました。
I Don’t think to allow post publish when title or content is just 0.
でもこれは完全に主観ですよね?文句言ってやろうかと思いましたが、相手にされないのは目に見えてるのでしませんが…
これはTinyMCEの問題だったんですか。
nobitaさんご提案の方法も良いと思いましたが、そのままだとヘッダー内のタイトルが表示されませんね。
munyaguさんご提案のカスタムフィールドを使うのも方法の一つですが、どちらにせよ妥協してカスタマイズしなければいけないのでなかなか面倒です。
全然納得できませんが、テンプレート側で判別して出来ますし相手にしてもらえないので諦めます。
ありがとうございました。
以下でどうでしょうか。
function hoge($maybe_empty, $postarr) {
return false;
}
add_filter( 'wp_insert_post_empty_content', 'hoge', 10, 2 );
以下のファイルにある wp_insert_post
関数内で空の判定処理をしているようです。フィルターフックが使えるようになっていました。
post.php in tags/4.9.1/src/wp-includes – WordPress Trac
おぉ天才!
タイトルのみ0、本文のみ0、両方0、これならいけます、問題ないですね。
コードを足さない出来ないのは負けた感が否めないですが、でも面倒なカスタマイズはしなくて済みます。
あ、でも<title>~</title>にページのタイトルが出ませんね…
やはり何かしら手を加えないと完璧にはならないようですね…
でもありがとうございます。