我想通过作者列出woocommerce产品。 我按照这个步骤:
在theme/functions.php
add_action('init', 'wpse_74054_add_author_woocommerce', 999 );
function wpse_74054_add_author_woocommerce() {
add_post_type_support( 'product', 'author' );
}
这让我在编辑产品标签上为每个产品分配了作者。
我还能够使用以下代码显示作者和描述的产品标题:
<?php $loop = new WP_Query( array ( 'post_type' => 'product', 'posts_per_page' => 10 ) ); ?>
<?php while ( $loop->have_posts() ) : $loop->the_post(); ?>
<?php the_title( '<h2 class="entry-title"><a href="' . get_permalink() . '" title="' . the_title_attribute( 'echo=0' ) . '" rel="bookmark">', '</a></h2>' ); ?>
<span class="postauthortop author vcard">
<i class="icon-user"></i> <?php echo __('by', 'virtue');?> <a href="<?php echo get_author_posts_url(get_the_author_meta('ID')); ?>" rel="author"><?php echo get_the_author() ?></a>
<div class="short_description">
<?php echo apply_filters( 'woocommerce_short_description', $post->post_excerpt ) ?>
</div>
<?php endwhile; ?>
但是,当人们点击作者姓名时,只会显示常规帖子。不是产品。
我想创建一个作者页面,人们可以通过单一作者查看产品列表。
我尝试使用以下代码创建author.php文件,但无效。
<?php $author_id = the_author_meta('ID'); ?>
<?php $args = array( $author_id => 'author' , 'post_type' => 'product' ); ?>
<?php $author_posts = get_posts ( $args ); ?>
<?php while( $author_posts->have_posts() ) : $author_posts->the_post(); ?>
<?php the_title( '<h2 class="entry-title"><a href="' . get_permalink() . '" title="' . the_title_attribute( 'echo=0' ) . '" rel="bookmark">', '</a></h2>' ); ?>
<?php wp_reset_postdata(); ?>
<?php endwhile; ?
如果有人知道要编写此代码,请帮助我。请具体说明,因为我不熟悉编码。
提前致谢。
答案 0 :(得分:1)
为什么不在post_type
上尝试全局指定product
为is_author()
?
这将是这样的(将此代码添加到您的functions.php):
<?php
add_action('pre_get_posts', 'my_pre_get_posts');
function my_pre_get_posts($query) {
if ($query->is_author() && $query->is_main_query()) {
$query->set('post_type', 'product');
}
}
?>
仅供参考,您在问题中提交的代码块中,保留第一个(因为您仍然需要为特定产品设置作者),但您可能不会需要第二个和第三个代码块。
修改强>
要在单独的网址中显示每位作者的产品,请将以下代码插入您的functions.php:
add_action('generate_rewrite_rules', 'my_custom_rewrite_rules');
function my_custom_rewrite_rules($rewrite) {
$rewrite->rules = array(
'author-products/([^/]+)/?$' => 'index.php?author_name=$matches[1]&post_type=product'
) + $rewrite->rules;
}
然后转到Settings -> Permalinks
并点击Save Changes
按钮。
您的网址将如下:http://example.com/author-products/admin/