category-about.php
には
<?php
/**
* The template for displaying the posts in the About category
*
*/
?>
<!-- category-about.php -->
<?php get_header(); ?>
<?php
$args = array(
'post_type' => 'post',
'category_name' => 'about',
); ?>
<?php
// How to put this part in get_template_part ?
$cat_name = $args['category_name'];
$query = new WP_Query( $args );
if($query->have_posts()) : ?>
<section id="<?php echo $cat_name ?>-section">
<h1 class="<?php echo $cat_name ?>-section-title">
<strong><?php echo ucfirst($cat_name) ?> Section</strong>
</h1><?php
while($query->have_posts()) : $query->the_post(); ?>
<strong><?php the_title(); ?></strong>
<div <?php post_class() ?> >
<?php the_content(); ?>
</div> <?php
endwhile; ?>
</section> <?php
endif;
wp_reset_query();
// end get_template_part ?>
<?php get_footer(); ?>
テンプレートファイルcategory-about.php
にposts-loop.php
の変数を含めるにはどうすればよいですか。
見て このコメント そして /この答え 全部まとめるのが難しい。
答えで提供されているヘルパー関数を使用するのではなく、これをよりよく理解したいと思います。正しい方法はset_query_var
とget_query_var
を使うことであると私は理解していますが、それには少し手助けが必要です。
各カテゴリのコアループコードを書く代わりに、カテゴリテンプレートで$args
を定義し、それをテンプレートファイルで使うのが好きです。任意の助けは大歓迎です。
category-about.php
には
<?php
/**
* The template for displaying the posts in the About category
*
*/
?>
<!-- category-about.php -->
<?php get_header(); ?>
<?php
$args = array(
'post_type' => 'post',
'category_name' => 'about',
); ?>
<?php
// important bit
set_query_var( 'query_category', $args );
get_template_part('template-parts/posts', 'loop');
?>
<?php get_footer(); ?>
そしてテンプレートファイルposts-loops.php
で私は今持っています
<!-- posts-loop.php -->
<?php
// important bit
$args = get_query_var('query_category');
$cat_name = $args['category_name'];
$query = new WP_Query( $args );
if($query->have_posts()) : ?>
<section id="<?php echo $cat_name ?>-section">
<h1 class="<?php echo $cat_name ?>-section-title">
<strong><?php echo ucfirst($cat_name) ?> Section</strong>
</h1><?php
while($query->have_posts()) : $query->the_post(); ?>
<strong><?php the_title(); ?></strong>
<div <?php post_class() ?> >
<?php the_content(); ?>
</div> <?php
endwhile; ?>
</section> <?php
endif;
wp_reset_query();
そしてそれはうまくいきます。
参照:
http://keithdevon.com/passing-variables-to-get_template_part-in-wordpress/#comment-110459https://wordpress.stackexchange.com/a/176807/77054
最初の方法 :
テンプレート部分が含まれるテンプレート:
$value_to_sent = true;
set_query_var( 'my_var', $value_to_sent );
含まれるテンプレート部分:
$get_my_var = get_query_var('my_var');
if ($get_my_var == true) {
...
}
第二の方法:
テンプレート部分が含まれるテンプレート:
global $my_var;
$my_var= true;
含まれるテンプレート部分:
global $my_var;
if ($my_var == true) {
...
}
私はむしろ最初の方法で行きたいと思います。