wake-up-neo.com

Seite nicht gefunden Taxonomie Benutzerdefinierter Beitragstyp

Ich habe einen benutzerdefinierten Post-Typ mit Taxonomien erstellt. Wenn ich auf die Taxonomie-Seite gehe und eine der Taxonomien anzeige, wird der Fehler "Seite nicht gefunden" angezeigt, dass die Taxonomie nicht erstellt wurde.

Irgendwelche Vorschläge?

/*Products*/
$labels = array(
    'name' => _x('Products', 'post type general name'),
    'singular_name' => _x('Product', 'post type singular name'),
    'add_new' => _x('Add New', 'Product'),
    'add_new_item' => __("Add New Product"),
    'edit_item' => __("Edit Product"),
    'new_item' => __("New Product"),
    'view_item' => __("View Product"),
    'search_items' => __("Search Product"),
    'not_found' =>  __('No products found'),
    'not_found_in_trash' => __('No products found in Trash'), 
    'parent_item_colon' => ''
  );

$args = array(
    'labels' => $labels,
        'singular_label' => __('Products'),
        'public' => true,
        'show_ui' => true,
        'capability_type' => 'post',
        'hierarchical' => false,
        'rewrite' => true,
        'query_var' => 'products',
        'taxonomies' => array('products-cat'),
        'supports' => array('title', 'editor', 'custom-fields', 'thumbnail', 'excerpt'),
        'has_archive' => true,
);
register_post_type( 'products' , $args );

// Add to admin_init function
add_filter('manage_edit-products_columns', 'add_new_products_columns');
function add_new_products_columns($columns) {
$columns = array(
    'cb' => '<input type="checkbox" />',
        'images' => 'Images',
    'title' => 'Product Name',
        'author' => 'Author',
        'product-categories' => 'Categories',
        'tags' => 'Tags',
        'date' => 'Date',
); 
    return $columns;
}

add_action('manage_products_posts_custom_column', 'manage_products_columns', 10, 2);

function manage_products_columns($column_name, $id) {
    global $wpdb;
    switch ($column_name) {

    case 'images':
            //echo get_the_post_thumbnail( $page->ID, array(50,50) ); 
    break;

    case 'product-categories':
        echo get_the_term_list($post->ID, 'products-cat', '', ', ','');
    break;

        default:
        break;
    } 
}

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

function products_create_taxonomies() 
{
    // Photo Categories
    register_taxonomy('products-cat',array('products'),array(
        'hierarchical' => true,
        'label' => 'Product Categories',
        'singular_name' => 'Products Category',
        'show_ui' => true,
        'query_var' => true,
        'rewrite' => array('slug' => 'products' )
    ));
}

/*End Products*/

Ich habe dies auf meiner Archivseite

archive-products.php

<?php get_header(); ?>

<?php if ( have_posts() ) : ?>
<?php while ( have_posts() ) : the_post();?>
                <?php the_title(); ?>   
<?php endwhile; endif; ?>
4
Jeremy Love

Nach einigen Recherchen habe ich einen Blog gefunden, der tatsächlich eine Antwort auf dieses Problem hatte.

Hier ist die Funktion zusammen mit der Blog-URL .

function taxonomy_slug_rewrite($wp_rewrite) {
    $rules = array();
    // get all custom taxonomies
    $taxonomies = get_taxonomies(array('_builtin' => false), 'objects');
    // get all custom post types
    $post_types = get_post_types(array('public' => true, '_builtin' => false), 'objects');

    foreach ($post_types as $post_type) {
        foreach ($taxonomies as $taxonomy) {

            // go through all post types which this taxonomy is assigned to
            foreach ($taxonomy->object_type as $object_type) {

                // check if taxonomy is registered for this custom type
                if ($object_type == $post_type->rewrite['slug']) {

                    // get category objects
                    $terms = get_categories(array('type' => $object_type, 'taxonomy' => $taxonomy->name, 'hide_empty' => 0));

                    // make rules
                    foreach ($terms as $term) {
                        $rules[$object_type . '/' . $term->slug . '/?$'] = 'index.php?' . $term->taxonomy . '=' . $term->slug;
                    }
                }
            }
        }
    }
    // merge with global rules
    $wp_rewrite->rules = $rules + $wp_rewrite->rules;
}
add_filter('generate_rewrite_rules', 'taxonomy_slug_rewrite');
2
Jeremy Love

Auf meiner lokalen Nginx-Plattform ist das gleiche Problem aufgetreten. Nachdem ich die Permalinks in den Einstellungen aktualisiert habe, hat alles gut funktioniert. Einstellungen> Permalinks> Änderungen speichern (ohne Änderung)

10

Ich würde mindestens zwei Dinge empfehlen:

  1. Ändern Sie die Priorität für Ihre products_create_taxonomies-Aktion auf mindestens 1, wenn nicht auf 5 oder höher. (Ich denke, 0 ist aus irgendeinem Grund nicht für Aktionsprioritäten gültig.)

  2. Fügen Sie Ihre Beitragstyperstellung zu einer Init-Aktion hinzu, so wie Sie Ihre Taxonomien mit einer früheren Priorität als Ihre Taxonomie erstellt haben (da Sie sie über die Taxonomie verbinden).

Wenn sich diese beiden Änderungen nicht darum kümmern, versuchen Sie, beide einzurichten (ohne sie über ihre eigenen Strukturen zu verknüpfen), und rufen Sie dann bei einer späteren Priorität (noch während der Initialisierung) Folgendes auf:

register_taxonomy_for_object_type( 'products-cat', 'products' );

Das sollte sicherstellen, dass sie vollständig und richtig miteinander verbunden sind.

1
Privateer

Ich denke, Ihr Hauptproblem hier ist das Umschreiben für Ihre Taxonomie . So sieht Ihre Umschreibung für die Taxonomie aus

'rewrite' => array('slug' => 'products' )

Dies ist genau das, was dieses Umschreiben in Ihrem benutzerdefinierten Beitragstyp bedeutet. Folgende

'rewrite' => true,

übersetzt dies in Ihrem benutzerdefinierten Beitragstyp

'rewrite' => array('slug' => 'products' )

Standardmäßig werden Ihre Taxonomieanfragen durch diese Überschneidung bei Umschreibungen beeinträchtigt. Als Lösung können Sie Ihre Umschreibung für Ihre Taxonomie ändern oder einen Blick auf diesen Beitrag werfen, den ich kürzlich auf dieser Site durchgeführt habe, um eine bessere Problemumgehung dafür zu finden.

Wichtig: Leere deine Permalinks nach jedem Update in deinem Code, um deine Permalinks auf deine neue Struktur zurückzusetzen

0
Pieter Goosen