Блог Wordpress по умолчанию и проблема с путями таксономии пользовательских сообщений

Кажется, я здесь о кирпичную стену задел. Мы создаем новый веб-сайт на wordpress со структурой постоянных ссылок «/ labs /% postname% /». Это отлично работает для всех сообщений, используя / labs / в качестве основы. Наша проблема в том, что нам нужен настраиваемый тип сообщения для нашего портфолио, где мой базовый URL действительно должен быть / work, затем, вероятно, / work / digital, / work / cgi и так далее. Я создал настраиваемый тип сообщения и таксономию, но независимо от того, что я делаю, URL-адрес всех моих настраиваемых сообщений начинается с / labs /.

Я попробовал множество предложений, от правил перезаписи до изменения параметра перезаписи в функции register_taxonomy. Код, который я использую, приведен ниже:

function create_post_type() {
register_post_type( 'our_work',
    array(
        'labels' => array(
            'name' => __( 'Work Items' ),
            'singular_name' => __( 'Work Item' )
        ),
        'public' => true,
        'has_archive' => true,
        'rewrite' => array('slug' => 'work'),
        'supports' => array(
            'title',
            'editor',
            'excerpt',
            'custom-fields',
            'revisions',
            'thumbnail',
            'page-attributes'   
        ),
    )
);
}
add_action( 'init', 'create_post_type' );

function create_taxonomies() {
register_taxonomy('work-categories', array('our_work'), array(
    'labels' => array(
        'name' => 'Work Categories'
    ),
    'show_ui' => true,
    'show_tagcloud' => false,
    'rewrite' => true,
    'hierarchical' => true,
    'with_front' => false
));
}
add_action('init', 'create_taxonomies');

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

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

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

Спасибо!


person geodeath    schedule 28.01.2014    source источник


Ответы (1)


Мне всегда кажется, что я нахожу свое собственное решение через несколько минут после публикации здесь ... вот, для людей, имеющих такую ​​же проблему, убедитесь, что ярлык как в регистрации настраиваемого типа сообщения, так и в таксономии одинаков ... Также убедитесь, что вы используете генератор, так как легко что-то упустить ... Итак, теперь обе базы работают нормально, никаких проблем! :)

Изменить: Итак, любая база, которую вы используете в своих общих настройках, будет работать для всех ваших обычных сообщений, но с добавленной функцией и правильной привязкой все пользовательские будут переписаны. Надеюсь это поможет!

<?php 

/**
 * Register Custom Post Type
*/
function create_post_type() {
register_post_type( 'our_work', array(
        'label'              => 'Work Items',
        'singular_label'     => 'Work Item',
        'description'        => 'Our work items',
        'public'             => true,
        'publicly_queryable' => true,
        'show_ui'            => true,
        'query_var'          => true,
        'has_archive'        => true,
        'hierarchical'       => true,
        'supports'           => array( 'title', 'editor', 'excerpt', 'custom-fields', 'revisions', 'thumbnail', 'page-attributes' ),
        'rewrite'            => array( 'slug' => 'work-items/%work-categories%', 'with_front' => false),
    )
);
}
add_action( 'init', 'create_post_type' );

/**
 * Register Custom Taxonomy
*/
function create_taxonomies() {
$labels = array(
    'name'                       => 'work-categories',
    'singular_name'              => 'work-category',
    'menu_name'                  => 'Work Categories',
    'all_items'                  => 'All Items',
    'parent_item'                => 'Parent Item',
    'parent_item_colon'          => 'Parent Item:',
    'new_item_name'              => 'New Item Name',
    'add_new_item'               => 'Add New Item',
    'edit_item'                  => 'Edit Item',
    'update_item'                => 'Update Item',
    'separate_items_with_commas' => 'Separate items with commas',
    'search_items'               => 'Search Items',
    'add_or_remove_items'        => 'Add or remove items',
    'choose_from_most_used'      => 'Choose from the most used items',
    'not_found'                  => 'Not Found',
);
$rewrite = array(
    'slug'                       => 'work-items',
    'with_front'                 => false,
    'hierarchical'               => true,
);
$args = array(
    'labels'                     => $labels,
    'hierarchical'               => true,
    'public'                     => true,
    'show_ui'                    => true,
    'show_admin_column'          => true,
    'show_in_nav_menus'          => false,
    'show_tagcloud'              => false,
    'rewrite'                    => $rewrite,
    'query_var'                  => 'work-categories',
);
register_taxonomy( 'work-categories', 'our_work', $args );
}
add_action('init', 'create_taxonomies');


/**
 * Add custom filters to replace categories in custom taxonomy paths
*/
add_filter('post_link', 'brand_permalink', 1, 3);
add_filter('post_type_link', 'brand_permalink', 1, 3);

function brand_permalink($permalink, $post_id, $leavename) {
if (strpos($permalink, '%work-categories%') === FALSE) return $permalink;

// Get post
$post = get_post($post_id);
if (!$post) return $permalink;

// Get taxonomy terms
$terms = wp_get_object_terms($post->ID, 'work-categories');
if (!is_wp_error($terms) && !empty($terms) && is_object($terms[0]))
    $taxonomy_slug = $terms[0]->slug;
else $taxonomy_slug = 'uncategorised';

return str_replace('%work-categories%', $taxonomy_slug, $permalink);
}

?>
person Community    schedule 28.01.2014
comment
Имея ту же проблему, используя пользовательский интерфейс пользовательского типа сообщения, не могли бы вы подробнее рассказать о своем решении? - person Matt Saunders; 02.04.2014
comment
просто добавляю код для всех, извините за долгую задержку! - person geodeath; 16.04.2014