Поддержка Проблемы и решения Вывод кода из html-файла через шорткод

  • Есть файл по сути html (kalendar4.php), содержащий форму. Есть файл плагина, создающий функцию шорткода с этой формой. В итоге не работает.
    Структура файлов: в папке темы kalendar4.php и в */domains/jurvrn.ru/public_html/wp-content/plugins/my-shortcode-kalendar/kalendar-plugin-function.php.
    kalendar3.php

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Calendar-title-list</title>
    </head>
    <body>
        
    <style type="text/css">
        .tg  {border-collapse:collapse;border-spacing:0;border-style:solid;border-width:1px;border-color:#561;margin:0px auto;}
    ************************
    </script>
    </body>
    </html>

    kalendar-plugin-function.php

    <?php
    /**
     * Created by jurvrn.
     * User: jurvrn
     */
    
    /**
     * Plugin Name: my-shortcode-kalendar
     */
    
    function my_shortcode_kalend ( $attr, $content = null ) {
          get_template_part( 'kalendar4' );
    }
    
    add_shortcode ( 'sck', 'my_shortcode_kalend' );
    ?>
    

    Страница, с которой нужна помощь: [войдите, чтобы увидеть ссылку]

Просмотр 9 ответов — с 1 по 9 (всего 9)
  • 
    function my_shortcode_kalend ( $attr, $content = null ) {
          ob_start();
          get_template_part( 'kalendar4' );
          return ob_get_clean();
    }
    
    add_shortcode ( 'sck', 'my_shortcode_kalend' );
    

    только как вы собрались выводить полноценную html-страницу внутри другой полноценной html-страницы мне непонятно.

    не сработало (
    для проверки сделал вывод текста, текст выводится.
    Изменил структуру — файл с кодом html поместил в папку с функцией и назвал kalendar.php

    <?php
    /**
     * Created by jurvrn.
     * User: jurvrn
     */
    
    /**
     * Plugin Name: my-shortcode-kalendar
     */
    
    add_shortcode ( 'kalend', 'my_shortcode_kalend' );
    function my_shortcode_kalend ( $attr, $content = null ) {
          ob_start();
          get_template_part( 'kalendar' );
          return ob_get_clean();
    	}
    	
    
    add_shortcode ( 'kalend1', 'my_shortcode_kalend1' );
    function my_shortcode_kalend1 ( $attr, $content = null ) {
    	  return 'Для календаря';
    	}
    
    ?>

    только как вы собрались выводить полноценную html-страницу внутри другой полноценной html-страницы мне непонятно.

    я собираюсь вставить это в виджет.
    мне нужно «обрезать» kalendar4.php, «очистить» от идентификации кода html, сделать из него php ?
    Может вообще лучше тогда в саму функцию встроить код календаря, а потом уже функцию обернуть в шорткод? Или сразу создать виджет? Но хотелось шорткод.

    решил, спасибо Flector (@flector) (на сайте я о вас написал 🙂 )

    только как вы собрались выводить полноценную html-страницу внутри другой полноценной html-страницы мне непонятно.

    странно, но вот вывелась (форма календаря, как и любой другой текст)

    это совершенно неправильно.
    удалите лишний код вроде:

    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Calendar-title-list</title>
    </head>
    <body>
    

    внутри должен быть только календарь и стили — все.

    Flector (@flector), хорошо уберу. Но для общего развития — зачем? Вроде не мешает…
    И главный вопрос: что лучше, правильнее использовать: 1) файл кода календаря в папке темы и метод get_template_part или 2) код календаря в файле в папке плагина и метод include_once ? Оба одинаково, вроде, хорошо работают у меня

    зачем? Вроде не мешает…

    html-страницу внутри другой html-страницы можно вставить только в виде iframe. иначе валидаторы с ума сойдут, многие плагины перестанут работать, да и устаревшие браузеры такое будут выводить с огромными косяками.

    я смысл не понимаю — вам табличку надо вывести — так зачем вместе с табличкой вы отдельную html-страницу выводите внутри другой страницы?

    Оба одинаково, вроде, хорошо работают у меня

    правильно формировать html-код прямо в коде шорткода, без всяких там сторонних подключений файлов. если, конечно, там не тысячи строк.

    Да не знаю зачем целая страница… Мне казалось что полноценная страница лучшее отображает календарь. Если правильно внутри — значит так и сделаю, думал об этом. Просто не хотелось бы делать отдельный плагин под каждый случай, а иметь файл с функциями универсальный, чтобы подгружать туда стили, коды и т.п. А может проще создать виджет? А перенести надо код без всяких вспомогательных слов типа body…? А про utf-8 кодировку оставить? А каким тегом показать что внутри php файла будет html? А через iframe как раз выводятся страницы. Что лучше так и не понял….

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

    вы тему уже и так изувечили, так почему вам functions.php от нее для этих целей не подходит?

    А может проще создать виджет?

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

    А про utf-8 кодировку оставить?

    какую еще кодировку? там в идеале должно быть <table> код </table> или на чем там у вас календарь построен.

    Виджет по шаблону можно создать — ведь основной код создан. Нет, в файл функций лезу только по необходимости. Это не тот случай. Или виджет или шорткод. Что лучше? Iframe — не подойдет, смысл тогда использовать wordpress ) Хотя может именно поэтому и iframe сделаю.
    Если посмотрите первый пост — то там ест заголовок файла. А так да там таблица, которой применяется стиль и еще скрипт. Можете на сайте посмотреть jurvrn.ru

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