WordPress, je te hais 4


Cherchant à rendre le formulaire commentaires de Sam et Max plus ergonomique, j’ai jeté un coup d’oeil sur le template lié.

L’intégralité du code qui génère le formulaire pourri que vous voyez sous l’article est ici:

<?php if ('open' == $post->comment_status) : ?>
        <?php comment_form( array('label_submit' => esc_attr__( 'Submit Comment', 'Minimal' ), 'title_reply' => '<span>' . esc_attr__( 'Leave a Reply', 'Minimal' ) . '</span>', 'title_reply_to' => esc_attr__( 'Leave a Reply to %s' )) ); ?>
<?php else: ?>
 
<?php endif; // if you delete this the sky will fall on your head ?>
</div> <!-- end comment-section -->

Je vous passe le commentaire amical qui stipule “si vous supprimez ceci le ciel vous tombera sur la tête” et toute remarque désobligeante sur le formatage absolument bordélique de l’intégralité du fichier.

Non, je reste optimise, je vois un comment_form qui encapsule la génération du formulaire. Peut être une API propre ? J’ai bon espoir (mais le fait que ce soit une fonction et non une classe aurait du me mettre la puce à l’oreille).

Je trouve un très bon article qui explique où on trouve ce merveilleux comment_form (ben oui parceque les includes et autoloads en PHP c’est pas vraiment le truc le plus top pour retrouver la chaîne de dépendances). Et là, je n’ai rien supprimé, mais le ciel m’est quand même tombé sur la gueule. Et toute la couche d’ozone avec.

La valeur par défaut d’UN des paramètres de la fonction qui génère le formulaire, c’est ça :

<?php $defaults = array( 'fields' => apply_filters( 'comment_form_default_fields', array(
    'author' => '<p class="comment-form-author">' .
                '<label for="author">' . __( 'Name' ) . '</label> ' .
                ( $req ? '<span class="required">*</span>' : '' ) .
                '<input id="author" name="author" type="text" value="' .
                esc_attr( $commenter['comment_author'] ) . '" size="30" tabindex="1"' . $aria_req . ' />' .
                '</p><!-- #form-section-author .form-section -->',
    'email'  => '<p class="comment-form-email">' .
                '<label for="email">' . __( 'Email' ) . '</label> ' .
                ( $req ? '<span class="required">*</span>' : '' ) .
                '<input id="email" name="email" type="text" value="' . esc_attr(  $commenter['comment_author_email'] ) . '" size="30" tabindex="2"' . $aria_req . ' />' .
                '</p><!-- #form-section-email .form-section -->',
    'url'    => '
<p class="comment-form-url">' .</p>
 
                '<label for="url">' . __( 'Website' ) . '</label>' .
                '<input id="url" name="url" type="text" value="' . esc_attr( $commenter['comment_author_url'] ) . '" size="30" tabindex="3" />' .
                '
 
<!-- #<span class="hiddenSpellError" pre="">form-section-url</span> .form-section -->' ) ),
    'comment_field' => '<p class="comment-form-comment">' .
                '<label for="comment">' . __( 'Comment' ) . '</label>' .
                '<textarea id="comment" name="comment" cols="45" rows="8" tabindex="4" aria-required="true"></textarea>' .
                '</p><!-- #form-section-comment .form-section -->',
    'must_log_in' => '
<p class="must-log-in">' .  sprintf( __( 'You must be <a href="%s">logged in</a> to post a comment.' ), wp_login_url( apply_filters( 'the_permalink', get_permalink( $post_id ) ) ) ) . '</p>
 
',
    'logged_in_as' => '
<p class="logged-in-as">' . sprintf( __( 'Logged in as <a href="%s">%s</a>. <a title="Log out of this account" href="%s">Log out?</a></p>
 
' ), admin_url( 'profile.php' ), $user_identity, wp_logout_url( apply_filters( 'the_permalink', get_permalink( $post_id ) ) ) ),
    'comment_notes_before' => '<p class="comment-notes">' . __( 'Your email is <em>never</em> published nor shared.' ) . ( $req ? __( ' Required fields are marked <span class="required">*</span>' ) : '' ) . '</p>',
    'comment_notes_after' => '<dl class="form-allowed-tags"><dt>' . __( 'You may use these <abbr title="HyperText Markup Language">HTML</abbr> tags and attributes:' ) . '</dt> <dd><code>' . allowed_tags() . '</code></dd>',
    'id_form' => 'commentform',
    'id_submit' => 'submit',
    'title_reply' => __( 'Leave a Reply' ),
    'title_reply_to' => __( 'Leave a Reply to %s' ),
    'cancel_reply_link' => __( 'Cancel reply' ),
    'label_submit' => __( 'Post Comment' ),
); ?>

Je ne sais pas ce qui me rend le plus malade.

L’absence totale de la notion de template ?

Le fait qu’on passe l’intégralité du code HTML en PARAMETRE à une fonction qui est censée générer le formulaire ?

Le fait que le code est absolument inmodifiable car c’est un mélange de concaténations, d’arrays et d’appels à gettext ?

Je voulais juste modifier le HTML du formulaire de comments bordel !

BANG !

4 thoughts on “WordPress, je te hais

Leave a comment

Des questions Python sans rapport avec l'article ? Posez-les sur IndexError.