カスタマイズ例と参照元
参照元 http://vitorec.co.jp/
参照元のカスタマイズは全て実施しました。
・メインページにイベントも表示する(functions.php)
・ポップアップの日時表示を変更する(time.php)
・メインページのイベント表示にイベント日時と場所を取得して表示する(functions.php)
・新しいカレンダーテーマを作成する
・ポップアップ画面サムネイルのアスペクト比を元の画像と同じにする(override.css)
・ポップアップから本文表示を削除する(event-popup.twig、month.twig)
functions.phpのカスタマイズ
メインページのイベント開始・終了日時のカスタマイズ
全日指定のイベント…「x年x月x日 【全日】」
全日指定で2日以上のイベント…「x年x月x日~x月x日」
複数日のイベント…「x年x月x日 0:00~x月x日 0:00」
1日のイベント…「x年x月x日 0:00~0:00」
と分岐するようにしました。
[php]
$dif = $select_result->end – $select_result->start;// 日時差を秒数で取得
if( $select_result->allday == 1 ){
if( $dif == 86400 ){
$datetime = ‘日時:’ . date("Y年n月j日 【全日】", $select_result->start);//全日で1日なら「開始日時」
}else{
$datetime = ‘日時:’ . date("Y年n月j日", $select_result->start). ‘~’ . date("n月j日", strtotime(‘-1 day’, $select_result->end));//全日で2日以上なら「開始日」「終了日」
}
}else{
if( $dif >> 86400 ){
$datetime = ‘日時:’ . date("Y年n月j日 G:i", $select_result->start). ‘~’ . date("n月j日 G:i", strtotime(‘-1 day’, $select_result->end));//2日以上なら「開始日時」「終了日時」
}else{
$datetime = ‘日時:’ . date("Y年n月j日 G:i", $select_result->start). ‘~’ . date("G:i", $select_result->end);//「開始日時」「終了時」
}
}
[/php]
投稿者の記事一覧に、カスタム投稿タイプの記事も含める
参考 投稿者の記事一覧に、カスタム投稿タイプの記事も含めたい
my_search_filter
の部分に以下を追記。
[php]
if (is_author() && $query->is_main_query() ) { //投稿者の記事一覧に、カスタム投稿タイプの記事も含める
$query->set( ‘post_type’, array( ‘post’, ‘ai1ec_event’ ) );
}
[/php]
最終的に追記した内容
[php title=”functions.php”]
//All-in-One Event Calendarプラグインのカスタム投稿タイプもメインページにリストする
function my_search_filter($query) {
if (is_home() && $query->is_main_query() ) {
$query->set( ‘post_type’, array( ‘post’, ‘ai1ec_event’ ) );
}
if (is_author() && $query->is_main_query() ) { //投稿者の記事一覧に、カスタム投稿タイプの記事も含める
$query->set( ‘post_type’, array( ‘post’, ‘ai1ec_event’ ) );
}
}
add_action( ‘pre_get_posts’, ‘my_search_filter’ );
//本文抜粋を取得する関数 「All-in-One Event Calendar」イベントのときは「日時」と「場所」を取得
function get_the_custom_excerpt($content, $length = 70, $is_card = false) {
global $post;
global $wpdb;
//このif文の中が「All-in-One Event Calendar」イベントに対する処理
if ( $post->post_type == ‘ai1ec_event’ ) {
date_default_timezone_set(‘Asia/Tokyo’);
$query = $wpdb->prepare( "SELECT * FROM wp_ai1ec_events WHERE post_id = %d", $post->ID );//クエリ文
$select_result = $wpdb->get_row($query);//テーブルから対象の行(Row)を取得
$dif = $select_result->end – $select_result->start;// 日時差を秒数で取得
if( $select_result->allday == 1 ){
if( $dif == 86400 ){
$datetime = ‘日時:’ . date("Y年n月j日 【全日】", $select_result->start);//全日で1日なら「開始日時」
}else{
$datetime = ‘日時:’ . date("Y年n月j日", $select_result->start). ‘~’ . date("n月j日", strtotime(‘-1 day’, $select_result->end));//全日で2日以上なら「開始日」「終了日」
}
}else{
if( $dif >> 86400 ){
$datetime = ‘日時:’ . date("Y年n月j日 G:i", $select_result->start). ‘~’ . date("n月j日 G:i", strtotime(‘-1 day’, $select_result->end));//2日以上なら「開始日時」「終了日時」
}else{
$datetime = ‘日時:’ . date("Y年n月j日 G:i", $select_result->start). ‘~’ . date("G:i", $select_result->end);//「開始日時」「終了時」
}
}
$place = ‘場所:’ . $select_result->venue;//「場所」
return $datetime . "</br>\n" .
$place;
}
//SEO設定のディスクリプション取得
$description = get_meta_description_blogcard_snippet($post->ID);
//SEO設定のディスクリプションがない場合は「抜粋」を取得
if (!$description) {
$description = $post->post_excerpt;
}
if (is_wordpress_excerpt() && $description ) {//Wordpress固有の抜粋文を使用するとき
return $description;
} else {//Simplicity固有の抜粋文を使用するとき
return get_content_excerpt($content, $length);
}
}
[/php]
twigのカスタマイズ
日・週表示のポップアップからも本文表示を消す
参照元ではこちらは触れられていなかったので一応。
week.twig は oneday.twig を引っ張ってきているので、 oneday.twig だけ編集すればOKです。
[php title=”oneday.twig”]
{#
{% if event.post_excerpt %}
<div class="ai1ec-popup-excerpt">{{ event.post_excerpt | raw }}</div>
{% endif %}
#}
[/php]
ウィジェットでポップアップしないようにする
スマホでのアクセスがメインの想定なのですが、ウィジェットでポップアップするとイベント詳細ページを見て貰うために2回タップして貰わないといけなくなるので、ポップアップは不要だと判断しました。
なお、カレンダー表示の場合は文字が小さく、詳細を見たいイベントと違うイベントをタップするかもしれないので、ポップアップは残しました。
[php title=”agenda-widget.twig”]
{#
{% include ‘event-popup.twig’ with {
‘text_venue_separator’: text_venue_separator
} %}
#}
[/php]
コメント