web-dev-qa-db-fra.com

Modification du fichier media-template.php, dans le bon sens?

Le shortcode [gallery] accepte le columns='0' en tant qu'attribut, de sorte qu'il n'insère aucune rupture dans le code HTML entre les éléments de la galerie. Toutefois, cette option n'est pas disponible dans l'interface Paramètres de la galerie (la fenêtre "Ajouter un média" lors de la modification de pages/publications).

J'ai localisé le code dans wp-includes\media-template.php ligne 396 à 406;

<label class="setting">
    <span><?php _e('Columns'); ?></span>
    <select class="columns" name="columns"
        data-setting="columns">
        <?php for ( $i = 1; $i <= 9; $i++ ) : ?>
            <option value="<?php echo esc_attr( $i ); ?>" <?php selected( $i, 3 ); ?>>
                <?php echo esc_html( $i ); ?>
            </option>
        <?php endfor; ?>
    </select>
</label>

Je ne veux pas éditer directement un fichier core, mais j'aimerais ajouter <option value="0">Responsive</option> à cette liste. Quelle est la meilleure façon de faire cela sans éditer les fichiers core? Je pensais à une sorte de filtre, bien que je ne les connaisse pas trop.

5
Michael Ruta

Vous êtes dans un très bon cornichon ici.

Autant que je sache, vous pouvez faire certaines choses. Les deux sont un peu délicats.

Conseillé

Celui que je recommanderais serait d’utiliser la do_action('print_media_templates') au bas de ce fichier. Ce n'est pas parfait, mais vous pouvez ajouter un champ supplémentaire ici pour prendre en compte l'aspect réactif que vous souhaitez ajouter.

Possible, mais non recommandé

Une autre option consiste à modifier réellement les actions définies dans /wp-includes/media.php lignes 2022-2024. Regarde ça:

function custom_print_media_templates() {
  remove_action( 'admin_footer', 'wp_print_media_templates' );
  remove_action( 'wp_footer', 'wp_print_media_templates' );
  remove_action( 'customize_controls_print_footer_scripts', 'wp_print_media_templates' );

  add_action( 'admin_footer', 'custom_print_media_templates' );
  add_action( 'wp_footer', 'custom_print_media_templates' );
  add_action( 'customize_controls_print_footer_scripts', 'custom_print_media_templates' );
}
add_action( 'wp_enqueue_media', 'custom_print_media_templates' );

Vous devrez ensuite créer une fonction appelée custom_print_media_templates() qui reflète celle de wp-includes/media-template.php. Le problème ici est que toute modification apportée à WordPress pour ce fichier devra être répliquée dans votre fichier. C'est pourquoi je ne recommande pas ce chemin.

2
MikeNGarrett