Как гарантировать, что результат шорткода не нарушает форматирование? - PullRequest
0 голосов
/ 06 июня 2019

Я хочу добавить шорткод, который будет выполнять запрос к БД и возвращать результат. Вот мои функции.php:

function get_posts_count($cat){
    global $wpdb;  
    $a = shortcode_atts( array(
      'id' => ''
   ), $cat );
  $id=$a['id'];
  $count=$wpdb->get_results( "SELECT `count` FROM `wpmy_term_taxonomy` WHERE `term_id`=$id");
foreach($count as $row)
echo '('.$row->count.')';
  }

add_shortcode( 'postCount', 'get_posts_count' ); 

Это короткий код в редакторе:

enter image description here И вот конечный результат:

enter image description here

Значение в этом случае 1 появляется над текстом Недвижимость. Как я могу убедиться, что он отображается в строке? Заранее спасибо

1 Ответ

1 голос
/ 06 июня 2019

шорткод принимает параметры (атрибуты) и возвращает результат (вывод шорткода). Если шорткод создает HTML, то ob_start может использоваться для захвата вывода и преобразования его в строку следующим образом: -

function get_posts_count( $cat ) {
  ob_start();
  global $wpdb;

  $a     = shortcode_atts( array(
    'id' => '',
  ), $cat );
  $id    = $a['id'];

  $count = $wpdb->get_results( "SELECT `count` FROM `wpmy_term_taxonomy` WHERE `term_id`=$id" );

  foreach ( $count as $row ) {
    echo '(' . $row->count . ')';
  }

  return ob_get_clean();

}

add_shortcode( 'postCount', 'get_posts_count' );  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...