it-swarm.com.de

Benutzerdefinierte Umschreibung von Beitragstyp und Taxonomie-URL

Ich erstelle mit Wordpress 3.5.1 ein benutzerdefiniertes Design für meine persönliche Website. Ich habe ein Problem mit dem benutzerdefinierten Post-Typ und der Taxonomie von WordPress. Hier sind die Details:

  • name des benutzerdefinierten Beitragstyps: articles
  • taxonomiename: article-categories
  • rewrite slug: articles (wie bei meinem cpt)

Momentan sieht meine URL so aus:

  • example.com/articles -> archive-articles.php (es funktioniert)

  • example.com/articles/taxo-parent -> taxonomy.php (es funktioniert)

  • example.com/articles/taxo-child -> taxonomy.php (es funktioniert)

  • example.com/articles/post-title -> Ich verwende single-articles.php, es funktioniert nicht

Ich möchte, dass meine URL so aussieht:

  • example.com/articles

  • example.com/articles/taxo-parent

  • example.com/articles/taxo-parent/taxo-child

  • example.com/articles/taxo-parent/taxo-child/post-title

Es ist eine Woche her, mit diesem Fall zu arbeiten und Beiträge von Google zu suchen/zu lesen, aber immer noch kein Glück zu haben. Schätze wirklich, wenn ihr mir helfen könntet.

Vielen Dank

BEARBEITEN:

Ich verwende WP Benutzerdefiniertes Plugin für die Post-Typ-Benutzeroberfläche, um einen benutzerdefinierten Post-Typ und eine benutzerdefinierte Taxonomie zu erstellen

6
TukangBeling

Ich habe meinen Schmuckpfosten-Typ-Balgcode verwendet. Sie können einfach Ihren Pfostentyp und Ihre Taxonomie ersetzen. Kopieren Sie sie einfach und fügen Sie sie in Ihre Funktionsdatei ein.

<?php

//Register a Jewelry post type.
function jewelry_post_register() {
    $labels = array(
        'name'               => _x( 'Jewelries', 'post type general name', 'twentytwelve' ),
        'singular_name'      => _x( 'Jewelry', 'post type singular name', 'twentytwelve' ),
        'menu_name'          => _x( 'Jewelries', 'admin menu', 'twentytwelve' ),
        'name_admin_bar'     => _x( 'Jewelry', 'add new on admin bar', 'twentytwelve' ),
        'add_new'            => _x( 'Add New', 'Jewelry', 'twentytwelve' ),
        'add_new_item'       => __( 'Add New Jewelry', 'twentytwelve' ),
        'new_item'           => __( 'New Jewelry', 'twentytwelve' ),
        'edit_item'          => __( 'Edit Jewelry', 'twentytwelve' ),
        'view_item'          => __( 'View Jewelry', 'twentytwelve' ),
        'all_items'          => __( 'All Jewelries', 'twentytwelve' ),
        'search_items'       => __( 'Search Jewelries', 'twentytwelve' ),
        'parent_item_colon'  => __( 'Parent Jewelries:', 'twentytwelve' ),
        'not_found'          => __( 'No Jewelries found.', 'twentytwelve' ),
        'not_found_in_trash' => __( 'No Jewelries found in Trash.', 'twentytwelve' )
    );

    $args = array(
        'labels'             => $labels,
        'public'             => true,
        'publicly_queryable' => true,
        'show_ui'            => true,
        'show_in_menu'       => true,
        'query_var'          => true,
        'rewrite'            => array( 'slug' => 'jewelries' ),
        'capability_type'    => 'post',
        'has_archive'        => true,
        'hierarchical'       => false,
        'menu_position'      => null,
        'supports'           => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'custom-fields' )
    );

    register_post_type( 'jewelry', $args );

}
add_action( 'init', 'jewelry_post_register' );


// create two taxonomies, Categories and writers for the post type "jewelry"
function create_jewelry_taxonomies() {
    // Add new taxonomy, make it hierarchical (like categories)
    $labels = array(
        'name'              => _x( 'Jewelry Categories', 'taxonomy general name' ),
        'singular_name'     => _x( 'Jewelry Category', 'taxonomy singular name' ),
        'search_items'      => __( 'Search Jewelry Categories' ),
        'all_items'         => __( 'All Jewelry Categories' ),
        'parent_item'       => __( 'Parent Jewelry Category' ),
        'parent_item_colon' => __( 'Parent Jewelry Category:' ),
        'edit_item'         => __( 'Edit Jewelry Category' ),
        'update_item'       => __( 'Update Jewelry Category' ),
        'add_new_item'      => __( 'Add New Jewelry Category' ),
        'new_item_name'     => __( 'New Jewelry Category Name' ),
        'menu_name'         => __( 'Jewelry Category' ),
    );

    $args = array(
        'hierarchical'      => true,
        'labels'            => $labels,
        'show_ui'           => true,
        'show_admin_column' => true,
        'query_var'         => true,
        'rewrite'           => array( 'slug' => 'jewelry-category' ),
    );

    register_taxonomy( 'jewelry-category', array( 'jewelry' ), $args );

}
add_action( 'init', 'create_jewelry_taxonomies', 0 );



function my_custom_template_include( $template ) {
    if ( get_query_var('post_type') == 'jewelry' ) {

        if ( is_single() ) {
            if ( $single = locate_template( array( 'single-jewelry.php') ) )
                return $single;
        }

    }
    return $template;
}

add_filter( 'template_include', 'my_custom_template_include' );
add_filter( 'template_include', 'insert_my_template' );

function insert_my_template( $template )
{
    if ( 'jewelry' === get_post_type() && !is_single() )
        return dirname( __FILE__ ) . '/archive-jewelry.php';


    return $template;
}


?>

Es funktioniert gut meine Seite nach Ihrer Frage.

1
csehasib

Sie können custom post_type name und taxonomy slug nicht gleich benennen, da sie bei der Arbeit an der Taxonomie wie folgt funktionieren

example.com/articles/taxo-parent --> taxonomy.php

example.com/articles/taxo-child --> taxonomy.php

Aber für Artikel vom Typ post_type wird dieselbe URL verwendet

example.com/post_type/post_in_that_post_type_slug

Dies führt also zu Konflikten bei den URLs Taxonomy und Post_Type, da die anfängliche URL für beide gleich ist

example.com/post_type/ = example.com/articles/

example.com/taxonomy/ = example.com/articles/
1
ksr89

Sie sollten Ihre Permalink-Option aktualisieren, nachdem Sie den Beitragstyp registriert haben.

http://codex.wordpress.org/Function_Reference/flush_rewrite_rules

Dann sollte es funktionieren.

0
Fatih Toprak