2014-09-06 4 views
1

Я ищу способ исключить все должности в течение срока для пользовательской таксономии из моего RSS-канала. У меня есть обычная таксономия под названием «фильтр» и термин в этой таксономии под названием «premium», которую я хочу исключить из своего RSS-канала.Как исключить сообщения из пользовательского термина таксономии из Wordpress RSS-канал

Я видел множество мест, как исключать должности из одного члена в категории, но еще не нашел, как я могу исключить должности из термина в пользовательской таксономии.

function excludecatfeed($query) { 
      if(is_feed()) { 
          $query->set('cat','-1'); 
          return $query; 
      } 
} 
add_filter('pre_get_posts', 'excludecatfeed'); 

Это то, что я считаю, все время при поиске для этого, но это для категории, я ищу, чтобы сделать это же самое, но для пользовательской таксономии. Спасибо

ответ

1

Мне удалось выяснить, как исключить пользовательскую таксономию из моего канала wordpress.

add_filter('pre_get_posts','better_editions_archive'); 

function better_editions_archive($query) { 

if ($query->is_feed()) { 
    $query->set('post_type', array('post')); 
    $query->set('tax_query', array(
     array(
      'taxonomy' => 'filter', 
      'field' => 'slug', 
      'terms' => 'premium', 
      'operator' => 'NOT IN' 
     ) 
    )); 
} 

return $query; 
} 

В tax_query вы можете изменить то, что хотите изменить в своей пользовательской таксономии. Что я здесь делаю, я исключаю все должности в моей пользовательской таксономии под названием «Фильтр» и все сообщения, которые относятся к термину «премиум».

0

Вы можете использовать невероятно мощный крюк pre_get_posts для исключения сообщений с . срок в пользовательской таксономии

Использование пример пользовательской таксономии под названием filter и термин слизняк из premium, следующий код будет исключить эти сообщения из RSS Feed:

add_action('pre_get_posts', function ($query) { 
    if (is_admin() || ! $query->is_main_query()) { 
     return; 
    } 

    // Exclude Terms by Slug from RSS Feed  
    if ($query->is_feed()) { 
     $tax_query = array([ 
      'taxonomy' => 'filter', 
      'field' => 'slug', 
      'terms' => [ 'premium' ], 
      'operator' => 'NOT IN', 
     ]); 

     $query->set('tax_query', $tax_query); 
    } 
}, 11, 1); 

Если вы обеспокоены о изменении таксономического термина, который можно изменить, вы можете указать term_id вместо - что это, вероятно, более безопасным выбором:

$tax_query = array([ 
     'taxonomy' => 'filter', 
     'field' => 'term_id', 
     'terms' => [ '1234' ], 
     'operator' => 'NOT IN', 
    ]); 

В качестве дополнительного бонуса, если вы хотите, чтобы исключить , могут быть использованы все сообщения, имеющие какой-либо термин в пользовательской таксономии следующее:

$taxonomy = 'filter'; 

    $terms = get_terms([ 
     'taxonomy' => $taxonomy, 
     'fields' => 'ids', 
    ]); 

    $tax_query = array([ 
     'taxonomy' => $taxonomy, 
     'field' => 'term_id', 
     'terms' => (array) $terms, 
     'operator' => 'NOT IN', 
    ]); 

Обязательно поместите этот фрагмент кода в файл вашей темы functions.php, так как он работает на раннем этапе жизненного цикла WordPress. Наслаждайтесь!

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

  • Нет связанных вопросов^_^