category子父母模板

子模板与父级模板相同

function category_template($template){  
    $category = get_queried_object();  
    if($category->parent !='0'){  
        while($category->parent !='0'){  
            $category = get_category($category->parent);  
        }  
    }  
      
    $templates = array();  
  
    if ( $category ) {  
        $templates[] = "category-{$category->slug}.php";  
        $templates[] = "category-{$category->term_id}.php";  
    }  
    $templates[] = 'category.php';  
    return locate_template( $templates );  
}  
add_filter('category_template', 'category_template');

 

子模板与父级模板不同

function get_category_parent($parent)
{
global $cat;
$parent=get_category($cat);
if($parent->parent)return ture;
else
return false;
}

 

获取分类(cat&term)信息

WordPress get_terms()的使用方法:

例1.输出term相关信息

<ul class="products">
                <?php  $terms = get_terms('category',array(
    'with_thumbnail' => true,
    'hide_empty' => false,
)   );
if ( ! empty( $terms ) && ! is_wp_error( $terms ) ){
    foreach ( $terms as $term ) {?>
                <li>
                    <a href="<?php  echo get_term_link($term->term_id) ?>">
                        <div class="term-pic">
                            <?php the_term_thumbnail($term ->term_id, 'post-thumbnail');?>
                        </div>
                        <div>
                            <h3>
                                <?php echo $term->name;?>
                            </h3>
                            <div>
                                <?php echo $term->description;?>
                            </div>
                        </div>
                    </a>
                </li>
                <?php    }
}?>
            </ul>

例2.循环term显示相应的文章

        <?php
 $terms = get_terms([
    'taxonomy' => 'area',
    'hide_empty' => true,
]);
   foreach( $terms as $term):?>
            <div class="area-part">
                <h3>
                    <?php echo $term->name;  ?>
                </h3>
                <ul class="posts-list">
                    <?php
 $args = array(
    'post_type'=>'store',
    'tax_query' => array(
		array(
            'taxonomy' => 'area',
            'field' => 'id',
			'terms'    => $term->term_id,
		),
	),
    ); 
    $query = new WP_Query( $args );
    if( $query->have_posts()):
     while($query->have_posts()):$query->the_post();                         
get_template_part('partials/content','shopList');
//Restore orginial post Data
    wp_reset_postdata();  
    endwhile;?>
                </ul>
                <?php endif;?>
            </div>
            <?php endforeach;
    ?>

其他

get_terms()默认参数:
$get_terms_default_attributes = array (
            'taxonomy' => 'category', //empty string(''), false, 0 don't work, and return empty array
            'orderby' => 'name',
            'order' => 'ASC',
            'hide_empty' => true, //can be 1, '1' too
            'include' => 'all', //empty string(''), false, 0 don't work, and return empty array
            'exclude' => 'all', //empty string(''), false, 0 don't work, and return empty array
            'exclude_tree' => 'all', //empty string(''), false, 0 don't work, and return empty array
            'number' => false, //can be 0, '0', '' too
            'offset' => '',
            'fields' => 'all',
            'name' => '',
            'slug' => '',
            'hierarchical' => true, //can be 1, '1' too
            'search' => '',
            'name__like' => '',
            'description__like' => '',
            'pad_counts' => false, //can be 0, '0', '' too
            'get' => '',
            'child_of' => false, //can be 0, '0', '' too
            'childless' => false,
            'cache_domain' => 'core',
            'update_term_meta_cache' => true, //can be 1, '1' too
            'meta_query' => '',
            'meta_key' => array(),
            'meta_value'=> '',
    );
get_terms()数组返回值:
array(1) {
  [0]=&gt;
  object(WP_Term) (11) {
    ["term_id"]=&gt;  //int
    ["name"]=&gt;   //string 
    ["slug"]=&gt;  //string 
    ["term_group"]=&gt;  //int
    ["term_taxonomy_id"]=&gt; //int
    ["taxonomy"]=&gt;   //string
    ["description"]=&gt;    //string
    ["parent"]=&gt; //int
    ["count"]=&gt;  // int
    ["filter"]=&gt; //string
    ["meta"]=&gt; array(0) { // presumably this would be some returned meta-data?
    }
  }
}

wordpress获取特色图片地址

function get_attachment($size, $id)
{
    if (empty($size)) {
        $size = ‘medium’;
    }
    $output = ”;
    if (has_post_thumbnail($id)) {
        $output = wp_get_attachment_image_url(get_post_thumbnail_id($id), $size);
    } else {
        $attachments = get_posts(array(
            ‘post_type’ => ‘attachment’,
            ‘numberposts’ => 1,
            ‘post_parent’ => $id,
            ‘post_mime_type’ => ‘image’,
        ));
        if (!empty($attachments)) {
            $output = wp_get_attachment_image_url($attachments[0]->ID, $size);
        } else {
            $output = get_template_directory_uri() . ‘/assets/img/default.jpg’;
        }
    }
    return $output;
}

wordpress小工具

①注册

/* Register widget area*/
function theme_widgets_init() {
	register_sidebar( array(
		'name'          => __( 'Blog Sidebar', 'twentyseventeen' ),
		'id'            => 'sidebar-1',
		'description'   => __( 'Add widgets here to appear in your sidebar on blog posts and archive pages.', 'twentyseventeen' ),
		'before_widget' => '<section id="%1$s" class="widget %2$s">',
		'after_widget'  => '</section>',
		'before_title'  => '<h2 class="widget-title">',
		'after_title'   => '</h2>',
	) );
}
add_action( 'widgets_init', 'theme_widgets_init' );

②输出

<?php
if ( ! is_active_sidebar( 'sidebar-1' ) ) {
	return;
}
?>

<aside id="secondary" class="widget-area" role="complementary" aria-label="<?php esc_attr_e( 'Blog Sidebar', '' ); ?>">
	<?php dynamic_sidebar( 'sidebar-1' ); ?>
</aside><!-- #secondary -->