0

我认为这很容易,尽管事实证明这很困难。我的最终目标是将 jQuery isotope 集成到我的 wordpress 产品组合中。我已经让同位素在 wordpress 之外工作,但是我很难将我的自定义分类法分配为类名。所以我不需要同位素方面的帮助,只需将分类法分配为类。

我有一个自定义帖子类型的投资组合

该投资组合有 2 个自定义分类法,我想用它们来过滤存档页面上的结果。一种分类是“媒体”,另一种是“活动”

因此,如果我将“印刷”的媒体分类和“本地”的活动分类分配给投资组合中的帖子,我希望存档页面上的输出如下所示:

<div id="post-34" class="print local">...</div>

但是我目前有这个

<div id="post-34" class>...</div>

我按照 get_the_terms 上的法典说明进行操作。我将此代码添加到我的 functions.php 文件中:

<?php // get taxonomies terms links
function custom_taxonomies_terms_links() {
    global $post, $post_id;
    // get post by post id
    $post = &get_post($post->ID);
// get post type by post
    $post_type = $post->post_type;
// get post type taxonomies
    $taxonomies = get_object_taxonomies($post_type);
    foreach ($taxonomies as $taxonomy) {
        // get the terms related to post
        $terms = get_the_terms( $post->ID, $taxonomy );
        if ( !empty( $terms ) ) {
            $out = array();
            foreach ( $terms as $term )
                $out[] = '<a href="' .get_term_link($term->slug, $taxonomy) .'">'.$term->name.'</a>';
        $return = join( ', ', $out );
    }
}
return $return;
} ?>

然后,我在 archive-portfolio.php 页面上的循环中将 echo 调用放入类调用中,如下所示:

    <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

        <div id="post-<?php the_ID(); ?>" class="<?php echo custom_taxonomies_terms_links(); ?>">

任何帮助将不胜感激。这让我发疯,我无法弄清楚。

4

1 回答 1

1

wordpress 有一种干净的方式来输出帖子项目的类名 -post_class在你的情况下使用所以首先将 div 设置为

<div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>...</div>

并将分类名称添加到您必须添加过滤器的类。因此,在您的 functions.php 中将其放入(将 YOUR_TAXO_NAME 更改为您的自定义分类的名称):(取自此处

add_filter( 'post_class', 'custom_taxonomy_post_class', 10, 3 );

    if( !function_exists( 'custom_taxonomy_post_class' ) ) {

        function custom_taxonomy_post_class( $classes, $class, $ID ) {

            $taxonomy = 'YOUR_TAXO_NAME';

            $terms = get_the_terms( (int) $ID, $taxonomy );

            if( !empty( $terms ) ) {

                foreach( (array) $terms as $order => $term ) {

                    if( !in_array( $term->slug, $classes ) ) {

                        $classes[] = $term->slug;

                    }

                }

            }

            return $classes;

        }

    }

(对于多个分类法添加一个数组)

$taxonomy = array('YOUR_TAXO_NAME_1', 'YOUR_TAXO_NAME_2');

这应该将帖子类型名称及其标记的分类添加到 div 类中

于 2013-08-05T23:03:53.167 回答