Modify the Query to multiple dates in a post For Custom Field Suite "Loop Field".
For each Date and Time
set in the Loop Field
, only the scheduled events are output to Archive Page.
- The
Date and Time
set in theLoop Field
is outputted asone event
. - Displayed in order of the most recent event (
ASC
). - Closed events is not outputted.
- Supply a
function
for calendar 📅
- PHP 5.3+
- Activation Custom Field Suite Plugin.
- Create a Loop Field and Date Field in the Loop Field using CFS Plugin.
- A 6-pack of beer🍺 (optional, I guess.)
cd /path-to-your/wp-content/plugins/
git clone git@github.com:sectsect/cfs-loop-field-query.git
- Activate the plugin through the 'Plugins' menu in WordPress.
You can access the some setting by going toSettings
->CFS Loop Field Query
. - Setting
Post Type Name
,Loop Field Name
,Date Field Name
in Loop Feld".
( Optional Field:Taxonomy Name
,StartTime Field
,FinishTime Field
)
That's it:ok_hand: The main query of your select post types will be modified.
- If you want to apply to some existing article, resave the article.
- This Plugin includes adding Time-Picker Field in CFS. (Using CFS Time picker add-on)
- Support Pages for
is_date()
includesis_year()
is_month()
is_day()
. - If you have set the 'FinishTime', it does not appear that post when it passes your set time. (Default: The Day Full)
You can get a sub query with new CFS_LFQ_Query()
<?php
$ary = array();
$page = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
$perpage = 10;
$offset = ( $page - 1 ) * $perpage;
$args = array(
'posts_per_page' => $perpage
);
$query = new CFS_LFQ_Query( $args );
?>
<?php if ( $query->have_posts() ) : while ( $query->have_posts() ) : $query->the_post(); ?>
// something
<?php endwhile; ?>
<?php endif;?>
<?php wp_reset_postdata(); ?>
$dates = array();
$args = array(
'posts_per_page' => -1,
'calendar' => true, // Get the data for Not from the day but from the first day of the month.
);
$query = new CFS_LFQ_Query( $args );
if ( $query->have_posts() ) { while ( $query->have_posts() ) { $query->the_post();
$date = date( 'Ymd', strtotime( $post->date ) );
array_push( $dates, $date );
}}
wp_reset_postdata();
// Passing array to cfs_lfq Calendar Class.
$dates = array_unique( $dates ); // Remove some Duplicate Values(Day)
$months = get_months_from_now( 3 );
$args = array(
'dates' => $dates, // (array) (required) Array of event Date ('Ymd' format)
'months' => $months, // (array) (required) Array of month to generate calendar ('Ym' format)
'weekdayLabel' => 'default', // (string) (optional) Available value: 'default' or 'en' Note: 'default' is based on your wordpress locale setting.
'weekdayBase' => 0, // (integer) (optional) The start weekday. 0:sunday ~ 6:saturday Default: 0
'element' => 'div', // (string) (optional) The element for wraping. Default: 'div'
'class' => '' // (string) (optional) The 'class' attribute value for wrap element. Default: ''
);
cfs_lfq_calendar( $args );
$ary = array();
$args = array(
'posts_per_page' => -1,
'calendar' => true // Get the data for Not from the day but from the first day of the month.
);
$query = new CFS_LFQ_Query( $args );
if ( $query->have_posts() ) { while ( $query->have_posts() ) { $query->the_post();
$date = date( 'Ymd', strtotime( $post->date ) );
$post_id = $post->ID;
$perm = get_the_permalink();
$title = get_the_title();
array_push( $ary, array('date' => $date, 'id' => $post_id, 'permlink' => $perm, 'title' => $title) );
}}
wp_reset_postdata();
// Passing array to your Calendar Class.
require_once 'Calendar/Month/Weeks.php';
calendar( $ary, 0 );
<div id="date">
<?php echo date( 'Y-m-d', strtotime( $post->date ) ); ?>
</div>
<time>
<?php echo date( "H:i", strtotime( $post->starttime ) ); ?> ~ <?php echo date( "H:i", strtotime( $post->finishtime ) ); ?>
</time>
- num
(integer) (required) Number of months to get.
Default:1
(array)
Ym
formatted.
$months = get_months_from_now( 3 );
-
dates (array) (required) Array of event Date (
Ymd
format). -
months (array) (required) Array of month to generate calendar (
Ym
format) -
weekdayLabel (string) (optional) Available value:
'default'
or'en'
.
Default:'default'
📝'default'
is based on your wordpress locale setting. -
weekdayBase (integer) (optional) The start weekday.
0:sunday ~ 6:saturday
Default:0
-
element (string) (optional) The element for wraping.
Default:'div'
-
class (string) (optional) The 'class' attribute value for wrap element.
Default:''
$args = array(
'dates' => $dates,
'months' => $months,
'weekdayLabel' => 'default',
'weekdayBase' => 0,
'element' => 'div',
'class' => 'myclass'
);
cfs_lfq_calendar( $args );
- This Plugin does not hosting on the wordpress.org repo in order to prevent a flood of support requests from wide audience.
See CHANGELOG file.
- Create an issue and describe your idea
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Publish the branch (
git push origin my-new-feature
) - Create a new Pull Request
- Profit! ✅
See LICENSE file.
I also have plugin with the same functionality for Advanced Custom Field Plugin.