作者的Woocommerce产品

时间:2014-09-13 17:43:12

标签: wordpress post woocommerce author

我想通过作者列出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; ?

如果有人知道要编写此代码,请帮助我。请具体说明,因为我不熟悉编码。

提前致谢。

1 个答案:

答案 0 :(得分:1)

为什么不在post_type上尝试全局指定productis_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/