Created
September 20, 2017 00:14
-
-
Save Log1x/2a61c77c49b06af64004383c08af3410 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
namespace App; | |
add_action('after_setup_theme', function() { | |
$sage = sage('blade')->compiler(); | |
/** | |
* Create @asset() Blade directive | |
*/ | |
$sage->directive('asset', function ($asset) { | |
return "<?= App\\asset_path({$asset}); ?>"; | |
}); | |
/** | |
* Create @query() Blade directive | |
*/ | |
$sage->directive('query', function ($expression) { | |
return "<?php \$bladeQuery = new WP_Query($expression); ?>"; | |
}); | |
/** | |
* Create @posts Blade directive | |
*/ | |
$sage->directive('posts', function () { | |
return '<?php while ($bladeQuery->have_posts()) : $bladeQuery->the_post(); ?>'; | |
}); | |
/** | |
* Create @endposts Blade directive | |
*/ | |
$sage->directive('endposts', function() { | |
return "<?php endwhile; wp_reset_query(); ?>"; | |
}); | |
/** | |
* Advanced Custom Fields Blade directives | |
*/ | |
/** | |
* Create @fields() Blade directive | |
*/ | |
$sage->directive('fields', function ($expression) { | |
$expression = strtr($expression, ['(' => '', ')' => '']); | |
$output = "<?php if (have_rows($expression)) : ?>"; | |
$output .= "<?php while (have_rows($expression)) : ?>"; | |
$output .= "<?php the_row(); ?>"; | |
return $output; | |
}); | |
/** | |
* Create @endFields Blade directive | |
*/ | |
$sage->directive('endFields', function () { | |
return "<?php endwhile; endif; ?>"; | |
}); | |
/** | |
* Create @field() Blade directive | |
*/ | |
$sage->directive('field', function ($expression) { | |
$expression = strtr($expression, ['(' => '', ')' => '']); | |
return "<?php echo field($expression)->get(); ?>"; | |
}); | |
/** | |
* Create @getField() Blade directive | |
*/ | |
$sage->directive('getField', function ($expression) { | |
$expression = strtr($expression, ['(' => '', ')' => '']); | |
return "<?php return field($expression)->get(); ?>"; | |
}); | |
/** | |
* Create @hasField() Blade directive | |
*/ | |
$sage->directive('hasField', function ($expression) { | |
$expression = strtr($expression, ['(' => '', ')' => '']); | |
return "<?php if (field($expression)->get()) : ?>"; | |
}); | |
/** | |
* Create @endField Blade directive | |
*/ | |
$sage->directive('endField', function () { | |
return "<?php endif; ?>"; | |
}); | |
/** | |
* Create @sub() Blade directive | |
*/ | |
$sage->directive('sub', function ($expression) { | |
$expression = strtr($expression, ['(' => '', ')' => '']); | |
return "<?php echo sub($expression)->get(); ?>"; | |
}); | |
/** | |
* Create @getSub() Blade directive | |
*/ | |
$sage->directive('getSub', function ($expression) { | |
$expression = strtr($expression, ['(' => '', ')' => '']); | |
return "<?php return sub($expression)->get(); ?>"; | |
}); | |
/** | |
* Create @hasSub() Blade directive | |
*/ | |
$sage->directive('hasSub', function ($expression) { | |
$expression = strtr($expression, ['(' => '', ')' => '']); | |
return "<?php if (sub($expression)->get()) : ?>"; | |
}); | |
/** | |
* Create @isSub() Blade directive | |
*/ | |
$sage->directive('isSub', function($expression) { | |
list($name, $value) = explode(', ', strtr($expression, ['(' => '', ')' => ''])); | |
return "<?php if (sub($name)->get() == $value): ?>"; | |
}); | |
/** | |
* Create @endSub Blade directive | |
*/ | |
$sage->directive('endSub', function () { | |
return "<?php endif; ?>"; | |
}); | |
/** | |
* Create @layouts() Blade directive | |
*/ | |
$sage->directive('layouts', function ($expression) { | |
$expression = strtr($expression, ['(' => '', ')' => '']); | |
return "<?php while (have_rows($expression)) : the_row(); ?>"; | |
}); | |
/** | |
* Create @endLayouts Blade directive | |
*/ | |
$sage->directive('endLayouts', function () { | |
return "<?php endwhile; ?>"; | |
}); | |
/** | |
* Create @layout() Blade directive | |
*/ | |
$sage->directive('layout', function ($expression) { | |
$expression = strtr($expression, ['(' => '', ')' => '']); | |
return "<?php if (get_row_layout() == $expression) : ?>"; | |
}); | |
/** | |
* Create @endLayout Blade directive | |
*/ | |
$sage->directive('endLayout', function () { | |
return "<?php endif; ?>"; | |
}); | |
/** | |
* Create @group() Blade directive | |
*/ | |
$sage->directive('group', function ($expression) { | |
$expression = strtr($expression, ['(' => '', ')' => '']); | |
return "<?php if (have_rows($expression)) : while (have_rows($expression)) : the_row(); ?>"; | |
}); | |
/** | |
* Create @endGroup Blade directive | |
*/ | |
$sage->directive('endGroup', function () { | |
return "<?php endwhile; endif; ?>"; | |
}); | |
/** | |
* Create @option() Blade directive | |
*/ | |
$sage->directive('option', function ($expression) { | |
$expression = strtr($expression, ['(' => '', ')' => '']); | |
return "<?php echo option($expression)->get(); ?>"; | |
}); | |
/** | |
* Create @hasOption() Blade directive | |
*/ | |
$sage->directive('hasOption', function ($expression) { | |
$expression = strtr($expression, ['(' => '', ')' => '']); | |
return "<?php if (option($expression)->get()) : ?>"; | |
}); | |
/** | |
* Create @endOption Blade directive | |
*/ | |
$sage->directive('endOption', function ($expression) { | |
$expression = strtr($expression, ['(' => '', ')' => '']); | |
return "<?php endif; ?>"; | |
}); | |
/** | |
* Create @options() Blade directive | |
*/ | |
$sage->directive('options', function ($expression) { | |
$expression = strtr($expression, ['(' => '', ')' => '']); | |
$output = "<?php if (have_rows($expression, 'options')) : ?>"; | |
$output .= "<?php while (have_rows($expression, 'options')) : ?>"; | |
$output .= "<?php the_row(); ?>"; | |
return $output; | |
}); | |
/** | |
* Create @endOptions Blade directive | |
*/ | |
$sage->directive('endOptions', function () { | |
return "<?php endwhile; endif; ?>"; | |
}); | |
/** | |
* Create @endFields Blade directive | |
*/ | |
$sage->directive('endFields', function () { | |
return "<?php endwhile; endif; ?>"; | |
}); | |
/** | |
* Create @shortcode() Blade directive | |
*/ | |
$sage->directive('shortcode', function($expression) { | |
$expression = strtr($expression, ['(' => '', ')' => '']); | |
return "<?php echo do_shortcode($expression); ?>"; | |
}); | |
/** | |
* Create @set() Blade directive | |
*/ | |
$sage->directive('set', function($expression) { | |
list($name, $value) = explode(', ', strtr($expression, ['(' => '', ')' => ''])); | |
return "<?php ${$name} = {$value}; ?>"; | |
}); | |
/** | |
* Create @unset() Blade directive | |
*/ | |
$sage->directive('unset', function($expression) { | |
list($name, $value) = explode(', ', strtr($expression, ['(' => '', ')' => ''])); | |
return "<?php unset ${$expression}; ?>"; | |
}); | |
/** | |
* Create @extract() Blade directive | |
*/ | |
$sage->directive('extract', function($expression) { | |
return "<?php @extract($expression); ?>"; | |
}); | |
/** | |
* Create @dump() Blade directive | |
*/ | |
$sage->directive('dump', function($obj) { | |
return "<?php App\\dump($obj, false); ?>"; | |
}); | |
/** | |
* Create @console() Blade directive | |
*/ | |
$sage->directive('console', function($obj) { | |
return "<?php App\\dump($obj, true); ?>"; | |
}); | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment