Normes de codage sandwich


8

J'ai récemment repéré le code d'un wp-lunch.phpfichier destiné à un modèle WordPress, à quoi cela ressemblerait-il si vous respectiez les normes de codage WordPress appropriées?

wp-lunch.php

<?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; ?>

Excellente question, laissez les jeux commencer!
Adam

Je pense que la question parfaite à poser ici, à quoi devrait the_filling()ressembler
Pieter Goosen

Que font tous ces développeurs WP le week-end? ;)
Nicolai

Réponses:


5

Que se passe-t-il si l'utilisateur n'a pas la capacité de manger un sandwich? WSOF?

Si je veux suivre des modèles de thèmes par défaut moyens, je choisirais

// 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' );

Et alors

// 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;

Cette requête se briserait s'il n'y avait pas de pain, car le pain n'est pas considéré comme une garniture et une partie essentielle d'un sandwich. Je recommande d'ajouter à la get_ingredients();place du get_fillings_query();pain et de la garniture. De plus, le remplissage devrait avoir une API JSON orientée vers l'avant;)
Wyck

5
<!-- 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; ?>

Espacement ajusté pour le style de codage, etc.

Le modèle de sandwich avec un peu de brindille, mangé sur le pré ressemblera à quelque chose comme:

{% 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 %}

3
Tout ça <?phpme donne des frissons.
gmazzap

7
@GM J'ai pensé à introduire le modèle Moustache, mais qui veut de la moustache dans son sandwich?
Rarst

4
Si je trouvais une brindille dans mon sandwich, je pourrais le supporter, mais pas une moustache.
Adam

1

Pas besoin de tous les délimiteurs d'ouverture et de fermeture ou d'espace de ligne clair lorsqu'ils sont déjà en retrait:

<?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();
}

Devrait probablement avoir une réinitialisation des données de remplissage par la suite aussi ...

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.