好的,你基本上就快到了,你所要做的就是在sprint()
.
Answer edited/added to:
<ul class="accordion">
<?php
$categories = get_categories( array(
\'orderby\' => \'name\',
\'order\' => \'DESC\',
\'offset\' => 1
) );
$cat_array = array();
foreach( $categories as $category ) {
$category_link = sprintf(
\'<li><a href="%1$s" data-class=".%2$s" alt="%2$s">%3$s</a></li>\',
esc_url( get_category_link( $category->term_id ) ),
esc_attr( sprintf( __( \'%s\', \'textdomain\' ), $category->slug ) ),
esc_html( $category->slug )
);
echo sprintf( esc_html__( \'%s\', \'textdomain\' ), $category_link );
$cat_array[] = $category->term_id;
}
?>
</ul>
<?php
global $post;
if( !empty( $cat_array ) ) :
foreach( $cat_array as $cat ) :
$category = get_term( $cat, \'category\' );
$cat_slug = $category->slug;
echo \'<div class="col-lg-4 s3_shuffle_image \' . $cat_slug . \'">\';
$postslist = get_posts( array(
\'posts_per_page\' => 3,
\'cat\' => $cat,
) );
if( $postslist ) :
foreach( $postslist as $post ) :
setup_postdata( $post ); ?>
<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
<?php the_excerpt(); ?>
<?php
endforeach;
wp_reset_postdata();
endif;
echo \'</div>\';
endforeach;
endif;
?>
所以在您返回
<li>
格式化字符串(
sprint()
), 您只需添加
data-class
属性并重复标记(
%2$s
) 返回第二项。
这一行也有一个错误,在引号外放置了一个句点,因此PHP尝试执行它,而不是将其作为字符串的一部分。
esc_attr( sprintf( __( \'%s\',. \'textdomain\' ), $category->slug )),
请注意,还应匹配泛型的所有实例
textdomain
与实际
textdomain
你的主题。。。如果你看看你的
style.css
在顶部,您应该看到如下内容:
/*
Theme Name: The Name of the Theme
Theme URI: http://domain.com
Author: your name or some other developer\'s name
Author URI: http://domain.com
Description: A description for the theme.
Version: 1.0 (updated version number)
License: GNU General Public License v2 or later
License URI: LICENSE
Text Domain: make a custom text domain if there isn\'t one
Tags: custom-background, custom-logo, custom-menu, featured-images, translation-ready
*/
如果
Text Domain:
如果有,请确保在编写其他函数时使用它,如果没有,请添加它并使其具有独特性。在所有这些行中填写一些独特且准确的主题,保持版本号更新,等等。
为了解释编辑/添加,我们所做的是,在对返回的所有类别运行for each时,我们将它们添加到在for each之前创建的数组中:$cat_array = array();
. 中的最后一项foreach()
现在,将每个类别的ID广告到阵列:$cat_array[] = $category->term_id;
然后,在s3_shuffle_image
div,我们运行foreach()
在我们刚刚创建的阵列上。在该foreach中,我们运行一个“get\\u posts()”函数,该函数根据ID调用每个类别的3篇最新帖子。
那么,如果get_posts()
query返回任何结果,我们运行另一个foreach并从accordion div内返回的每个帖子中吐出内容/数据。
There are two issues I see. $cat_array is an array of IDs, not objects, so the ‘cat’ query arg should just be \'cat\' => $cat,
The other is when you use setup_postdata( $post ), you must explicitly declare global $post;