Переопределить шорткод галереи (WordPress), если имеет заданный параметр - PullRequest
0 голосов
/ 10 октября 2018

Я хочу «переопределить» шорткод «галереи» по умолчанию (WordPress), но только если я использовал заданный параметр для этого шорткода галереи.

Например:

[gallery ids="1,2,3"]

У него нет параметра, поэтому он выведет стандартный код галереи.

[gallery mode="custom" ids="1,2,3"]

У него есть мой параметр "mode", поэтому он выведет другой шорткод.

Для этого я создал короткий код "галереи" в файле functions.php:

function get_new_gallery( $atts ) {
    extract( shortcode_atts( array(
        'mode' => '',
        'ids' => '',
    ), $atts ) );

    $code ="";
    if ($mode == "custom") {
        //* Output custom shortcode
        $code = '[custom_gallery ids="' . $ids . '"]';
    } else {
        //* Need to do nothing...but don't know how to do it
        $code = '[gallery ids="' . $ids . '"]'; /* Here's the problem, it causes a loop */
    }
    return do_shortcode($code);
}

add_shortcode( 'gallery', 'get_new_gallery' );

Он отлично работает, когда я использую параметр mode = "custom".Он просто выводит новый шорткод: [custom_gallery ...]

Однако, если параметр не используется, он прерывается, потому что входит в бесконечный цикл .В коде есть комментарий со строкой, которая разбивает его.

Я хочу выполнить стандартный шорткод «галерея», если не введен ни один параметр.Но учитывая, что я перезаписал это ... не знаю, как "вырезать" из цикла и просто выполнить галерею.

Любая помощь?

Заранее спасибо.

1 Ответ

0 голосов
/ 13 октября 2018

Может быть, альтернативный подход может помочь?Как насчет фильтра по галерее шорткода.См. Ссылки: https://codex.wordpress.org/Plugin_API/Filter_Reference/post_gallery

и:

https://wpbeaches.com/filtering-gallery-image-output-wordpress/

...