2014-09-13 60 views
1

我正在尝试通过作者列出woocommerce产品。 我跟着这个步骤: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

嗯,我没有类似的东西在书店吸引网站,不管你尝试做我只是使用的属性称为作家和复杂的事情出现了,我有所有作者的名字作为这个分类学术语(作者)。那么只需将作者添加到产品中即可。其余与为特定作者循环产品完全相同,例如类别或属性(分类法)。您可以通过属性添加woo过滤器导航,点击作者将显示属于他的所有产品。事实上,你可以通过管理员执行所有这些操作,而无需触摸主题上的任何单个文件在我看来,当然:) – rgdesign 2014-09-13 18:11:23

回答

0

为什么不尝试指定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'); 
    } 
} 

?> 

仅供参考,从你在你的问题提交的代码块,离开第一个(如您仍然需要为特定产品设置作者),但是您可能不需要第二个和第三个代码块。

编辑

显示每个作者的产品在一个单独的URL,插入下面的代码到你的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/

+0

嗨马林,你是我的英雄!非常感谢!还有一件事:是否可以在替代作者页面上显示这些post_types?类似于domain.com/author-products/author-name?并保持原来的domain.com/author/author-name页面原样显示常规信息? 再次感谢您的慷慨帮助! – 2014-09-15 15:01:40

+0

我已经编辑了我的答案,上面包含一个示例解决方案。 – 2014-09-15 19:49:54

+0

非常感谢你!我希望你不介意我是否再问一件事:如果我想在每个作者的个人资料页面上提供产品作者列表的链接,我应该写些什么。我有这个将链接到常规帖子。什么会是相同的,但对于“产品”?再次感谢你的帮助!! – 2014-09-16 13:30:09

相关问题