Поддержка Плагины Создание шорткодов

  • Всем привет.

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

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

    Например,
    [php] the_permalink() [/php]
    работает при вставке в контент и при вставке через шорткод, созданный через тему.

    Но, например, при использовании скрипта share42, все работает, кроме php-кода (the_permalink()) и т.д. Код курочить нельзя, другие возможности пока осваиваю.
    Пробовал вставлять в тему в разные места. Просто
    <strong>[php] the_permalink() [/php]</strong>
    работает, а
    <div class="share42init" data-url="<strong>[php] the_permalink() [/php]</strong>" data-title="<strong>[php] the_title() [/php]</strong>"></div>
    нет.
    Нашел обходной способ, сделать простейший плагин, в котором только функции и создание шорткода для этой функции, без всяких других возможностей. Так работает.

    Собственно вопрос 1, так нормально? Не будет каких подводных камней?
    Такие простейшие плагины я видел в репозитарии вордпрес.

    И вопрос 2, как лучше, сделать отдельно плагин на каждый шорткод или один плагин на все шорткоды ?

    • Тема изменена 5 лет, 10 месяцев назад пользователем savsoft.
    • Тема изменена 5 лет, 10 месяцев назад пользователем savsoft.
    • Тема изменена 5 лет, 10 месяцев назад пользователем savsoft.
Просмотр 9 ответов — с 1 по 9 (всего 9)
  • Это называется велосипед велосипедистый на костылях. Зачем? Есть же правильный вариант — написать свой шорткод. Не умеете, или сложно разобраться? — наймите специалиста и пусть вам сделает правильно. Задача у вас простая — такса большой быть не должна. На том же кворке за 500р вам сделают

    Что значит написать свой шорткод? Если в плагине написать функцию и добавить ее как шорткод это не то, что нужно?

    Модератор Denis Yanchevskiy

    (@denisco)

    WordPress-разработчик, denisco.pro

    Что значит написать свой шорткод?

    Например,

    function my_title_shortcode($atts) {
        return get_the_title();
    }
    
    add_shortcode('my_title', 'my_title_shortcode');

    и затем использовать [my_title] вместо [php] the_title() [/php].

    Также, можно воспользоваться плагинами для создания шорткодов, например, Add Shortcodes Actions And Filters. Ну и бонусом можно прикрутить, например, выпадающее меню для шорткодов с помощью плагина DCO Shortcodes Menu.

    P.S. Выводить the_title() в атрибут не стоит, рискуете поломать верстку. Либо пользуйтесь экранированием esc_attr(get_the_title()), либо сразу выводите экранированный заголовок с помощью the_title_attribute().

    Плагином для шорткодов мне смысла пользоваться нет, тема сама позволяет их создавать. Просто при вставке share42 с помощью шорткодов или через тему — php код не срабатывает. Наверное потому, что он как-то обрабатывается через javascript share42. Собственно, чтобы не курочить код темы, я сделал простейший плагин для создания шорткода. Так работает. Думаю, что если сделать дочернюю тему и там создать шорткод — тоже будет работать. Собственно вопрос, как лучше, создавать дочернюю тему или сделать плагин? И если плагин, то лучше в одном плагине создать все шорткоды или отдельный плагин для каждого. Под плагином я имею введу код

    <?php
    /*
    Plugin Name: Share Button 42
    Plugin URI: http://www.site.com
    Description: A simple shortcode that lets you insert share42 button in your content.
    Version: 0.1
    Author: Alex
    Author URI: http://www.site.com
    */
    
    function InsertSB42( $atts, $content = null ) {
    	$SB42Str = '<div class="share42init socialbuttonleftmargin" data-url="' . the_permalink() . '" data-title="' . the_title() . '"></div>';
    	
    	return $SB42Str;
    }
    
    add_shortcode( "sb42", "InsertSB42" );
    ?>

    Собственно вопрос, как лучше, создавать дочернюю тему

    https://ru.wordpress.org/plugins/child-theme-configurator/

    при вставке share42

    Скрипты share42 и Pluso далеко не лучшие (а то и вредные) способы интеграции кнопок «Поделиться» в ваш сайт.
    Все уже давно решено плагинами. Так что не надо изобретать велосипед. Вот к примеру один из лучших плагинов для кнопок (и не только для кнопок….) с поддержкой всех российских соц. сетей https://ru.wordpress.org/plugins/super-socializer/ Только не говорите что «хотите обойтись без плагинов». Не вы первый, не вы последний, и к сожалению не вы последний кто говорит такую ерунду.

    P.S. Даже для ваших share42 есть плагин. Правда он такой же древний, как и сам способ share42 https://ru.wordpress.org/plugins/socialize-it/

    • Ответ изменён 5 лет, 10 месяцев назад пользователем O.
    • Ответ изменён 5 лет, 10 месяцев назад пользователем O.
    • Ответ изменён 5 лет, 10 месяцев назад пользователем O.
    • Ответ изменён 5 лет, 10 месяцев назад пользователем O.
    • Ответ изменён 5 лет, 10 месяцев назад пользователем O.

    Не получилось у меня понятно задать вопрос. Такое ощущение, что его вообще никто не прочитал. Разобью вопрос на два. Кто знает, помогите плиз.

    Задача создать простейший шорткод без плагина. Типа

    <?php
    /*
    Plugin Name: PluginName
    Plugin URI: http://www.site.com
    Description: A simple shortcode.
    Version: 0.1
    Author: Author
    Author URI: http://www.site.com
    */
    
    function FUNC4SH( $atts, $content = null ) {
    	$Str = 'Строка';
    	return $Str;
    }
    add_shortcode( "SCName", "FUNC4SH" );
    ?>

    Вопрос 1.

    Реализация через дочернюю тему или через плагин? Какой вариант лучше?

    Вопрос 2.

    Если через плагин, и необходимо сделать несколько шорткодов, то какой вариант лучше, сделать один плагин со всеми шорткодами или отдельные плагины на каждый шорткод? Какой вариант производительнее и требует меньше памяти.

    Спасибо.

    • Ответ изменён 5 лет, 10 месяцев назад пользователем savsoft.

    Не получилось у меня понятно задать вопрос. ..

    Потому что в каждом вашем сообщении сразу по нескольку вопросов. Например:

    Собственно вопрос, как лучше, создавать дочернюю тему или сделать плагин? И если плагин, то лучше в одном плагине создать все шорткоды или отдельный плагин для каждого.

    … Разобью вопрос на два.

    Теперь вы понимаете для чего существуют правила этого форума?
    Пункт 2

    Такое ощущение, что его вообще никто не прочитал.

    Точно такое же ощущение создается что вы не читаете ответов. Лично я рекомендовал вам самое главное — вместо того чтобы изобретая велосипед по вставке кнопок соц сетей от почти умершего share42 плясать с бубном и теряя время морочить голову себе и другим — воспользоваться правильными и готовыми решениями.

    • Ответ изменён 5 лет, 10 месяцев назад пользователем O.
    • Ответ изменён 5 лет, 10 месяцев назад пользователем O.
    • Ответ изменён 5 лет, 10 месяцев назад пользователем O.

    Хорошо, в самом начале первого поста я написал, что это общий вопрос. Шара42 чисто как пример. Реально мне поставлена задача выводить инфу через шорткоды. Таких плагинов не существует в природе вообще, ибо инфа берется с самописной программы заказчика. PHP-код вставленный через плагин для создания шорткодов не всегда работает. Там где виджеты обрабатываются javascript php-код не работает. Я в тестовом сайте вставил нужный код в functions.php и все заработало. Но заказчик запрещает изменять файлы темы. Значит нужно использовать дочернюю тему. Или оформить код в виде простого плагина. Собственно один вопрос. Если нужно несколько шорткодов, их лучше сделать в одном плагине или по плагину на шорткод?

    Для конкретного проекта пойдет вариант плагина (может даже MU плагина — чтобы его случайно не отключили). В одном плагине коллекция из нескольких шорткодов. Когда случится неладное — вы будете знать что у вас все шорткоды отрабатывают из одного плагина.

Просмотр 9 ответов — с 1 по 9 (всего 9)
  • Тема «Создание шорткодов» закрыта для новых ответов.