私が現在取り組んでいるプラグインは追加の投稿リスト表示です:あなたが以下のスクリーンショットで見ることができるようにカレンダー。
MP6とハンドヘルドスクリーン幅の管理カレンダービュー。
今毎日は投稿数だけを示しています。
追加したいのは新しい投稿を追加するためのリンクです。しかし、このリンクはだけでなく
~/wp-admin/post-new.php?post_type=abc
スクリーンに連れて行くべきですが、同様に定義済み投稿日 - から追加するべきですクリックした日.
これまでにいくつかの選択肢があります。
preview_post_link
-フィルタにコールバックを追加することを意味します。それからgmt_offset
フィルタを使って'pre_option_gmt_offset'
-オプションをインターセプトする別のコールバックをアタッチして、現在の日付を返すようにtouch_time()
内で行われる計算を変更します。問題は、計算式がtime() + ( $offset * HOURS_IN_SECONDS );
であり、変更できる唯一の値が$offset
であるということです。任意のアイデアは大歓迎です。概念をさらに証明するコード。答えとしていくつかの有用なドラフトがあるとすぐに私は賞金を発表するつもりです。
Chatで説明したように、最善の解決策はポイント3です。プログラムでwp_insert_post
を使用してドラフト(またはカスタム投稿ステータス)を追加することで、他のパラメーターを設定できます。
'post_date' => [ Y-m-d H:i:s ] //The time post was made.
'post_date_gmt' => [ Y-m-d H:i:s ] //The time post was made, in GMT.
...とにかく行き止まりであるgmt_offset
を介してpre_option_gmt_offset
を傍受する必要はありません。
また、パブリッシュメタボックスの置き換え、クローンの作成、再構築、どのような方法でも - 悲惨なメンテナンス悪夢。
私たちがこれについて考えるならば、ドラフト(またはあなたが選んだカスタム投稿ステータス)を追加することは前述のアイデアよりはるかに少ない問題です。
wp_insert_post
の唯一のマイナス面は、投稿をデータベースに物理的に挿入していることです。そのため、ある点では、通常は自動ドラフトになるものでデータベースを汚染しています。
そこでwp_cron
が登場します。
Chatで述べたように、draft
投稿ステータスをそのまま使用するかどうかによっては、これらの投稿エントリにフラグを付けるために使用できるカスタムフィールド(アンダースコアを前に付ける)を追加することをお勧めします。
ユーザーがエントリを公開しない場合、この投稿アイテムはユーザーによって破棄されたため、クリーンアップの対象としてマークされる必要があります。
私は、投稿を公開しないと投稿としてカレンダーに追加されず、後日クリーンアップのために割り当てられることをユーザーに示すカスタム管理者通知を追加することさえします。
これは、現時点で唯一有効であると思われる(post_title/content/excerpt
)以外のクエリ変数を使用してポストエディット画面でフォーム入力をプログラムで設定できるようになるまで(これまでの場合)、最も安全で、最も安全で将来性の高いソリューションです。
私が考えることができる唯一の他のオプションはJavaScriptやjQueryを介して日付入力の値を設定することです - それは簡単ですがユーザーがJavaScriptを有効にしているという保証はありません。失敗するでしょう。
私たちは、懸念されるかもしれないカスタム投稿ステータスのためにいくつかのEdge-caseが存在することを知っていますが、あなたのアプリケーションでのそれらの使用を考慮すると、それらを使うことのリスクは最小限であると思います