イベントの開始日、終了日、メタボックスカスタム投稿タイプ

IsItWPによるスニペット


イベントのカスタム投稿タイプに3つのメタボックスを追加しますか?このためのプラグインがあると思われますが、イベントのカスタム投稿タイプの開始日、終了日、場所のメタボックスを追加するために使用できる簡単なコードスニペットを作成しました.

手順:

必要なのは、このコードをテーマのfunctions.phpファイルまたはサイト固有のプラグインに追加することだけです。

function ep_eventposts_metaboxes(){
add_meta_box( ‘ept_event_date_start’、 ‘Start Date and Time’、 ‘ept_event_date’、 ‘event’、 ‘side’、 ‘default’、array( ‘id’ => ‘_start’));
add_meta_box( ‘ept_event_date_end’、 ‘End Date and Time’、 ‘ept_event_date’、 ‘event’、 ‘side’、 ‘default’、array( ‘id’ =>’_終わり’) );
add_meta_box( ‘ept_event_location’、 ‘Event Location’、 ‘ept_event_location’、 ‘event’、 ‘side’、 ‘default’、array( ‘id’ =>’_終わり’) );
}
add_action( ‘admin_init’、 ‘ep_eventposts_metaboxes’);

//メタボックスHTML

function ept_event_date($ post、$ args){
$ metabox_id = $ args [‘args’] [‘id’];
グローバル$ post、$ wp_locale;

// nonceを検証に使用します
wp_nonce_field(plugin_basename(__FILE__)、 ‘ep_eventposts_nonce’);

$ time_adj = current_time( ‘timestamp’);
$ month = get_post_meta($ post->ID、$ metabox_id。 ‘_month’、true);

if(empty($ month)){
$ month = gmdate( ‘m’、$ time_adj);
}

$ day = get_post_meta($ post->ID、$ metabox_id。 ‘_day’、true);

if(empty($ day)){
$ day = gmdate( ‘d’、$ time_adj);
}

$ year = get_post_meta($ post->ID、$ metabox_id。 ‘_year’、true);

if(empty($ year)){
$ year = gmdate( ‘Y’、$ time_adj);
}

$ hour = get_post_meta($ post->ID、$ metabox_id。 ‘_hour’、true);

if(empty($ hour)){
$ hour = gmdate( ‘H’、$ time_adj);
}

$ min = get_post_meta($ post->ID、$ metabox_id。 ‘_minute’、true);

if(empty($ min)){
$ min = ’00’;
}

$ month_s = ”;
for($ i = 1; $ i < 13; $ i = $ i +1){
$ month_s。= "\ t \ t \ t" . 」 $ wp_locale->get_month_abbrev($ wp_locale->get_month($ i)) . "\ n";
}
$ month_s。= ”;

echo $ month_s;
エコー ”;
エコー ‘ @ ‘;
エコー ‘:’;
エコー ”;

}

function ept_event_location(){
グローバル$ post;
// nonceを検証に使用します
wp_nonce_field(plugin_basename(__FILE__)、 ‘ep_eventposts_nonce’);
//メタボックスHTML
$ event_location = get_post_meta($ post->ID、 ‘_ event_location’、true);
echo ‘場所:’;
エコー ”;
}

//メタボックスデータを保存します

function ep_eventposts_save_meta($ post_id、$ post){

if(defined( ‘DOING_AUTOSAVE’) && DOING_AUTOSAVE)
戻る;

if(!isset($ _POST [‘ep_eventposts_nonce’]))
戻る;

if(!wp_verify_nonce($ _POST [‘ep_eventposts_nonce’]、plugin_basename(__FILE__)))
戻る;

//ユーザーは投稿またはページの編集を許可されていますか?
if(!current_user_can( ‘edit_post’、$ post->ID))
戻る;

// OK、認証されました。データを見つけて保存する必要があります
//ループしやすくするために配列に入れます

$ metabox_ids = array( ‘_start’、 ‘_end’);

foreach($ metabox_ids as $ key){
$ events_meta [$ key。 ‘_month’] = $ _POST [$ key。 ‘_月’];
$ events_meta [$ key。 ‘_day’] = $ _POST [$ key。 ‘_日’];
if($ _ POST [$ key。 ‘_hour’]<10){
$ events_meta [$ key。 ‘_hour’] = ‘0’。$ _ POST [$ key。 ‘_hour’];
} そうしないと {
$ events_meta [$ key。 ‘_hour’] = $ _POST [$ key。 ‘_hour’];
}
$ events_meta [$ key。 ‘_year’] = $ _POST [$ key。 ‘_年’];
$ events_meta [$ key。 ‘_hour’] = $ _POST [$ key。 ‘_hour’];
$ events_meta [$ key。 ‘_minute’] = $ _POST [$ key。 ‘_分’];
$ events_meta [$ key。 ‘_eventtimestamp’] = $ events_meta [$ key。 ‘_year’]。 $ events_meta [$ key。 ‘_月’] 。 $ events_meta [$ key。 ‘_日’] 。 $ events_meta [$ key。 ‘_hour’]。 $ events_meta [$ key。 ‘_分’];
}

// $ events_metaの値をカスタムフィールドとして追加します

foreach($ events_meta as $ key => $ value){// $ events_meta配列を循環!
if($ post->post_type == ‘revision’)return; //カスタムデータを2回保存しない
$ value = implode( ‘、’、(array)$ value); // $ valueが配列の場合は、CSVにします(可能性は低いです)
if(get_post_meta($ post->ID、$ key、FALSE)){//カスタムフィールドにすでに値がある場合
update_post_meta($ post->ID、$ key、$ value);
} else {//カスタムフィールドに値がない場合
add_post_meta($ post->ID、$ key、$ value);
}
if(!$ value)delete_post_meta($ post->ID、$ key); //空白の場合は削除します
}

}

add_action( ‘save_post’、 ‘ep_eventposts_save_meta’、1、2);

/ **
*フロントエンドに日付を表​​示するヘルパー
* /

//月の略称を取得します

function eventposttype_get_the_month_abbr($ month){
グローバル$ wp_locale;
for($ i = 1; $ i < 13; $ i = $ i +1){
if($ i == $ month)
$ monthabbr = $ wp_locale->get_month_abbrev($ wp_locale->get_month($ i));
}
$ monthabbrを返します。
}

//日付を表示します

function eventposttype_get_the_event_date(){
グローバル$ post;
$ eventdate = ”;
$ month = get_post_meta($ post->ID、 ‘_ month’、true);
$ eventdate = eventposttype_get_the_month_abbr($ month);
$ eventdate。= ”。 get_post_meta($ post->ID、 ‘_ day’、true)。 ‘、’;
$ eventdate。= ”。 get_post_meta($ post->ID、 ‘_ year’、true);
$ eventdate。= ‘at’。 get_post_meta($ post->ID、 ‘_ hour’、true);
$ eventdate。= ‘:’。 get_post_meta($ post->ID、 ‘_ minute’、true);
echo $ eventdate;
}

注意: WordPressでコードスニペットを初めて追加する場合は、次のガイドを参照してください。 WordPressでコードスニペットを正しくコピー/貼り付ける方法, あなたが誤ってあなたのサイトを壊さないように.

このコードスニペットが気に入った場合は、サイト上の他の記事(15の最高のコンテンツマーケティングツールとプラグイン、50以上のレスポンシブなWordPressテーマ)をチェックして、モバイル対応のWebサイトを作成することを検討してください。.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me