2017-05-27 6 views
1

Also im Grunde so aussehen, wie ich habe versucht, meine Permalinks zu machen:machen Benutzerdefinierte Beitrag Typ Hierarchical Permalinks Wohnung

/Rezepte/postid/postname

eher als das, was das Potenzial, dies zu werden hat:

/Rezepte/postparent/postparent/postparent/postparent/postname

Benutzer haben die Möglichkeit Beiträge auf dem vorderen Ende zu schaffen, die Kinder von anderen Beiträgen sind. Das kann immer weiter gehen und ich möchte nicht, dass die Permalinks wahnsinnig lang werden.

Ich konnte alle übergeordneten Postnamen aus dem Permalink mit dem folgenden Code entfernen. Dies funktioniert jedoch nicht, wenn jemand einen Post-Namen erstellt, der bereits existiert.

Ich möchte in der Lage sein, den Permalink zu ändern, um die Post-ID darin aufzunehmen, so dass dies nicht passiert, aber ich kann es nicht herausfinden. Ich schätze jede Hilfe! Hier

ist der Code:

function Recipes() { 

$labels = array(
'name'     => _x('Recipes', 'Post Type Recipes', 'recipes'), 
'singular_name'   => _x('Recipe', 'Post Type Singular Name', 'Recipe'), 
'menu_name'    => __('Recipes', 'recipes'), 
'name_admin_bar'  => __('Recipes', 'recipes'), 
'archives'    => __('Recipes Archives', 'recipes'), 
'parent_item_colon'  => __('Parent Recipe', 'recipes'), 
'all_items'    => __('All Recipes', 'recipes'), 
'add_new_item'   => __('Add New Recipe', 'recipes'), 
'add_new'    => __('Add Recipe', 'recipes'), 
'new_item'    => __('New Recipe', 'recipes'), 
'edit_item'    => __('Edit Recipe', 'recipes'), 
'update_item'   => __('Update Recipe', 'recipes'), 
'view_item'    => __('View Recipe', 'recipes'), 
'search_items'   => __('Search Recipes', 'recipes'), 
); 
$args = array(
'label'     => __('Recipes', 'Recipes'), 
'description'   => __('Recipes', 'recipes'), 
'labels'    => $labels, 
'supports' => array(
    'title', 
    'thumbnail', 
    'comments', 
    'editor', 
    'revisions'), 
'taxonomies'   => array('category', 'recipes-tag'), 
'hierarchical'   => true, 
'public'    => true, 
'show_ui'    => true, 
'show_in_menu'   => true, 
'menu_position'   => 5, 
'menu_icon'   => 'dashicons-editor-ul', 
'show_in_admin_bar'  => true, 
'show_in_nav_menus'  => true, 
'can_export'   => true, 
'has_archive'   => true, 
'exclude_from_search' => false, 
'publicly_queryable' => true, 
'capability_type'  => 'page', 
'show_in_rest'  => true, 
'rest_controller_class' => 'WP_REST_Posts_Controller', 
'rewrite'    => array('slug' => 'recipes'), 

); 
register_post_type('recipes', $args); 

add_rewrite_rule(
     '^recipes/([^/]+)/?$', 
     'index.php?post_type=recipes&name=$matches[1]', 
     'top' 
    ); 

} 

add_action('init', 'Recipes', 0); 


function bvt_recipes_flatten_hierarchies($post_link, $post) { 
    if ('recipes' != $post->post_type) { 
     return $post_link; 
    } 
    $uri = ''; 
    foreach ($post->ancestors as $parent) { 
     $uri = get_post($parent)->post_name . "/" . $uri; 
    } 

    return str_replace($uri, '', $post_link); 
} 
add_filter('post_type_link', 'bvt_recipes_flatten_hierarchies', 10, 2); 

Antwort

0

UPDATE

ich es herausgefunden. Hier sind die Änderungen für den Fall, dass jemand anderes auf dieses Problem stößt.

function Recipes() { 

$labels = array(
'name'     => _x('Recipes', 'Post Type Recipes', 'recipes'), 
'singular_name'   => _x('Recipe', 'Post Type Singular Name', 'Recipe'), 
'menu_name'    => __('Recipes', 'recipes'), 
'name_admin_bar'  => __('Recipes', 'recipes'), 
'archives'    => __('Recipes Archives', 'recipes'), 
'parent_item_colon'  => __('Parent Recipe', 'recipes'), 
'all_items'    => __('All Recipes', 'recipes'), 
'add_new_item'   => __('Add New Recipe', 'recipes'), 
'add_new'    => __('Add Recipe', 'recipes'), 
'new_item'    => __('New Recipe', 'recipes'), 
'edit_item'    => __('Edit Recipe', 'recipes'), 
'update_item'   => __('Update Recipe', 'recipes'), 
'view_item'    => __('View Recipe', 'recipes'), 
'search_items'   => __('Search Recipes', 'recipes'), 
); 
$args = array(
'label'     => __('Recipes', 'Recipes'), 
'description'   => __('Recipes', 'recipes'), 
'labels'    => $labels, 
'supports' => array(
    'title', 
    'thumbnail', 
    'comments', 
    'editor', 
    'revisions'), 
'taxonomies'   => array('category', 'recipes-tag'), 
'hierarchical'   => true, 
'public'    => true, 
'show_ui'    => true, 
'show_in_menu'   => true, 
'menu_position'   => 5, 
'menu_icon'   => 'dashicons-editor-ul', 
'show_in_admin_bar'  => true, 
'show_in_nav_menus'  => true, 
'can_export'   => true, 
'has_archive'   => true, 
'exclude_from_search' => false, 
'publicly_queryable' => true, 
'capability_type'  => 'page', 
'show_in_rest'  => true, 
'rest_controller_class' => 'WP_REST_Posts_Controller', 
// 'rewrite'    => array('slug' => 'recipes'), 

); 
register_post_type('recipes', $args); 

add_rewrite_rule(
     'recipes/([a-z-]+)/([0-9]+)?$', 
     'index.php?post_type=recipes&name=$matches[1]&p=$matches[2]', 
     'top'); 

} 

add_action('init', 'Recipes', 0); 



function change_post_type_link($link, $post = 0){ 
    if ($post->post_type == 'recipes'){ 
     return home_url('recipes/'. $post->post_name .'/'. $post->ID); 
    } else { 
     return $link; 
    } 
} 


add_filter('post_type_link', 'change_post_type_link', 10, 2); 
Verwandte Themen