Поддержка Плагины the_content вывод информации

  • Всем привет, есть у меня такая классная вещь с использованием -default_content, которая позволяет мне отформатировать wordpress editor. Но есть задача, в кусочке кода между выводимыми блоками в бекенде, так же выводить специфичные ссылки во фронт-энде, которые одинаковы для всех постов данного типа. Но не могу ни как разобраться. Если я втыкаю их в кусочек кода с default_content, который форматирует editor, то у меня вылетает белый экран смерти и все! Прошу помощи!

Просмотр 14 ответов — с 1 по 14 (всего 14)
  • Модератор Denis Yanchevskiy

    (@denisco)

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

    Привет.

    Не очень понял что именно Вы делаете и что есть «классная вещь с использованием -default_content», но если белый экран, то скорее всего причину можно найти в логе ошибок сервера (error_log).

    В общем я делаю редактор, как вот в этом гайде -http://habrahabr.ru/post/131001/. Но помимо функционала который представлен там, т.е. создания блоков div. Я хочу вывести между блоками ссылки, которые завернуты в img. Затем сайт успешно выдает белый экран.

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

    add_filter( 'default_content', 'custom_editor_content' );
    	function custom_editor_content( $content ) {
    		$content = 'Выведи счастье по умолчанию';
    
    		return $content;
    	}
    
    add_editor_style( 'editor-style.css' );

    Вот что я пытаюсь сделать

    add_filter( 'default_content', 'custom_editor_content' );
    	function custom_editor_content( $content ) {
    		$content = '
    		<div class="schactie">Выведи счастье по умолчанию</div>
    		<div id="contact_form_pop"><?php echo do_shortcode('[contact-form-7 id="65"]'); ?></div>
    		';
    
    		return $content;
    	}

    Как понимаете всё условно. Но что нужно — Выводить в рамках предопределенного стиля редактора — ещё и элементы с использованием вставок — функций или кусочков кода php. Как только я добавляю второй вариант, сайт ложиться белым экраном смерти. Прошу прощения за кривые объяснения или незнание основных. Подскажите, как можно реализовать такой функционал?

    Модератор Denis Yanchevskiy

    (@denisco)

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

    А так?

    function custom_editor_content( $content ) {
    $content = '
    <div class="schactie">Выведи счастье по умолчанию</div>
    <div id="contact_form_pop">' . do_shortcode('[contact-form-7 id="65"]') . '</div>
    ';
    
    return $content;
    }

    Понял

    Не помогло

    Модератор Denis Yanchevskiy

    (@denisco)

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

    Тогда смотрите лог ошибок сервера. Но я думаю проблема в том, что Вы пытаетесь в текстовое поле вставить форму. Кстати, зачем? Если хотите, чтобы на странице была форма сделайте отдельный template и выводите её отдельно от контента.

    В целом всё выглядит вот так изначально, форма сделана через fancy box
    И получается что ничего не получается:)

    add_filter( 'default_content', 'custom_editor_content' );
    	function custom_editor_content( $content ) {
    		$content = '
    		<div class="under-conference">
    	<div class="registration"><a href="#contact_form_pop" class="fancybox"><img src="<?php bloginfo('template_url'); ?>/images/registration.png"></a>
    	<div style="display:none" class="fancybox-hidden">
        <div id="contact_form_pop"><?php echo do_shortcode('[contact-form-7 id="65"]'); ?></div>
    	</div><!--<img src="<?php bloginfo('template_url'); ?>/images/registration.png">--><div class="regtext">Регистрация</div></div>
    	<div class="date-of-conference"><?php the_field('date_of_conference'); ?><br/><?php the_field('place_of_conference'); ?></div>
    	<div class="request"><a href="#contact_form_pop1" class="fancybox"><img src="<?php bloginfo('template_url'); ?>/images/request.png"></a>
    	<div style="display:none" class="fancybox-hidden">
        <div id="contact_form_pop1"><?php echo do_shortcode('[contact-form-7 id="66"]'); ?></div></div>
    	<div class="reqtext">Программа</div></div>
    	</div>
    		<div class="content-col-all">
    		<div class="content-col-main">Main text&nbsp;&nbsp;</div>
    		<div class="content-col-1">This event will allow to&nbsp;&nbsp;</div>
    		<div class="content-col-2">Conference audience&nbsp;&nbsp;</div>
    		<div class="content-col-partners"><div class="partners1">Partner1&nbsp;</div><div class="partners2">Partner2&nbsp;</div><div class="partners3">Partner3&nbsp;</div></div>
    		<div class="content-col-mpartners"><div class="mpartners1">mPartner1&nbsp;</div><div class="mpartners2">mPartner2&nbsp;</div><div class="mpartners3">mPartner3&nbsp;</div>
    		<div class="mpartners4">mPartner4&nbsp;</div><div class="mpartners5">mPartner5&nbsp;</div></div>
    		<div class="content-col-contacts">Contacts&nbsp;&nbsp;</div>
    		</div>
    		';
    
    		return $content;
    	}
    
    add_editor_style( 'editor-style.css' );

    Модератор Denis Yanchevskiy

    (@denisco)

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

    И получается что ничего не получается:)

    Так Вы этим чего хотите добиться? Зачем вставлять контактную форму в редактор? и значения полей ACF?

    Ну и <?php echo и the_field выводит всё сразу на экран. Если хотите в переменную надо использовать конкатенацию и get_field. bloginfo тоже выводит сразу на экран, можно заменить на get_template_directory_uri;

    @denisco
    Спасибо большое, что указал вектор в котором двигаться.

    А get_field можно тут же выводить или надо через переменную.
    В php, я совсем не силен:(

    @denisco, можешь в данном кейсе на примере показать?
    Заранее премного благодарен!

    Модератор Denis Yanchevskiy

    (@denisco)

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

    А get_field можно тут же выводить или надо через переменную.

    get_field просто получает значение поля, а the_field получает и сразу выводит, т.е. если нужно, чтобы значение попало в переменную $content — нужно использовать get_field.

    @denisco, можешь в данном кейсе на примере показать?

    Если про свой шаблон страницы, у WordPress есть механизм, который позволяет по разному выводить разные страницы. Можно, например, переопределить вывод для какой-то конкретной страницы, а можно создать шаблон, который будет выбираться при редактировании записи. Ну и, соответственно, всё что пользователь не должен редактировать сгрузить туда, а остальное выводить как обычно через the_content. Как-то более подробно вряд ли получится объяснить. Почитайте документацию, посмотрите как устроены другие темы, со временем всё должно встать на свои места :).

    HTML-код я так никогда в редактор не вставлял, поэтому примеров особо нет. Эта структура достаточно шаткая, в любой момент пользователь может удалить какой-то кусок разметки и вся страница развалится. Если хочется как-то структурировать вводимую информацию, то по мне лучше использовать шорткоды, выносить эту информацию в дополнительные поля и выводить в нужных местах шаблона. Также существуют всяческие визуальные редакторы для WordPress, например, Visual Composer и ещё куча платных и бесплатных аналогов.

    @denisco
    Круто, я почти всё сделал, но не могу разобраться с get_template_directory_uri
    Я делаю так
    <img src="get_template_directory_uri();/images/request.png">
    Но не выводит картинку, просто «битый» значок.

    надо сделать так?

    // Enable the use of shortcodes within widgets.
    add_filter( 'widget_text', 'do_shortcode' ); 
    
    // Assign the tag for our shortcode and identify the function that will run.
    add_shortcode( 'template_directory_uri', 'wpse61170_template_directory_uri' );
    
    // Define function
    function wpse61170_template_directory_uri() {
        return get_template_directory_uri();
    }

    А потом через shortcode?
    вот так
    <img src="'. do_shortcode('[template_directory_uri]') .';/images/request.png">

    Но так не помогает:(

    Модератор Denis Yanchevskiy

    (@denisco)

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

    Круто, я почти всё сделал, но не могу разобраться с get_template_directory_uri
    Я делаю так
    <img src=»get_template_directory_uri();/images/request.png»>

    Должно получиться примерно так:

    $content = 'контент контент контент <img src="' . get_template_directory_uri() . '/images/request.png"> контент контент контент';

    @denisco Спасибо огромное!!!
    Всё заработало, как следует!:)

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