it-swarm.com.de

Benutzerdefinierter Beitragstyp single- {custom} .php funktioniert nicht

Ich habe einen benutzerdefinierten Post-Typ mit dem Maschinennamen special_media_post erstellt und wordpress sieht die single-special_media_post.php einfach nicht. Ich bin völlig verloren. Es bleibt standardmäßig die index.php

Hier ist mein Code für meinen benutzerdefinierten Beitragstyp und seine Taxonomien:

//Post and Taxonomy stuff
//Register Custom Post Type
function special_media_post() {
$labels = array(
    'name'                => _x( 'Media Posts', 'Post Type General Name', 'text_domain' ),
    'singular_name'       => _x( 'Media Post', 'Post Type Singular Name', 'text_domain' ),
    'menu_name'           => __( 'Media Post', 'text_domain' ),
    'parent_item_colon'   => __( 'Media Post:', 'text_domain' ),
    'all_items'           => __( 'All Media Posts', 'text_domain' ),
    'view_item'           => __( 'View Media Post', 'text_domain' ),
    'add_new_item'        => __( 'Add New Media Post', 'text_domain' ),
    'add_new'             => __( 'New Media Post', 'text_domain' ),
    'edit_item'           => __( 'Edit Media Post', 'text_domain' ),
    'update_item'         => __( 'Update Media Post', 'text_domain' ),
    'search_items'        => __( 'Search Media Posts', 'text_domain' ),
    'not_found'           => __( 'No media posts found', 'text_domain' ),
    'not_found_in_trash'  => __( 'No media posts found in Trash', 'text_domain' ),
);

$rewrite = array(
    'slug'                => 'mediapost',
    'with_front'          => true,
    'pages'               => true,
    'feeds'               => true,
);

$args = array(
    'label'               => __( 'mediapost', 'text_domain' ),
    'description'         => __( 'Post Type for Media', 'text_domain' ),
    'labels'              => $labels,
    'supports'            => array( 'title', 'editor', 'custom-fields', ),
    'taxonomies'          => array( 'year', 'type' ),
    'hierarchical'        => false,
    'public'              => true,
    'show_ui'             => true,
    'show_in_menu'        => true,
    'show_in_nav_menus'   => true,
    'show_in_admin_bar'   => true,
    'menu_position'       => 5,
    'can_export'          => true,
    'has_archive'         => true,
    'exclude_from_search' => false,
    'publicly_queryable'  => true,
    'query_var'           => 'mediapost',
    'rewrite'             => $rewrite,
    'capability_type'     => 'page',
);

register_post_type( 'special_media_post', $args );
}

// Register Custom Taxonomy
function media_year()  {
$labels = array(
    'name'                       => _x( 'Years', 'Taxonomy General Name', 'text_domain' ),
    'singular_name'              => _x( 'Year', 'Taxonomy Singular Name', 'text_domain' ),
    'menu_name'                  => __( 'Year', 'text_domain' ),
    'all_items'                  => __( 'All Years', 'text_domain' ),
    'parent_item'                => __( 'Parent Year', 'text_domain' ),
    'parent_item_colon'          => __( 'Parent Year:', 'text_domain' ),
    'new_item_name'              => __( 'New Year Name', 'text_domain' ),
    'add_new_item'               => __( 'Add New Year', 'text_domain' ),
    'edit_item'                  => __( 'Edit Year', 'text_domain' ),
    'update_item'                => __( 'Update Year', 'text_domain' ),
    'separate_items_with_commas' => __( 'Separate years with commas', 'text_domain' ),
    'search_items'               => __( 'Search years', 'text_domain' ),
    'add_or_remove_items'        => __( 'Add or remove years', 'text_domain' ),
    'choose_from_most_used'      => __( 'Choose from the most used yearss', 'text_domain' ),
);

$rewrite = array(
    'slug'                       => 'year',
    'with_front'                 => true,
    'hierarchical'               => true,
);

$capabilities = array(
    'manage_terms'               => 'manage_categories',
    'edit_terms'                 => 'manage_categories',
    'delete_terms'               => 'manage_categories',
    'assign_terms'               => 'edit_posts',
);

$args = array(
    'labels'                     => $labels,
    'hierarchical'               => true,
    'public'                     => true,
    'show_ui'                    => true,
    'show_admin_column'          => true,
    'show_in_nav_menus'          => true,
    'show_tagcloud'              => true,
    'query_var'                  => 'year',
    'rewrite'                    => $rewrite,
    'capabilities'               => $capabilities,
);

register_taxonomy( 'year', 'special_media_post', $args );
}

// Register Custom Taxonomy
function media_type()  {
$labels = array(
    'name'                       => _x( 'Types', 'Taxonomy General Name', 'text_domain' ),
    'singular_name'              => _x( 'Type', 'Taxonomy Singular Name', 'text_domain' ),
    'menu_name'                  => __( 'Type', 'text_domain' ),
    'all_items'                  => __( 'All Types', 'text_domain' ),
    'parent_item'                => __( 'Parent Type', 'text_domain' ),
    'parent_item_colon'          => __( 'Parent Type:', 'text_domain' ),
    'new_item_name'              => __( 'New Type Name', 'text_domain' ),
    'add_new_item'               => __( 'Add New Type', 'text_domain' ),
    'edit_item'                  => __( 'Edit Type', 'text_domain' ),
    'update_item'                => __( 'Update Type', 'text_domain' ),
    'separate_items_with_commas' => __( 'Separate types with commas', 'text_domain' ),
    'search_items'               => __( 'Search types', 'text_domain' ),
    'add_or_remove_items'        => __( 'Add or remove types', 'text_domain' ),
    'choose_from_most_used'      => __( 'Choose from the most used types', 'text_domain' ),
);

$rewrite = array(
    'slug'                       => 'type',
    'with_front'                 => true,
    'hierarchical'               => true,
);

$capabilities = array(
    'manage_terms'               => 'manage_categories',
    'edit_terms'                 => 'manage_categories',
    'delete_terms'               => 'manage_categories',
    'assign_terms'               => 'edit_posts',
);

$args = array(
    'labels'                     => $labels,
    'hierarchical'               => true,
    'public'                     => true,
    'show_ui'                    => true,
    'show_admin_column'          => true,
    'show_in_nav_menus'          => true,
    'show_tagcloud'              => true,
    'query_var'                  => 'media_type',
    'rewrite'                    => $rewrite,
    'capabilities'               => $capabilities,
);

register_taxonomy( 'type', 'special_media_post', $args );
}

// Hook into the 'init' action
add_action( 'init', 'special_media_post', 0 );

// Hook into the 'init' action
add_action( 'init', 'media_year', 0 );

// Hook into the 'init' action
add_action( 'init', 'media_type', 0 );

Wenn es noch etwas gibt, das Sie sehen müssen, kann ich es aufstellen, aber es wird nicht einmal angezeigt, wenn ich dort ein Echo "Hallo Welt" anbringe. Es wird also einfach weder die single-special_media_post.php noch die archive-special_media_post.php angezeigt

14
BobbyDank

Besuchen Sie die Permalinks-Seite (die es löschen wird) und überprüfen Sie es erneut. WordPress muss wahrscheinlich nur angestupst werden, um Ihre Hinzufügung zur Hierarchie zu erkennen.

50
vancoder

Ändern Sie den Code

Von :

 'has_archive'         => true,

An:

 'has_archive'         => false,

Und dann gehe zur Permalink-Seite, ändere die Standardeinstellung und gehe zurück zu deinem "hübschen Permalink"

%Anschriftname%/

Jetzt sollte es klappen.

Der Grund, warum es nicht zur Seite single- {custom_post_type} .php geht, ist das has_archive. Wenn has_archive auf true gesetzt ist, wird anstelle der einzelnen Seite nach archive- {custom_post_type} .php gesucht.

Hoffe das hat funktioniert.

4
Wesley Cheung

Es wird empfohlen, beim Erstellen neuer Inhaltstypen auch die Funktionen register_activation_hook() und register_deactivation_hook() zu verwenden.

Es scheint, dass neue Inhaltstypen immer nicht neu geschrieben werden können. Um dies zu vermeiden, rufen Sie in register_activation_hook () die Funktion flush_rewrite_rules() und Ihre Funktion zum Registrieren neuer Inhalte auf. Ich weiß nicht warum, aber dies scheint dieses Problem zu vermeiden. Aussehen:

register_activation_hook( __FILE__, 'your_active_hook' );

function your_active_hook() {
    special_media_post();
    flush_rewrite_rules();
}
1
danilocgsilva

Ich habe Ihren Code kopiert, die Umschreiberegeln über den Admin gelöscht und jetzt verwendet das Theme die richtigen Vorlagen, wenn ich einen Medienbeitrag besuche.

Sie müssen die Umschreiberegeln einmal mit dem after_switch_theme-Hook leeren. Dadurch wird sichergestellt, dass die Umschreiberegeln automatisch gelöscht werden, nachdem der Benutzer das Design aktiviert hat.

Sie können diesen Code verwenden (direkt aus dem Codex):

add_action( 'init', 'theme_prefix_cpt_init' );
function theme_prefix_cpt_init() {
    register_post_type( ... );
}

function theme_prefix_rewrite_flush() {
    flush_rewrite_rules();
}
add_action( 'after_switch_theme', 'theme_prefix_rewrite_flush' );

Weitere Informationen finden Sie im WordPress-Codex: http://codex.wordpress.org/Function_Reference/register_post_type

BEARBEITEN: In einem solchen Fall ist das Inspect Rewrite Rules Plugin sehr praktisch, da Sie die mit Ihrem benutzerdefinierten Beitragstyp verbundenen Regeln anzeigen können: http://wordpress.org/extend/plugins/rewrite-rules- Inspektor/

Bitte beachten Sie auch, dass der empfohlene Ort zum Einfügen von benutzerdefinierten Beitragstypen ein Plugin und kein Thema ist.

0
Fränk