Support » Themes » Problem mit Custom Post Types

  • Gelöst rabox66

    (@rabox66)


    Hi Community,
    ich habe ein Problem mit den Custom Post Types, vielleicht kann mir jemand helfen. Ich möchte für eine Fotoseite Galerien designen, die Galerien sollen Schlagworte haben.

    Post Type ist also galerien
    taxanomy ist schlagwoerte (beschreiben die Galerien)

    Featured Image nutze ich auch, es soll in der Überblicksseite (wo also alle Galerien gelistet sind) die jeweilige Galerie repräsentieren. Ich habe einen Code für die functions.php erstellt, das schien ja relativ leicht zu sein. Die Galerien und die Schlagworte werden im Adminbereich auch korrekt angezeigt, ich kann Inhalte einfüllen, das ist soweit OK. Wenn ich aber eine Überblicksseite machen will, funtioniert sie nicht mit dem Template archive-galerien.php. Es wird die index.php genutzt. Ein zusätzliches Problem ist, dass die Anzeige überhaupt nur im Firefox möglich ist, in Chrome wird man zur Startseite weitergeleitet.

    Ich nehme an, dass das Problem in meinem Codeschnipsel der functions.php zu finden ist, aber ich komme leider nicht drauf. Könnte mir bitte jemand helfen? Das wäre toll! Hier der Schnipsel:

    add_action( 'init', 'create_post_type' );
    function create_post_type() {
        register_post_type( 'galerien',
            array(
                'labels' => array(
                    'name' => __( 'Galerien' ),
                    'singular_name' => __( 'Galerie' )
                ),
            'public' => true,
            'has_archive' => true,
            )
        );
        
        register_taxonomy( 'schlagwoerter', 'galerien',
    		array(
                 'hierarchical' => true,
                  'has_archive' => true,
    			 'label' => __('Schlagwörter'),
    			 'query_var' => 'schlagwoerter',
    			 'rewrite' => array('slug' => 'schlagwoerter' ),
    			 'supports' => array(
    					'title',
    					'editor',
                        'thumbnail',
                        'custom-fields',
                        'revisions')
    		)
    	);
    }
    

    Hat jemand Ideen? Danke für Hinweise auf den Fehler, irgendwie scheine ich auf der Leitung zu stehen. 😉
    Raphael

    Die Seite, für die ich Hilfe brauche: [Anmelden, um den Link zu sehen]

Ansicht von 3 Antworten - 1 bis 3 (von insgesamt 3)
  • Thread-Starter rabox66

    (@rabox66)

    Sorry, ich hab die Reihenfolge falsch. Das ist mir erst nach dem Posten aufgefallen.

    add_action( ‚init‘, ‚create_post_type‘ );
    muss ja ans Ende!

    Custom Post Types und Custom Taxonomies sollten nie im Theme registriert werden, weil sonst bei einem Themewechsel Inhalte verloren gehen. Besser ist es, entweder rasch ein eigenes Plugin zu schreiben oder eines der Plugins zu nutzen, mit denen du Custom Post Types und Taxonomies anlegen kannst (z.B. Custom Post Type UI).

    Damit die Permalinks für den neuen Custom Post Type und der Custom Taxonomy korrekt ausgegeben werden, sollte das Plugin auch noch die gecachten Permalink-Regeln neu einlesen:

    register_deactivation_hook( __FILE__, 'flush_rewrite_rules' );
    register_activation_hook( __FILE__, 'myplugin_flush_rewrites' );
    function myplugin_flush_rewrites() {
    	myplugin_custom_post_types_registration();
    	flush_rewrite_rules();
    }
    myplugin_custom_post_types_registration(
      add_action( 'init', 'myplugin_create_post_type' );
    );
    function myplugin_create_post_type() { 
     // CPT-Registrierung …
    }
    

    Wie du siehst, habe ich deiner Funktion create_post_type() ein Präfix vorangestellt. Damit vermeidest du, dass es Konflikte mit Funktionen anderer Plugins gibt, die den gleichen Funktionsnamen verwenden.

    Ob du add_action() oberhalb oder unterhalb der Funktion aufrufst, ist eigentlich egal. Ich habe es hier oberhalb der Callbackfunktion eingefügt, weil ich es so besser lesen kann. Es ist allerdings schön, wenn du dann einheitlich add_action() und add_filter() ober- oder unterhalb der Callbackfunktion einfügst.

    Bei dem Support-Attribut ist wohl etwas durcheinander geraten? Wenn der Post Type galerien ein Featured Image und den Editor nutzen soll, müssen die support-Angaben als Argument der Funktion register_post_type() angegeben werden.

    Thread-Starter rabox66

    (@rabox66)

    Danke für die Tipps mit der Trennung in Themes und Plugin. Ich werde aber ein Plugin selbst coden, denn problemloser Umgang mit CPT ist schon besser als Plugins von Dritten. Derzeit stehe ich noch ein bisschen auf Kriegsfuss mit dem Thema, wird aber werden.

    Du hast recht, die Sachen sind in meinem Code durcheinander gekommen, jetzt klappt es aber.

    Danke für die Hilfe!

Ansicht von 3 Antworten - 1 bis 3 (von insgesamt 3)
  • Das Thema „Problem mit Custom Post Types“ ist für neue Antworten geschlossen.