我不太使用php,所以 - 我的实际知识以require()
等为中心 - 用于模板 - 并且在需要时,WordPress循环。
在当前的项目中,我不得不在页面上使用这段代码10次。
<?php
$commercialLoop = new WP_Query(
array(
'post_type' => 'project',
'posts_per_page' => -1,
'tax_query' => array(
array(
'taxonomy' => 'project-type',
'field' => 'slug',
'terms' => 'commercial'
)
)
)
);
?>
<?php while ( $commercialLoop->have_posts() ) : $commercialLoop->the_post(); ?>
<li class='project'>
<a href='<?php the_permalink(); ?>'>
<div class='image-w'>
<?php if ( has_post_thumbnail() ) { ?>
<?php the_post_thumbnail(); ?>
<?php } else { ?>
<img src='http://placehold.it/1600x800&text=No featured image yet' alt=''>
<?php } ?>
</div>
<h3 class='project-name'><?php echo get_the_title(); ?></h3>
</a>
</li>
<?php endwhile; wp_reset_query(); ?>
在JavaScript中,我只是将一些字符串传递给一个函数 - 然后我可以使用它。在这种情况下,每个循环唯一改变的是commercialLoop
和“商业” - 我认为这一切都在改变......所以,实际上我只需要传递一个字符串对于每个不同的类别,'住宿','住房','细节'等...我希望我可以做类似的事情:
<?php getLoopThing('commercial'); ?>
但是 - 我一定不知道找到方向的正确搜索词。
HELP ???
=============================================== =
创建了一个partial:taxonomy-loop.php - 用$taxonomyName
替换有问题的字符串
<?php
$taxonomyName = new WP_Query(
array(
'post_type' => 'project',
'posts_per_page' => -1,
'tax_query' => array(
array(
'taxonomy' => 'project-type',
'field' => 'slug',
'terms' => $taxonomyName
)
)
)
);
?>
<?php while ( $taxonomyName->have_posts() ) : $taxonomyName->the_post(); ?>
<li class='project'>
<a href='<?php the_permalink(); ?>'>
<div class='image-w'>
<?php if ( has_post_thumbnail() ) { ?>
<?php the_post_thumbnail(); ?>
<?php } else { ?>
<img src='http://placehold.it/1600x800&text=No featured image yet' alt=''>
<?php } ?>
</div>
<h3 class='project-name'><?php echo get_the_title(); ?></h3>
</a>
</li>
<?php endwhile; wp_reset_query(); ?>
在function.php中:使用传入的$taxonomy-name
构建函数。
function getTaxonomyLoop( $taxonomyName ) {
// grab the partial (wherever your partial is located)
return include('parts/taxonomy-loop.php');
}
然后,我希望它出现在哪里:
<?php getTaxonomyLoop('commercial'); ?>
答案 0 :(得分:2)
您可以将参数传递给这样的函数:
function a($a) {
return $a;
}
或者如果您只想要完整的代码:
function getLoop($st){
return new WP_Query(
array(
'post_type' => 'project',
'posts_per_page' => -1,
'tax_query' => array(
array(
'taxonomy' => 'project-type',
'field' => 'slug',
'terms' => $st
)
)
)
);
}
所以现在你可以打电话:
$loop = getLoop('commercial');
答案 1 :(得分:0)
get_template_part
更适合这类事情。它允许您多次包含相同的模板文件,同时仍然将前端代码与您的功能分开。它还允许您的模板代码被子主题覆盖。
在您的主题目录中,您将创建一个包含模板代码的文件。
然后,当您需要引用它时,您只需使用文件名称调用get_template_part
。
例如,如果我要在主题根目录中创建一个名为projects.php
的文件,我可以将其包含在另一个模板文件中,如下所示:
get_template_part('projects');
您不能以这种方式将参数传递给模板文件,但您可以使用全局变量或为模板所需的任何其他数据定义函数。例如:
global $taxonomyName;
$taxonomyName = 'commercial';
get_template_part('projects');
从那里你可以参考分类:global $taxonomyName
。
根据您确定$taxonomyName
的方式,您可以定义一个函数来确定分类名称,而不必将其声明为全局。