• Всем привет!
    Есть шорткод, он перестает работать при добавлении в него таблиц и форматирования. Причем если добавить содержимое шорткода в шаблон страницы — все отображается. Подскажите как оформить текст внутри шорткода.

    function info_current_user()
    {
    
    	<table class=" alignleft" style="width: 540px; height: 170px;">
    <tbody>
    <tr>
    	<td>
    		<?php global $current_user; get_currentuserinfo(); echo get_avatar($current_user->ID, 170 )?>
    	</td>
    
    	<td style="text-align: left;">
    		<span style="font-size: 10pt;">	<?php global $current_user; get_currentuserinfo(); echo $current_user->user_login ?> <br> </span>
    		<strong><span style="font-size: 16pt;"> <?php global $current_user; get_currentuserinfo(); echo $current_user->display_name ?> <br> </span></strong>
    		<span style="font-size: 12pt;"> <?php global $current_user; get_currentuserinfo(); echo get_user_meta($current_user->ID, 'user_title', true); ?> <br> </span>
    		<span style="font-size: 12pt;"> <?php global $current_user; get_currentuserinfo(); echo get_user_meta($current_user->ID, 'user_department', true); ?> <br> </span>
    		<span style="font-size: 12pt;"> <?php global $current_user; get_currentuserinfo(); echo $current_user->user_email ?> <br> </span>
    		<span style="font-size: 12pt;"> <?php global $current_user; get_currentuserinfo(); echo get_user_meta($current_user->ID, 'user_mobile', true); ?> <br> </span>
    	</td>
    </tr>
    </tbody>
    </table>
    
    }
    add_shortcode( 'info_current_user', 'info_current_user' );
Просмотр 3 ответов — с 1 по 3 (всего 3)
  • Нельзя просто взять и затолкать кусок шаблона в шорткод. Хотя бы потому, что шорткод ничего не выводит (никаких echo!), он только возвращает. Поэтому Вам придется переписать всю таблицу так, чтобы сформированный текст попал в переменную. Т.е. как-то так:

    function info_current_user()
    {
    $res = '<table>....';
    
    return $res;
    }

    Извините, что только указываю путь, но переписывать всё и проверять на валидность недосуг.

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    Можно воспользоваться буферизацией вывода:

    function info_current_user() {
    	ob_start();
    	?>
    	<table class="alignleft" style="width: 540px; height: 170px;">
    	<!-- ... -->
    	</table>
    	<?php
    	return ob_get_clean();
    }
    add_shortcode( 'info_current_user', 'info_current_user' );

    Спасибо Сергей! То что нужно

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