私は最近 wp-lunch.php
ファイル WordPressテンプレート用の - コードを発見しましたが、これが適切なWordPressコーディング標準に従っているとしたらどうでしょうか。
<?php if ( current_user_can('has_sandwich') ): ?>
<?php get_sandwich_header(); ?>
<?php while( has_filling() ): the_filling(); ?>
<?php get_sandwich_part( 'thick_layer',
get_filling() ); ?>
<?php endwhile; ?>
<?php get_sandwich_footer(); ?>
<?php endif; ?>
ユーザーがサンドイッチを食べる能力を持っていないとどうなりますか? WSOF?
平均的なデフォルトテーマのテンプレートに従ってみたいのであれば、
// eat-sandwich.php (as @Rarst said avoid wp-lunch.php as it's not part of WP core)
get_header( 'sandwich' );
if ( current_user_can( 'eat_sandwich' ) ) {
get_template_part( 'eat-sandwich', 'content' );
} else { // user can't eat sandwich. An apple?
$alternative = apply_filters( 'alternative_to_sandwich', 'Apple' );
if ( 'sandwich' == $alternative ) {
// No sandwich allowed!
$alternative = 'Apple';
}
get_template_part( "eat-$alternative", 'content' );
}
get_footer( 'sandwich' );
その後
// eat-sandwich-content.php
$fillings = get_fillings_query(); // in functions.php
if ( $fillings->have_posts() ) : while ( $fillings->have_posts() ) :
get_template_part( 'filling', get_filling_type() );
endwhile;
wp_reset_postdata();
else :
_e( 'Sorry, no fillings found. Eating an Apple may help to stop hunger.', 'txtdomain');
endif;
<!-- file shouldn't be named wp-lunch.php as it's not part of WP core -->
<?php if ( current_user_can( 'eat_sandwich' ) ): // more specific verb makes more sense to me ?>
<?php get_header( 'sandwich' ); // native function accepts type argument ?>
<?php while ( have_fillings() ): the_filling(); // maybe native API, but feels acceptable wrapper for semantics ?>
<?php get_template_part( 'filling', get_filling_type() ); // native API, what would be `thick_layer` base? ?>
<?php endwhile; wp_reset_postdata(); // reset $post global ?>
<?php get_footer( 'sandwich' ); // native function accepts type argument ?>
<?php endif; ?>
コーディングスタイルなどのために調整された間隔.
Meadow で食べる小枝のビットのサンドイッチテンプレートは、次のようになります。
{% if ( current_user_can( 'eat_sandwich' ) ) %}
{% include 'header-sandwich.twig' %}
{% loop fillings %}
{% include 'filling-' ~ get_filling_type() ~ '.twig' ignore missing %}
{% endloop %}
{% include 'footer-sandwich.twig' %}
{% endif %}
すでにインデントされている場合は、すべての開始および終了デリミタやクリアラインスペースは不要です。
<?php
if ( current_user_can( 'has_sandwich' ) ) {
get_sandwich_header();
while ( has_filling() ) {
the_filling();
get_sandwich_part( 'thick_layer', get_filling() );
}
get_sandwich_footer();
}
おそらく後ほどデータを埋めるためのリセットもあるはずです….