get_template_part を使用して実行するショートコードを取得し、属性値を別のループに渡そうとしています。ショートコード コードは次のようになります。
function test( $atts, $content = null ) {
extract( shortcode_atts( array('category' => '', 'type' => '' ), $atts ) );
ob_start();
get_template_part('loop', $type);
$ret = ob_get_contents();
ob_end_clean();
return $ret;
}
add_shortcode('test', 'test');
そして、私が持っている loop-$type.php ファイルで
$cat_id = get_cat_ID($category);
$args=array(
'cat' => $cat_id,
'post_type' => 'post',
'post_status' => 'publish',
'posts_per_page' => 4,
'caller_get_posts'=> 1
);
$my_query = null;
$my_query = new WP_Query($args);
if( $my_query->have_posts() ) {
while ($my_query->have_posts()) : $my_query->the_post(); ?>
<li> /* post stuff */ </li>
<?php
endwhile;
}
wp_reset_query();
しかし、ショートコード属性から $category を使用するための cat_id を取得できません。ループがショートコード属性を使用していない理由を知っている人はいますか?
明らかに値を渡していません。つまり、グローバルにすることができますが、それは厄介な解決策です。それを行うためのクリーンな方法が必要ですか?
(ショートコードを として実行しようとしている投稿があります[test category=random-category-name]
)