Пример #1
0
 /**
  * Get the date archives.
  *
  * @link https://developer.wordpress.org/reference/functions/wp_get_archives/
  *
  * @uses \add_filter()
  * @uses \remove_filter()
  *
  * @param string $type
  * @return \Illuminate\Support\Collection|\Luminous\Bridge\Post\DateArchive[]
  */
 public function archives($type)
 {
     $groupbyFilter = function () use($type) {
         $formats = ['yearly' => 'YEAR(`%1$s`)', 'monthly' => 'YEAR(`%1$s`), MONTH(`%1$s`)', 'daily' => 'YEAR(`%1$s`), MONTH(`%1$s`), DAYOFMONTH(`%1$s`)'];
         return sprintf($formats[$type], 'post_date');
     };
     $fieldsFilter = function () use($type) {
         $formats = ['yearly' => 'DATE_FORMAT(`%1$s`, \'%%Y-01-01\') as `_date`, count(`%2$s`) as `_count`', 'monthly' => 'DATE_FORMAT(`%1$s`, \'%%Y-%%m-01\') as `_date`, count(`%2$s`) as `_count`', 'daily' => 'DATE_FORMAT(`%1$s`, \'%%Y-%%m-%%d\') as `_date`, count(`%2$s`) as `_count`'];
         return sprintf($formats[$type], 'post_date', 'ID');
     };
     add_filter('posts_groupby', $groupbyFilter);
     add_filter('posts_fields', $fieldsFilter);
     $query = $this->orderBy('created_at', 'desc')->buildQuery();
     remove_filter('posts_groupby', $groupbyFilter);
     remove_filter('posts_fields', $fieldsFilter);
     return new Collection(array_map(function ($object) use($type) {
         return DateArchive::createFromFormat($type, 'Y-m-d', $object->_date)->setCount($object->_count);
     }, $query->posts));
 }
Пример #2
0
 /**
  * Get the date parameter.
  *
  * @return \Luminous\Bridge\Post\DateArchive|null
  */
 protected function getDate()
 {
     if (!($path = $this->route('date__path'))) {
         return null;
     }
     return DateArchive::createFromPath($path);
 }