2016-08-16 3 views
0

Ich versuche, einen benutzerdefinierten Post-Typ in Wordpress zu erstellen, und ich bin eigentlich fest hier, weil es nicht funktioniert und ich weiß nicht warum.Eingetragener Post-Typ funktioniert nicht

kopierte ich den Posten Typen Benutzerdefinierte Code von hier: https://codex.wordpress.org/Post_Types#Custom_Post_Type_Templates

Und dies ist der Code, den ich in meinem functions.php

add_action('init', 'create_posttype'); 
function create_posttype() { 
register_post_type('product', 
     array( 
      'labels' => array(
         'name' => __('Products'), 
         'singular_name' => __('Product') 
      ), 
      'public' => true, 
      'capability_type' => 'post', 
      'hierarchical' => false, 
      'supports' => array('title', 'editor', 'thumbnail', 'comments', 'page-attributes'), 
      'has_archive' => true, 
      'rewrite' => array('slug' => 'products'), 
      ) 
     ); 
} 

und dann verwenden ich diesen Code unten hinzugefügt einen neuen Beitrag zu erstellen :

// Create post object 
$my_post = array(
    'post_title' => wp_strip_all_tags($my_title), 
    'post_content' => $my_content, 
    'post_status' => 'inherit', 
    'post_author' => 1, 
    'post_type' => 'product', 
); 

// Insert the post into the database 
wp_insert_post($my_post); 

Dann versuchte ich es auf den Link in der uRL zugreifen können, aber ich habe eine 404-Seite nicht gefunden Fehler!

Bitte jemand wissen, was ich falsch mache?

+0

Verwenden Sie hübsche Permalinks? Gehen Sie zu Permalinks -> Update. – TheKalpit

+0

Wahrscheinlich ist es ein Cache-Problem. Versuchen Sie, den Permalink-Cache zu leeren: 'global $ wp_rewrite; $ wp_rewrite-> set_permalink_structure ('/% postname% /'); $ wp_rewrite-> flush_rules(); ' – TheKalpit

+0

Versucht, dass es nicht funktioniert hat. danke –

Antwort

1

Versuchen Sie, diese

function ProductPostType() { 
register_post_type('product', 
    array(
     'labels' => array(
     'name' => __('Product'), 
     'singular_name' => __('product') 
    ), 
     'public' => true, 
     'has_archive' => 'themes', 
     'rewrite' => array('slug' => 'product'), 
     'supports' => array('title', 'editor', 'thumbnail', 'excerpt'), 
     'description' => 'Custom Theme Posts', 
     'show_ui' => true, 
     'show_in_menu' => true, 
    ) 
); 
} 
add_action('init', 'ProductPostType'); 

einfach diesen Code in function.php Paste

+0

Hallo, mein Problem ist, dass, wenn ich einen neuen Beitrag manuell erstelle, es nicht über die URL zugänglich ist, sondern nur, wenn ich Produktpost von admin hinzufügen. Das funktioniert –

+0

Okey. Gehe zu dieser URL (yourdomain.com/wp-admin/options-permalink.php) und klicke in den "common settings" auf "Post name" und klicke auf save changes. Wenn "Post name" bereits ausgewählt ist, dann nur für die Aktualisierung der Permalinks, klicken Sie auf "plain" und wählen Sie erneut "Post name" und speichern Sie die Einstellungen. Ihre benutzerdefinierten Post-Typ-Links werden funktionieren. – Dinesh

1

Hier ist ein super einfacher Trick, die für Sie oder auch nicht funktionieren.

  1. Im WP-Backend, suchen Settings und klicken Sie auf das Permalinks Menü.

  2. Wählen Sie auf der Permalinks Einstellungen Seite einfach Plain ... und speichern Sie die Änderungen.

  3. Gehen Sie zum Front-End und laden Sie Ihr Plugin neu, um zu sehen, ob Ihr Plugin jetzt funktioniert, aber ohne SEO-freundliche URL.

  4. Ob es funktioniert oder nicht; gehen Sie einfach zurück zu den Permalinks Einstellungen & wechseln Sie zurück zu Day and name. Speichern und probieren Sie es wieder aus ....

+0

Danke. Es hat aber nicht funktioniert, ich denke, das eigentliche Problem ist, dass wp_insert_post nicht gut mit benutzerdefinierten Post-Typen funktioniert. Ich mache es wahrscheinlich anders. –

Verwandte Themen