Проблем с таксономичните пътеки в блога по подразбиране на 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');

Опитали сте да промените параметъра за пренаписване на true, false, hierarchical и дори да го замените с / или името на персонализирания тип публикация.

Възможно ли е изобщо да се направи това? Всичко, което по същество искаме да направим тук, е блогът и персонализираните публикации да стоят под 2 различни основни пътеки, мисля, че това ще бъде достатъчно лесно за изпълнение!

съжалявам, ако това е било разгледано преди, терминологията е объркана и резултатите от търсенето показват нещо наистина далечно по този въпрос.

Благодаря!


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