Поддержка Проблемы и решения при активации плагина (шоркод) множественные ошибки

  • сам плагин работает, но активация плагина вызывает ошибку

    Плагин создал 468 символов неожиданного вывода при активации. Если возникнет ошибка “headers already sent” с RSS-лентами или иные проблемы, то попробуйте деактивировать или удалить этот плагин.

    плагин сохранен в UTF-8 без Бом, пустых строк, пробелов в коде нет.
    Сам код по ссылке https://rextester.com/FMVT78591

Просмотр 15 ответов — с 1 по 15 (всего 16)
  • Модератор Yuri

    (@yube)

    плагин сохранен в UTF-8 без Бом, пустых строк, пробелов в коде нет.

    Зато есть <style>...</style>, которого там не должно быть в принципе. Хочется вывести стили — используйте хуки.

    Юрий (@yube) так?

    add_action( 'wp_enqueue_scripts', 'style_scripts' );
    function style_scripts () {
        wp_register_style( 'my_styles', plugins_url('styles-items-shortcodes-rules.css',__FILE__ ));
        wp_enqueue_style( 'my_styles' );
    }
    
    add_action( 'wp_enqueue_scripts', 'styles-items-shortcodes-rules.css', 30 );
    Модератор Yuri

    (@yube)

    Если работает, значит можно и так.

    Хотя я бы использовал менее банальный хендлер, чем my_styles, дабы избежать возможных коллизий.

    Юрий (@yube)

    Хотя я бы использовал менее банальный хендлер

    коллизии мне не нужны, но не знаю что это такое «хендлер», пример можете дать? или где почитать

    что это такое «хендлер»

    my_styles замените на jurvrn_styles

    Модератор Yuri

    (@yube)

    Во даже не посмотрели описания функций, которые использовали? Правильно! Настоящие программисты доки не читают 🙂

    https://codex.wordpress.org/Function_Reference/wp_register_style

    Parameters
    $handle
    (string) (required) Name of the stylesheet (which should be unique as it is used to identify the script in the whole system).

    my_styles — слишком банально, чтобы быть уникальным.

    tuxfighter (@tuxfighter), Юрий (@yube) я не понял что это просто «наименование»…
    Вы же знаете что я не программист и знания получаю по мере возникновения вопросов.
    Статью почитал по ссылке. А есть более простой способ подключить стиль к php коду? например если файл с описанием стиля лежит в той же папке:

    <?php 
    echo file_get_contents("/new-style.css");
    return "<span id='newstyle'>Текст</span>";
    ?>

    и вот это «In a Plugin (outside a PHP class)» я ещё понял, а что значит «In a Plugin (inside a PHP class)» — там уже как бы плагин создается. И как его использовать?

    Вы же знаете что я не программист

    я вообще дизайнер, причем даже не веб.
    Но что-то сразу понял о чем идет речь.

    Модератор Yuri

    (@yube)

    Вы же знаете что я не программист

    Никто не совершенен. Но коль уж взялся за гуж (сиречь код), не говори, что не дюж.

    А есть более простой способ подключить стиль к php коду?

    php-коду css — как корове седло.

    А есть более простой способ

    Да. Вывести на хуке wp_head. Так можно делать, если не волнуют зависимости и css не настолько велик, чтобы сильно изгадить html страницы.

    например если файл с описанием стиля лежит в той же папке:

    Да какая разница, где он лежит? Важно в какой момент вывести его (или «ссылку» на него). Собственно, и для этого тоже придуманы хуки. А если выводить годе попало, то и результат будет какой попало.
    Вот это хороший пример «как попало»

    <?php 
    echo file_get_contents("/new-style.css");
    return "<span id='newstyle'>Текст</span>";
    ?>

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

    Юрий (@yube) я и пытаюсь разобраться хоть не много чтобы понимать….

    Да какая разница, где он лежит? Важно в какой момент вывести его (или «ссылку» на него).

    значит самый правильный вариант через add_action( 'wp_enqueue_scripts', 'style_scripts' );...... ?
    и в том файле прописывать все нужные стили.
    Нужно выводить в момент «подключения» шорткода

    Модератор Yuri

    (@yube)

    значит самый правильный вариант через add_action( 'wp_enqueue_scripts', 'style_scripts' );......?

    Самый каноничный, скажем так.

    Нужно выводить в момент «подключения» шорткода

    В момент подключения (add_shortcode) ничего выводить нельзя категорически, потому что этот момент наступает во время инициализации движка.

    В момент вызова обработчика тоже выводить ничего не стоит, потому что этот момент приходится на работу функции the_content (или вызова фильтров ‘the_content’).

    Выводить сами стили или подключать файл стилей нужно во время формирования/вывода <head>, ибо только там положено быть стилям.

    Как и многое в жизни, тут всё надо делать вовремя, не раньше и не позже.

    Юрий (@yube), так неужели нужно просто в header прописать подключение стилей?
    А как и где подключается основной для темы файл стилей style.css?

    Модератор Yuri

    (@yube)

    так неужели нужно просто в header прописать подключение стилей?

    ну а куда ж еще?

    А как и где подключается основной для темы файл стилей style.css?

    В старые добрые времена прописывали в шаблон header.php

    <link rel="stylesheet" type="text/css" media="all" href="<?php bloginfo( 'stylesheet_url' ); ?>" />
    

    Но с некоторых пор считается правильным в functions.php

    wp_enqueue_style( 'twentythirteen-style', get_stylesheet_uri(), array(), '2013-07-18' );
    

    Юрий (@yube), по подключению полностью вас понял. Но есть ли правильный способ описывать стили в самом php файле, без создания отдельного файла css? собственно из чего и возникла эта тема.

    Модератор Yuri

    (@yube)

    Но есть ли правильный способ описывать стили в самом php файле, без создания отдельного файла css?

    Самый простой вариант:

    add_action( 'wp_head', function() { ?>
    
    <style>
    ....
    </style>
    
    <?php });
    
    
Просмотр 15 ответов — с 1 по 15 (всего 16)
  • Тема «при активации плагина (шоркод) множественные ошибки» закрыта для новых ответов.