関数the_terms()の出力位置が希望通りにならない
-
functions.phpにカスタム投稿のリストを出力させるショートコードを作成しました。
function shortcode_post_list($atts) { extract(shortcode_atts(array( 'num' => '-1', 'post_type' => 'post', ), $atts)); global $post; $args = array( 'posts_per_page' => $num, 'post_type' => $post_type, 'order' => 'DESC', 'post_status' => 'publish' ); $posts_array = get_posts($args); $html = '<ul>'; foreach($posts_array as $post): setup_postdata($post); $html .= '<li>'; $html .= '<a href="'.get_permalink().'">'; if (has_post_thumbnail()) : $html .= '<div style="background-image: url('.wp_get_attachment_url( get_post_thumbnail_id() ).')"></div>'; else : $html .= '<div style="background-image: url('.get_theme_file_uri().'/img/eyecatch_default.jpg)"></div>'; endif; $html .= '</a>'; $html .= '<p>'; $html .= '<span>'.get_the_date().'</span>'; $html .= '<span class="category">'.the_terms(get_the_ID(),'news_cat').'</span>'; $html .= '</p>'; $html .= '<h3><a href="'.get_permalink().'">'.get_the_title().'</a></h3>'; $html .= '</li>'; endforeach; $html.='</ul>'; wp_reset_postdata(); return $html; } add_shortcode('post_list', 'shortcode_post_list');
これを、プラグイン「Elementor」のショートコードウィジェットで出力したところ、 以下のようにthe_terms()の出力位置がショートコードウィジェットの外になってしまいます。
[出力結果]
(「…」の部分は長いので省略)<div class="elementor-widget-container"> ※タームがこの位置に出力されてしまう <a href="..." rel="tag">ニュースカテゴリ2</a> <a href="..." rel="tag">ニュースカテゴリ1</a> <div class="elementor-shortcode"> <ul> <li><a href="..."> <div style="..."></div> </a> <p><span>2021年1月8日</span><span class="category"></span></p> <h3><a href="...">タイトル2</a></h3> </li> <li><a href="..."> <div style="..."></div> </a> <p><span>2021年1月7日</span><span class="category"></span></p> <h3><a href="...">タイトル1</a></h3> </li> </ul> </div> </div>
また、テンプレートタグに直接ショートコードを書き込んだ場合、
- タグの外に出力されてしまいます。
<?php echo do_shortcode('[post_list post_type = "news" num = "2" ]'); ?>
[出力結果]
<a href="..." rel="tag">ニュースカテゴリ2</a> <a href="..." rel="tag">ニュースカテゴリ1</a> <ul> <li><a href="..."> <div style="..."></div> </a> <p><span>2021年1月8日</span><span class="category"></span></p> <h3><a href="...">タイトル2</a></h3> </li> <li><a href="..."> <div style="..."></div> </a> <p><span>2021年1月8日</span><span class="category"></span></p> <h3><a href="...">タイトル1</a></h3> </li> </ul>
the_terms()がショートコード内で機能していないような印象を受けますが、原因は何でしょうか?
お詳しい方、ご教授いただけますと幸いです。宜しくお願い致します。
2件の返信を表示中 - 1 - 2件目 (全2件中)
2件の返信を表示中 - 1 - 2件目 (全2件中)
- トピック「関数the_terms()の出力位置が希望通りにならない」には新たに返信することはできません。