我正在尝试在 PHP 中获得一些帮助,这样我就可以为循环中返回的每个单独的项目添加一个类或 ID。我正在使用一段代码(见下文)来返回分类法(位置)。我的所有 32 个位置都完美返回并显示在我的网站上。但是,我不能通过 css 单独设置每个位置的样式,因为没有与每个位置关联的唯一类。
返回的每个块在前端看起来像这样
<div class="block">
<a href="http://example.com/location/new-york">
<h2>
<a href="http://example.com/location/new-york">
Antrim
<br>
<span>(1 Farmer)</span>
</a>
</h2>
对所有位置重复返回。正如您所看到的,没有办法实际单独设置每个样式,这正是我所需要的。
我返回位置的代码如下。我已经尝试过谷歌搜索和一些不同的方法来做到这一点,但我觉得我不合群,我想我会在这里向专家寻求帮助!
谢谢
<?php
global $woo_options;
$post_types_to_loop_through = array();
$posts_to_exclude = array();
$categories_panel_entries = $woo_options['woo_categories_panel_entries'];
$more_listings_setting = $woo_options['woo_more_listings_area'];
$wp_custom_post_types_args = array();
$wp_custom_post_types = get_post_types($wp_custom_post_types_args,'objects');
foreach ($wp_custom_post_types as $post_type_item) {
$cpt_test = get_option('woo_categories_panel_post_types_'.$post_type_item->name);
if ($cpt_test == 'true') {
$cpt_nice_name = $post_type_item->labels->name;
$cpt_has_archive = $post_type_item->has_archive;
$post_types_to_loop_through[$post_type_item->name] = array('nice_name' => $cpt_nice_name, 'has_archive' => $cpt_has_archive);
}
}
$section_counter = 0;
foreach ($post_types_to_loop_through as $post_type_item => $post_type_item_nice_name) {
$taxonomies = array('location');
$block_counter = 0;
$args = array('orderby' => 'name', 'order' => 'ASC');
?>
<div id="location">
<?php
// NEW AND IMPROVED QUERY
$all_terms = get_terms( $taxonomies, $args );
$block_counter = 0;
foreach ( $all_terms as $all_term) {
$tax_test = get_option('woo_categories_panel_taxonomies_'.$all_term->taxonomy);
if ( ($tax_test == 'true') && ($block_counter < $categories_panel_entries) ) {
$post_images = array();
$posts_aray = array();
$term_name = $all_term->name;
$term_slug = $all_term->slug;
$term_id = $all_term->term_id;
$term_link = get_term_link( $all_term, $all_term->taxonomy );
$counter_value = $all_term->count;
?>
<div class="block">
<a href="<?php echo $term_link; ?>">
<?php
$block_counter++;
if ( $post_id > 0 ) {
// If a featured image is available, use it in priority over the "image" field.
if ( function_exists( 'has_post_thumbnail' ) && current_theme_supports( 'post-thumbnails' ) ) {
if ( has_post_thumbnail( $post_id ) ) {
$_id = 0;
$_id = get_post_thumbnail_id( $post_id );
if ( intval( $_id ) ) {
$_image = array();
$_image = wp_get_attachment_image_src( $_id, 'full' );
// $_image should have 3 indexes: url, width and height.
if ( count( $_image ) ) {
$_image_url = $_image[0];
woo_image('src=' . $_image_url . '&key=image&width=139&height=81&link=img');
} // End IF Statement
} // End IF Statement
} else {
woo_image('id='.$post_id.'&key=image&width=139&height=81&link=img');
} // End IF Statement
} else {
woo_image('id='.$post_id.'&key=image&width=139&height=81&link=img');
} // End IF Statement
} else {
// Fallback
woo_taxonomy_image($post_images,$term_link);
} // End IF Statement
$php_formatting = "m\/d\/Y";
$post_item_date = strtotime($post_date_raw);
?>
</a>
<h2><a href="<?php echo $term_link; ?>"><?php echo $term_name ?> <br/><span>(<?php echo $counter_value; ?> Farmers)</span></a></h2>
<p><?php _e('Latest listing ', 'woothemes') ?><?php echo date($php_formatting,$post_item_date); ?></p>
</div><!-- /.block -->
<?php
if ( $block_counter % 5 == 0 ) {
?>
<div class="fix"></div>
<?php
} // End IF Statement
} // End IF Statement
?>
<?php
} // End For Loop
?>
<div class="fix"></div>
<?php if ( $block_counter > 0 ) { ?>
<?php } else { ?>
<p class="woo-sc-box note" style="margin:20px 20px;"><?php _e('Please add some posts in order for this panel to work correctly. You must assign the post to these taxonomies for it to work.','woothemes'); ?></p>
<?php } ?>
</div><!-- /.listings -->
<div class="fix"></div>
更新 感谢一些帮助,我已经实现了这段代码,但仍然无法让它工作!
我将它添加到第 8 行的全局变量中
$i = 0; // initialise incrementing variable
然后我在 div 之前添加了这个,你可以看到我试图回显的额外类
// I added this line as suggested just before my div
<?php foreach ( $all_terms as $all_term) { ?>
// I then added a new class but I was not sure how to write this
<div class="block" class="<?php echo "post-" . $i; ?>">
就在结束 div 标记之前(大约 100 行之后),我添加了结束代码
$i++; // increment it
}