Skip to content

Instantly share code, notes, and snippets.

@Xilonz
Created February 27, 2018 10:50
Show Gist options
  • Save Xilonz/c02e93ea08c25ab088e1fa54fcee69d9 to your computer and use it in GitHub Desktop.
Save Xilonz/c02e93ea08c25ab088e1fa54fcee69d9 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
*/
sage('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
*/
sage('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