Skip to content

Instantly share code, notes, and snippets.

@huubl
Forked from Xilonz/setup.php
Last active August 30, 2020 13:39
Show Gist options
  • Save huubl/733262832013b6c7f7b315187ae039da to your computer and use it in GitHub Desktop.
Save huubl/733262832013b6c7f7b315187ae039da to your computer and use it in GitHub Desktop.
Sage Wordpress Query Loop for Blade templates
/**
* Add this to your setup.php
* Usage @loop( $wp_query ) or $loop and end with @endloop
* the new $loop variable is available
*
* Create @loop Blade directive
*/
\Roots\app('blade.compiler')->directive('loop', function ($query = null) {
global $wp_query;
if (!$query) $query = $wp_query;
$initLoop = "\$__currentLoopData = {$query}; \$__env->addLoop(\$__currentLoopData->posts);";
$iterateLoop = '$__env->incrementLoopIndices(); $loop = $__env->getLastLoop(); $__currentLoopData->the_post();';
return "<?php {$initLoop} while(\$__currentLoopData->have_posts()): {$iterateLoop} ?>";
});
/**
* Create @endloop Blade directive
*/
\Roots\app('blade.compiler')->directive('endloop', function () {
return '<?php endwhile; $__env->popLoop(); $loop = $__env->getLastLoop(); ?>';
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment