• Gelöst vincenz17

    (@vincenz17)


    Hallo Leute,

    ich habe WordPress 6.0.2 drauf und mit folgendem Code einen Custom Post Type erzeugt. Das klappt prima! Nun wollte ich Berechtigungen hinzufügen. Wenn ich das mache, bekomme ich beim Aufruf der Erstellmaske eine weiße Seite. Kommentiere ich die Capabilities wieder aus, ist das Anlegen möglich.

    Die Berechtigungen habe ich als Rolle mit dem Plugin Members erstellt und im Array dazu in der Datenbank stehen die Berechtigungen dazu auch bereit. Aber mit keinem User bekomme ich die Erstellmaske angezeigt (Gutenberg Editor, als Admin und User nicht). Stelle ich nun aber mal show_in_rest auf false (so dass der alte Editor wieder aktiv ist und nicht der Gutenberg-Editor) funktioniert der Aufruf wunderbar.

    Mein Code:

    /*
     *	Post-Type erstellen IBF
     */
    function customPostTypeIBF()
    {
    	$labels = array
    	(
    		'name'				=> _x('Fortbildungen', 'Post Type General Name', 'ibf'),
    		'singular_name'		=> _x('Fortbildung', 'Post Type Singular Name', 'ibf'),
    		'menu_name'			=> __('IBF', 'ibf'),
    		'name_admin_bar'	=> __('IBF-Fortbildung', 'ibf'),
    		'archives'			=> __('IBF-Archiv', 'ibf'),
    		'all_items'			=> __('Alle Fortbildungen', 'ibf'),
    		'add_new_item'		=> __('Neue Fortbildung', 'ibf'),
    		'add_new'			=> __('Neue Fortbildung', 'ibf'),
    		'new_item'			=> __('Neue Fortbildung', 'ibf'),
    		'edit_item'			=> __('Fortbildung bearbeiten', 'ibf'),
    		'update_item'		=> __('Fortbildung speichern', 'ibf'),
    		'view_item'			=> __('Fortbildung anzeigen', 'ibf'),
    		'view_items'		=> __('Fortbildungen anzeigen', 'ibf'),
    		'search_items'		=> __('Fortbildung suchen', 'ibf'),
    	);
    
    	$args = array
    	(
    		'label'				=> __('IBF', 'ibf'),
    		'description'		=> __('Fortbildungen verwalten', 'ibf'),
    		'labels'			=> $labels,
    		'supports'			=> array('title', 'editor', 'author', 'thumbnail', 'revisions', 'custom-fields'),
    		'show_in_rest'		=> true,
    		'hierarchical'		=> false,
    		'public'			=> true,
    		'show_in_menu'		=> true,
    		'menu_position'		=> 5,
    		'menu_icon'			=> 'dashicons-welcome-learn-more',
    		'has_archive'		=> true,
    		'rewrite'			=> array('slug' => 'ibf'),
    		'capability_type'	=> 'post',
    		'capabilities'		=> array
    		(
    			'edit_post'				=> 'edit_ibf',
    			'edit_posts'			=> 'edit_ibfs',
    			'edit_others_posts'		=> 'edit_others_ibf',
    			'publish_posts'			=> 'publish_ibf',
    			'read_post'				=> 'read_ibf',
    			'read_private_posts'	=> 'read_private_ibf',
    			'delete_post'			=> 'delete_ibf',
    			'create_posts'			=> 'create_ibfs', 
    		),
    	);
    
    	register_post_type('ibf', $args);
    }
    add_action('init', 'customPostTypeIBF', 0);

    Ist das ein Bug, da es nur mit dem Gutenberg-Editor nicht klappt?

    WordPress: 6.0.2 (in 6.0.1 ging es auch schon nicht)
    PHP: 8.0
    DB: MariaDB 10.5

    Vielen Dank!

Ansicht von 10 Antworten – 1 bis 10 (von insgesamt 10)
  • Hallo,
    du könntest testen, ob das Problem behoben ist, wenn du im Kundenbereich auf PHP 7.4.x umstellst. Es gibt noch einige Plugins und Themes, die mit PHP 8.x Probleme haben.

    Ansonsten ist das eher etwas für ein Forum wie z. B. https://wordpress.stackexchange.com/
    Hier befassen wir uns mehr mit Anwenderproblemen bei Nutzung von WordPress.

    Ist das ein Bug, da es nur mit dem Gutenberg-Editor nicht klappt?

    Zur Begriffsklärung (vermutlich meinst du aber den Block-Editor): Solltest du das Gutenberg-Plugin installiert haben, deaktiviere das Plugin bitte und teste dann, ob es funktioniert. Leider gibt es allgemein ein wenig Verwirrung: In der Regel wird der Block-Editor auch als Gutenberg bezeichnet. Das ist so nicht korrekt, weil es zusätzlich ein Gutenberg-Plugin gibt. Dieses Plugin bietet bestimmte Funktionen an, die man als experimentell betrachten kann. Daher sollte man das Plugin nicht auf Produktivseiten einsetzen. Der Block-Editor ist dagegen der Standard-Editor von WordPress und steht ab der Version 5.0 automatisch als Editor zur Verfügung. Das war nicht immer klar und (nicht nur) deswegen gibt es so viele negative Bewertungen für das Gutenberg-Plugin.

    Viele Grüße
    Hans-Gerd

    Thread-Starter vincenz17

    (@vincenz17)

    Hi,

    danke für die Antwort!
    Der Server ist selbst gehostet und bietet daher nur PHP 8.0. Ein Umstellen ist da nicht so ohne weiteres möglich, da die anderen Anwendungen zwingend PHP 8 brauchen.

    Die WordPress-Installation ist mit dem Standard Block-Editor ausgestattet ohne extra Plugins am Start. Also es sind wirklich 0 Plugins installiert (außer meins was ich hier gerade oben gepostet habe) und eine frische Installation… 🙁

    Moderator Bego Mario Garde

    (@pixolin)

    Moderator (nicht mehr aktiv)

    Nun wollte ich Berechtigungen hinzufügen. Wenn ich das mache, bekomme ich beim Aufruf der Erstellmaske eine weiße Seite.

    Was für eine Eingabemaske?
    Scheinbar nutzt du zum Erstellen des CPT ein Plugin? Wenn ja, welches?

    Die WordPress-Installation ist mit dem Standard Block-Editor ausgestattet ohne extra Plugins am Start.

    Dann widersprichst du dir selbst?

    Die Berechtigungen habe ich als Rolle mit dem Plugin Members erstellt

    Thread-Starter vincenz17

    (@vincenz17)

    Hi,

    ja, etwas wirr erklärt 😀

    Also ich habe mir testweise einmal das Plugin Members installiert, um zu schauen, ob die Rechte aus dem Array übernommen werden. Das hat geklappt und die Rechte habe ich dem User aus zugeordnet, das Plugin ist nun wieder runter. Wobei es auch nicht gestört hatte.

    Mit Eingabemaske meine ich die im WP-Admin, wenn man einen neuen Eintrag erstellen will. Ich habe hier mal eine Animation erstellt: https://i.ibb.co/6PNGZVd/Animation.gif

    Es wird leider nichts ins Fehlerprotokoll geschrieben auf dem Apache und auch WP_DEBUG ist auf true, damit ich etwas sehe. Die Seite bleibt aber stumpf weiß.
    Der Quellcode der Seite ist aber da und vollständig, endet mit </body> und </html>

    Er scheint etwas mit dem Block-Editor nicht auf die Reihe zu kriegen, denn ohne den ist die Seite problemlos aufrufbar und ohne die Capabilities auch.

    Die Capabilities habe ich mit folgendem Code mal erstellt:

    function add_theme_caps()
    {
    	$role = get_role('administrator');
    	$role->add_cap('edit_ibf');
    	$role->add_cap('create_ibf');
    // usw.
    }
    add_action('admin_init', 'add_theme_caps');

    Edit: In der Datenbank habe ich in der wp_options mal den wp_user_roles Key mit PHP entschlüsselt und als Array anzeigen lassen. Da stehen die Rechte auch sauber drin:

    Array
    (
        [administrator] => Array
            (
                [name] => Administrator
                [capabilities] => Array
                    (
                        [edit_ibfs] => 1
                        [edit_others_ibf] => 1
                        [publish_ibf] => 1
                        [read_private_ibf] => 1
                        [create_ibfs] => 1
                        [read_ibf] => 1
                        usw.
    • Diese Antwort wurde geändert vor 2 Jahren, 4 Monaten von vincenz17.
    • Diese Antwort wurde geändert vor 2 Jahren, 4 Monaten von vincenz17.
    Thread-Starter vincenz17

    (@vincenz17)

    Habe den Fehler gefunden. Ich habe im Array wie oben zu sehen eine Berechtigung vergessen. Ich habe nur edit_ibfs aber keine edit_ibf (also ohne S am Ende) Capability gesetzt.
    Da scheint WordPress dann keine Fehlermeldung zu bringen sondern eine leere Seite. Lösche ich eine andere Berechtigung kommt wenigstens die Meldung, dass mir Rechte fehlen. Wenn edit_ibf fehlt macht WordPress das nicht. Ist das ein Bug?

    Ich habe nun manuell in das serialisierte Array noch die edit_ibf hinzugefügt und dann klappt der Aufruf endlich.

    Vielen Dank für die Unterstützung! Durch das Posten des Codes ist mir der Fehler gerade beim lesen selbst aufgefallen. Ohne hier zu fragen wäre mir das wohl nicht so schnell aufgefallen 😀

    • Diese Antwort wurde geändert vor 2 Jahren, 4 Monaten von vincenz17.
    • Diese Antwort wurde geändert vor 2 Jahren, 4 Monaten von vincenz17.
    Moderator Bego Mario Garde

    (@pixolin)

    Moderator (nicht mehr aktiv)

    Ist das ein Bug?

    Nur in deinem Code. 🙂

    Danke für die Auflösung und viel Erfolg bei deinem Projekt.

    Thread-Starter vincenz17

    (@vincenz17)

    Nur in deinem Code. 🙂

    Nur weil eine Berechtigung fehlt?
    Wenn eine andere BErechtigung fehlt, kommt ja die Fehlermeldung, dass man keine ausreichenden Rechte hat. Nur bei dem edit_<Singular> klappt das nicht. Da bleibt die Seite weiß. Es sei denn, man nutzt nicht den Block-Editor 🙂

    Vielen Dank!

    Moderator Bego Mario Garde

    (@pixolin)

    Moderator (nicht mehr aktiv)

    Stimmt. Ich hätte in dem Fall auch eine entsprechende Fehlermeldung erwartet.
    Vielleicht magst du ein Bug-Ticket schreiben?

    Thread-Starter vincenz17

    (@vincenz17)

    Ja, das werde ich machen! Ich installiere mir jetzt noch einmal eine frische WordPress-Seite und stelle das noch einmal genau nach. Wenn ich das da wieder so nachstellen kann, eröffne ich einen Bug-Report!

    DANKE!
    Schön, dass man hier immer guten Support bekommt!

    Thread-Starter vincenz17

    (@vincenz17)

    Auch in neuer Installation nachvollziehbar. Bug-Report eröffnet: https://core.trac.wordpress.org/ticket/56480

    Danke nochmals! 🙂

Ansicht von 10 Antworten – 1 bis 10 (von insgesamt 10)
  • Das Thema „Eigener Custom Post Type erzeugt bei Berechtigung weiße Seite“ ist für neue Antworten geschlossen.