WordPress - 自定义帖子类型和分类

时间:2014-10-05 16:14:00

标签: wordpress rewrite custom-post-type taxonomy custom-taxonomy

目前我已创建:

  • 一个新的分类:项目
  • 一种新的帖子类型:任务

我希望:

// 1- 所有项目列表
www.example.com/projets /

// 2-查看一个项目并列出任务
www.example.com/projet/un-projet /

// 3-查看一个项目的一项任务
www.example.com/projet/un-projet/introduction /

1号和2号不起作用。 我该怎么做?

编辑:

我在我的functions.php

中添加了这个
<?php

add_action( 'init', 'tache_type_register' );
/**
 * Ajoute un type de post "Les Tâches" d'un projet
 * @link http://codex.wordpress.org/Function_Reference/register_post_type
 */
function tache_type_register() {
    $labels = array(
        'name'               => 'Tâches',
        'singular_name'      => 'Tâche',
        'menu_name'          => 'Tâches',
        'name_admin_bar'     => 'Tâche',
        'add_new'            => 'Ajouter',
        'add_new_item'       => 'Ajouter une nouvelle tâche',
        'new_item'           => 'Nouvelle tâche',
        'edit_item'          => 'Modifier la tâche',
        'view_item'          => 'Voir la tâche',
        'all_items'          => 'Toutes les tâches',
        'search_items'       => 'Rechercher une tâche',
        'parent_item_colon'  => 'Tâche parente:',
        'not_found'          => 'Aucune tâche trouvée.',
        'not_found_in_trash' => 'Aucune tâche dans la corbeille.',
    );

    $args = array(
        'labels'             => $labels,
        'public'             => true,
        'publicly_queryable' => true,
        'show_ui'            => true,
        'show_in_menu'       => true,
        'query_var'          => true,
        'rewrite'            => array( 'slug' => 'projet/%projet%' ),
        'capability_type'    => 'post',
        'has_archive'        => true,
        'hierarchical'       => false,
        'menu_position'      => 5,
        'supports'           => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments' ),
        //'taxonomies'       => array( 'category', 'post_tag' )
    );

    register_post_type( 'tache', $args );
}


add_action( 'init', 'create_projet_taxonomies' );
/**
 * Ajoute une taxonomie Type pour les pour les Projets
 * @link http://codex.wordpress.org/Function_Reference/register_taxonomy
 */
function create_projet_taxonomies() {

    $labels = array(
        'name'              => 'Projets',
        'singular_name'     => 'Projet',
        'search_items'      => 'Rechercher un projet',
        'all_items'         => 'Tous les projets',
        'parent_item'       => null,
        'parent_item_colon' => null,
        'edit_item'         => 'Modifier un projet',
        'update_item'       => 'Mettre à jour',
        'add_new_item'      => 'Ajouter un nouveau projet',
        'new_item_name'     => 'New Genre Name',
        'menu_name'         => 'Projets',
    );

    $args = array(
        'hierarchical'      => true,
        'labels'            => $labels,
        'show_ui'           => true,
        'show_admin_column' => true,
        'query_var'         => true,
        'rewrite'           => array( 'slug' => 'i/dont/know/here' ), 
    );

    register_taxonomy( 'projet', array( 'tache' ), $args );
}



/* Filtre pour modifier le permalink Projet */
add_filter('post_link', 'projet_permalink', 1, 3);
add_filter('post_type_link', 'projet_permalink', 1, 3);

function projet_permalink($permalink, $post_id, $leavename) {

    if (strpos($permalink, '%projet%') === FALSE) return $permalink;

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

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

    return str_replace('%projet%', $taxonomy_slug, $permalink);
}


?>

现在

查看项目的一项任务,如(www.example.com/projet/homepi/introduction/)工作
查看项目的所有任务,如(www.example.com/projet/homepi/)工作
但是看到像(www.example.com/projet/)这样的所有项目都没有工作

并且不知道create_projet_taxonomy()的param重写。

有人可以帮助我并解释我如何做到这一点?感谢

0 个答案:

没有答案