Dzisiaj na jednej z grup supoprtowych pojawiło się następujące pytanie:
Czy da się jakoś zmienić domyślne ustawienia galerii? Chciałbym mieć na start ustawione 4 kolumny oraz linkowanie do pliku, a nie strony załącznika.
No właśnie, da się? Oczywiście, że się da, a potrzebujemy w tym celu poniższych dwóch funkcji:
function prefiks_print_media_templates() {
?>
<script>
jQuery(document).ready(function() {
_.extend(wp.media.galleryDefaults, {
columns: '4',
link: 'file',
});
});
</script>
<?php
}
add_action('print_media_templates', 'prefiks_print_media_templates');
function prefiks_shortcode_atts_gallery($out, $pairs, $atts) {
if ( ! array_key_exists('columns', $atts) || ! intval( $atts['columns'] ) ) {
$out['columns'] = 4;
}
if ( ! array_key_exists('link', $atts) ) {
$out['link'] = 'file';
}
return $out;
}
add_filter('shortcode_atts_gallery', 'prefiks_shortcode_atts_gallery', 10, 3);
Dodatkowe warianty i pytania
-
Naprawdę potrzebuję do tego aż dwóch funkcji?
- Niestety tak. Pierwsza z nich
prefiks_print_media_templates
dba o to, aby w edytorze galerii pojawiały się poprawne wartości jako domyślne. Dba ona także o to, aby domyślne wartości nie były wstawiane w treść wpisu (w końcu są domyślne). Ale ponieważ te wartości nie są zapisywane, to WordPress wygeneruje niepoprawny kod galerii, bo przyjmie tam sobie własne domyślne wartości, a nie nasze. I tu z pomocą przychodzi właśnie druga funkcja, która podmieni te wartości na nasze. -
Ktoś podpowiedział mi, że mogę użyć filtru
post_gallery
i stworzyć własny kod galerii. Czy to prawda? - Tak, rzeczywiście można zrobić to i w ten sposób. Ale… My przecież chcemy tylko zmienić domyślne ustawienia, a nie implementować całą galerię od nowa i brać na siebie odpowiedzialność za jej kod HTML. Rozwiązanie oparte na
post_gallery
nijak nie wpłynie też na sam edytor galerii, czyli galeria będzie zachowywać się niespójnie – w ustawieniach będzie widoczne „3 kolumny”, a galeria renderować będzie się w czterech.