Ответы в темах

Просмотр 15 ответов — с 1 по 15 (всего 22)
  • ipsoltl,
    Значит, вручную, через админ-панель — никак.
    Понятно.

    Юрий,
    Просто здесь и здесь ни слова не говорится
    о том, что post_mime_type может быть массив.

    Юрий:
    В базе данных в таблице wp_posts каждый файл
    (тип поста — ‘attachment’) имеет свой MIME.
    Я о другом: для того, чтобы при помощи функции
    get_children извлечь подмножество вложений
    в post_mime_type имена MIME-типов нужно занести через запятую ?
    Или можно ввести только один MIME-тип ?
    Или как-то по-другому ?

    при должной сноровке ajax можно писать самому

    Так и поступим:
    — опыт;
    — jQuery;
    — интерфейсы из WordPress.

    Ну, например, так:

    $arr = explode('/', wp_parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH));
    $currentCategorySlug = $arr[count($arr)-2];

    А вот и ответ на вопрос How to uninstall Polylang?

    Ну, короче. Отчёт о проделанной работе.

    Из functions.php дочерней темы mytheme-child я все выбросил.
    Оставил только функцию

    function myLocalizationSetup(){
      load_child_theme_textdomain('mytheme-child', get_stylesheet_directory() . '/languages' );
    }

    В файле-шаблоне page-main.php ввёл такой текст:

    <?php
    $currentLocal = determine_locale(); // Исходная «локация»

    // Отображение исходной «локации» тремя способами.
    echo(‘determine_locale: ‘ . determine_locale() . ‘</br>’);
    echo(‘get_locale: ‘ . get_locale() . ‘</br>’);
    echo(‘get_user_locale: ‘ . get_user_locale() . ‘</br>’);

    // Активация требуемой локации ml_ML.
    add_filter(‘locale’, function() {return ‘ml_ML’;});
    apply_filters(‘locale’, ‘ml_ML’); // Второй параметр — формально.
    myLocalizationSetup(); // См. functions.php

    // Отображение «локации» после активации.
    echo(‘determine_locale: ‘ . determine_locale() . ‘</br>’);
    echo(‘get_locale: ‘ . get_locale() . ‘</br>’);
    echo(‘get_user_locale: ‘ . get_user_locale() . ‘</br>’);

    // Перевод.
    echo(__(‘Hello, interpreter !’, ‘mytheme-child’) . ‘</br></br>’);

    // Попытка восстановить исходную «локацию».
    switch_to_locale($currentLocal);

    // Проверка, что получилось после восстановления исходной «локации».
    echo(‘determine_locale: ‘ . determine_locale() . ‘</br>’);
    echo(‘get_locale: ‘ . get_locale() . ‘</br>’);
    echo(‘get_user_locale: ‘ . get_user_locale() . ‘</br>’);

    // Перевод
    echo(__(‘Hello, interpreter !’, ‘mytheme-child’) . ‘</br>’);
    ?>

    РЕЗУЛЬТАТ, кстати, совершенно одинаковый: как при запуске
    из «админки» в режиме view, так и при «обычном» запуске
    после log out из «админки».
    ———————————————————
    // Отображение исходной «локации» тремя способами.
    determine_locale: en_US
    get_locale: en_US
    get_user_locale: en_US

    // Отображение «локации» после активации.
    determine_locale: ml_ML
    get_locale: ml_ML
    get_user_locale: ml_ML

    // Перевод.
    Слава КПСС !

    // Проверка, что получилось после «восстановления» исходной «локации».
    determine_locale: ml_ML
    get_locale: ml_ML
    get_user_locale: ml_ML

    // Перевод.
    Hello, interpreter !

    Такие дела.

    К стати, интересный момент (отсюда)

    Новые фильтры должны иметь уникальные названия и не должны совпадать с уже имеющимися в WP названиями фильтров.

    Не понятно, что это даёт, если я могу под имеющееся уникальное название
    написать свою функцию обратного вызова и вольно или невольно мешать
    другой программе делать свою работу.
    Я могу дать случайное название своему фильтру.
    Под него написать несколько функций обратного вызова (CBF)…
    Они должны как-то согласовывать между собой свою работу…
    Как-то, по-моему, сложновато получается …

    Sergey Biryukov:

    В ожидании ответа на мой вопрос я решил сам смоделировать
    ситуацию и раскрутить всю эту последовательность вызовов.

    <?php
    // —- Опеделения CBF-функций.
    function CBF_1($value){echo(«</br>Internal CBF_1: » . $value . ‘</br>’); return «Returned by CBF_1»;}
    function CBF_2($value){echo(«</br>Internal CBF_2: » . $value . ‘</br>’); return «Returned by CBF_2»;}
    function CBF_3($value){echo(«</br>Internal CBF_3: » . $value . ‘</br>’); return «Returned by CBF_3»;}
    function CBF_4($value){echo(«</br>Internal CBF_4: » . $value . ‘</br>’); return «Returned by CBF_4»;}

    //—- Добавление фильтров
    add_filter(«someFilter», «CBF_4», 30);
    add_filter(«someFilter», «CBF_3», 20);
    add_filter(«someFilter», «CBF_2», 10);
    add_filter(«someFilter», «CBF_1», 10);

    // —- Применение фильтра
    echo(‘</br>’ . apply_filters(«someFilter»,’Hello filter !’));
    ?>

    Для меня неприятным моментом оказалось то, что возвращаемые
    значения этих функций передаются через аргумент следующей
    в цепочке функции:
    — выход CBF_2 -> на вход CBF_1;
    — выход CBF_1 -> на вход CBF_3;
    — выход CBF_3 -> на вход CBF_4;
    и я получаю выход CBF_4, который в реальной жизни может
    оказаться какой-то мешаниной, а не то, чего я ожидал.

    Вы отметили, что

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

    Я не понял, что вы имеете в виду: если я не знаю, кто и в какой момент
    использует то же самое имя фильтра, но с другой CBF, как я могу
    корректировать результат.

    Спасибо.

    Все роли и возможности (права, capability) пользователей
    перечислены здесь.

    • Ответ изменён 3 года, 8 месяцев назад пользователем vakho114.

    Юрий:

    И если с темой это в принципе реализуемо, то плагинам будет трудно объяснить, что, скажем, jquery уже подключили и не стоит это делать еще раз.

    То есть, если в процессе генерации страницы программа
    AA «поставит в очередь» myCSS.css, а потом программа
    BB попытается тоже «поставит в очередь» myCSS.css, то WordPress
    без скандала эту попытку проигнорирует, так как он уже в курсе
    дела, что странице нужен этот myCSS.css.
    А раскрутку «очереди» осуществляют wp_head() и wp_footer().

    В общем понятно.

    Yui:

    Штатно такой возможности нет.

    Понятно.
    А как подключить редактор, который используется на этом форуме ?
    Где об этом прочитать ?

    Спасибо.

    Юрий:

    Большое спасибо вам за то, что обратили моё внимание
    на get_stylesheet_directory_uri(). Вместо этой функции
    я поставил get_stylesheet_directory() — полный локальный путь
    до дочерней папки. Включил страницу, и всё заверте….

    Юрий:
    Значит, несмотря на то, что оператор require в functions.php
    отработал штатно, функции buildMainMenu() нет. Интересно-интересно.
    Я посмотрел functions.php из материнской темы. Так там при
    помощи require загружено большое количество всяких файлов.
    И я решил сделать декомпозицию программ, чтобы не валить
    их всех в один файл functions.php.

    А как происходит «оживление» функций из благополучно загруженных
    PHP-файлов ? Кто подключает их «по мере необходимости» ?

    Спасибо.

    Юрий, отлично !
    Продолжаем движение вперёд !

Просмотр 15 ответов — с 1 по 15 (всего 22)