Wordpress: Можете ли вы назначить обычные категории сообщений настраиваемым типам сообщений?

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

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

Мне было интересно, есть ли способ использовать обычные категории, которые я назначаю своим обычным сообщениям, для назначения сообщениям о пользовательских событиях.

Например, у меня есть региональные категории, такие как «Юго-восток», которые я использую для обычных сообщений, но я также хотел бы иметь возможность назначать эту категорию сообщениям о событиях, чтобы, когда люди просматривают архив категории «Юго-восток», они могут видеть обычные сообщения и сообщения о событиях, связанные с этой категорией.

Это возможно?

Спасибо за любую помощь заранее


person danapaige    schedule 25.04.2012    source источник
comment
Да, это возможно, но зависит от плагина, который вы используете для определения типа вашего сообщения. Так что же это за плагин?   -  person soju    schedule 25.04.2012
comment
Я еще не остановился на плагине для событий, но, вероятно, буду использовать Универсальный календарь событий.   -  person danapaige    schedule 25.04.2012


Ответы (3)


Простой:

add_action( 'init', 'myfuncxx'); function myfuncxx() {
    register_taxonomy_for_object_type( 'category', 'custom_postttt_typee' );
}
person T.Todua    schedule 15.04.2015

Вы хотели бы использовать функцию WordPress register_taxonomy_for_object_type() Поместите следующее в файл functions.php вашей темы:

function add_categories_to_events() {
    register_taxonomy_for_object_type( 'post_tag', 'event' );
}
add_action( 'init', 'add_categories_to_events' );
person Jeff Farthing    schedule 25.04.2012
comment
Я попробовал это и получил следующую ошибку: Предупреждение: call_user_func_array() [function.call-user-func-array]: ожидается, что первый аргумент будет допустимым обратным вызовом, 'add_category_to_events' был указан в /homepages/0/ d328057274/htdocs/cfsa-test/wp-includes/plugin.php в строке 405 Я также пытался использовать это, но изменил «события» на «ai1ec-events», так как я использую календарь событий All-in-One. . То же сообщение об ошибке. Я нашел этот пост на Wordpress.org и попытаюсь следовать указаниям: wordpress.org/support/topic/ - person danapaige; 26.04.2012

Я использовал код и инструкции здесь: http://wp.miragearts.com/allinone-event-calendar-events-blog-home-categories-tags/

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

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

Вот копия кода для functions.php:

// Add this to your theme's functions.php
function edit_my_query($query) {
  // Modify category and tag listings to include ai1ec events and all uses of the same term
  //  across event and post taxonomies
  //  ie live-music or arts whether they are event or post categories
  // also include ai1ec events in blog home and feeds
  if ( ( is_home() || is_feed() || is_category() || is_tag() ) 
          &&  empty( $query->query_vars['suppress_filters'] ) ) {
    // The 'suppress_filters' test above keeps your menus from breaking
    $post_type = get_query_var('post_type');
    if($post_type && $post_type[0] != 'post') {
      $post_type = $post_type;
    } else {
      $post_type = array('post','ai1ec_event'); // add custom post types here
    }
    $query->set('post_type',$post_type);
    if (is_category() || is_tag()) {
    // Add custom taxonomies to category and tag pages
    if (is_category()) {
        $taxonomy1 = 'category';
        $taxonomy2 = 'events_categories';
      }
      if (is_tag()){
        $taxonomy1 = 'post_tag';
        $taxonomy2 = 'events_tags';
      }
      $queried_object = $query->get_queried_object();
      $slug = $queried_object->slug;
      $query->set('tax_query', array(
        'relation' => 'OR',
        array(
          'taxonomy' => $taxonomy1,  'field' => 'slug', 'terms' => $slug
        ),
        array(
          'taxonomy' => $taxonomy2, 'field' => 'slug', 'terms' => $slug
        )
      ));
    }
  }
}
add_action('pre_get_posts', 'edit_my_query');
person danapaige    schedule 25.04.2012