2014-09-13 2 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 filter по атрибутам, щелкнув автора, вы увидите все принадлежащие ему продукты. На самом деле вы можете сделать все это от администратора без прикосновения к одному файлу по теме. По-моему, конечно :) – rgdesign

ответ

0

Почему вы не пытаетесь указать 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'); 
    } 
} 

?> 

FYI, из кодовых блоков, которые вы, представленные в вашем вопросе, оставьте первый (как вы по-прежнему необходимо будет установить автора для определенных продуктов), но вам, вероятно, не понадобится второй и третий блок кода.

EDIT

Для отображения продуктов для каждого автора в отдельном 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.

Ваших URL-адрес будут тогда, как: http://example.com/author-products/admin/

+0

Привет, Марин, ты мой герой !! Спасибо огромное! Еще одна вещь: можно ли отображать эти post_types на альтернативной странице автора? Что-то вроде domain.com/author-products/author-name? И оставить исходную страницу domain.com/author/author-name так, как это было, показывая регулярные сообщения? Еще раз спасибо за вашу щедрую помощь! –

+0

Я отредактировал свой ответ выше, чтобы содержать примерное решение для вас. –

+0

Спасибо вам большое! Надеюсь, вы не возражаете, если я попрошу еще одну вещь: что мне написать, если я хочу предоставить ссылку на список авторов на странице профиля для каждого автора. У меня есть этот , который будет ссылаться на обычный пост. Что будет такое же, но для «продуктов»? Еще раз спасибо за вашу помощь!! –

Смежные вопросы