2014-09-13 114 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

相關問題