Woocommerce商品作者
我正在尝试通过作者列出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; ?
如果有人知道写这段代码,请帮助我。请具体说明我对编码不熟悉。
在此先感谢。
为什么不尝试指定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');
}
}
?>
仅供参考,从你在你的问题提交的代码块,离开第一个(如您仍然需要为特定产品设置作者),但是您可能不需要第二个和第三个代码块。
编辑
显示每个作者的产品在一个单独的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/
嗨马林,你是我的英雄!非常感谢!还有一件事:是否可以在替代作者页面上显示这些post_types?类似于domain.com/author-products/author-name?并保持原来的domain.com/author/author-name页面原样显示常规信息? 再次感谢您的慷慨帮助! – 2014-09-15 15:01:40
我已经编辑了我的答案,上面包含一个示例解决方案。 – 2014-09-15 19:49:54
嗯,我没有类似的东西在书店吸引网站,不管你尝试做我只是使用的属性称为作家和复杂的事情出现了,我有所有作者的名字作为这个分类学术语(作者)。那么只需将作者添加到产品中即可。其余与为特定作者循环产品完全相同,例如类别或属性(分类法)。您可以通过属性添加woo过滤器导航,点击作者将显示属于他的所有产品。事实上,你可以通过管理员执行所有这些操作,而无需触摸主题上的任何单个文件在我看来,当然:) – rgdesign 2014-09-13 18:11:23