Wie kann man nur einen benutzerdefinierten Post-Typ Post haben?

Ist es möglich, einen CPT auf nur einen zu beschränken? Was ich erreichen möchte, ist ein CPT namens “Home”. Es verwaltet alle Elemente auf der Homepage. Ich möchte es so programmieren, dass der Benutzer, wenn er auf den Link “Homepage verwalten” klickt, direkt zum Bildschirm “Bearbeiten” geht. Sie werden den Bildschirm “Alle Post” überspringen. Glaubt jemand, dass das überhaupt möglich ist?

Oder hat vielleicht jemand eine Idee, um dieses Ziel ganz anders zu erreichen?

Solutions Collecting From Web of "Wie kann man nur einen benutzerdefinierten Post-Typ Post haben?"

Ich würde vorschlagen, zu diesem Zweck eine Seite mit den Themenoptionen zu erstellen.

https://wordpress.stackexchange.com/questions/tagged/theme-options

add_options_page () im Codex.

Oder gibt es etwas Besonderes auf dem Bildschirm zum Bearbeiten von Posts, das Sie nur schwer auf die Seite mit den Themenoptionen verschieben können?

Sie möchten dies, weil Ihr Client verwirrt ist und das Festlegen einer Seite auf der Startseite nicht möglich ist.

Aber deine Lösung ist eine Dose Würmer, die darauf warten, in deinem Gesicht zu explodieren, also habe ich stattdessen eine viel bessere Lösung!

Verwenden Sie die Vorlage “home.php”

In WordPress wird standardmäßig home.php als Startseite verwendet. Wenn es nicht gefunden wird, wird front-page.php verwendet, und wenn das nicht gefunden wird, verwendet es index.php

Erstellen Sie also home.php, fügen Sie Ihren Code für die Startseite ein und fügen Sie dann eine Einstellungsseite mit WYSIWYG-Editoren und Bild-Uploadern für die verschiedenen Inhalte hinzu. Sie können sogar direkt über das Frontend mit der Einstellungsseite verlinken, wenn Sie sich bei der Site angemeldet haben.

Wenn Ihr Client immer noch verwirrt ist, verwenden Sie Bildschirmschritte, um ihnen zu zeigen, wie. Wahrscheinlichkeiten sind Ihr Kunde ist nur verwirrt, weil sie keine Zeit investiert haben, um statementen zu lesen oder es herauszufinden.

Der zusätzliche Vorteil davon ist, dass es keine verwirrenden Schritte wie das Klicken auf die Einträge und das Finden eines einzigen verfügbaren Posts und eine Schaltfläche zum Hinzufügen einer neuen Homepage, die nur Warnmeldungen und Nachrichten mit verweigerter Berechtigung erzeugt, hinterlässt.

Vielleicht könnte dieses Plugin Ihnen helfen:

Website des Autors

WordPress-Plugin

Steve, mein Verständnis ist, dass du willst:

  1. ein benutzerdefinierter Post-Typ ohne das Untermenü Alle Posts
  2. Sie möchten nur den Link ‘Home-Seite bearbeiten’ im Posts-Untermenü anzeigen?
  3. Und Sie möchten nicht, dass Ihre Benutzer mehr als einen Beitrag für diesen bestimmten Beitragstyp hinzufügen.

Der folgende Code wird den WordPress-Admin dazu bringen, das oben genannte zu tun:

Hinweis: Benutzer können den Post trotzdem mithilfe von wp_insert_post zum benutzerdefinierten wp_insert_post

 < ?php /** * Plugin Name: Home Page CPT **/ class WPSE_26330_Homepage_CPT { function __construct() { // add the default homepage on plugin activation register_activation_hook( __FILE__, array( &$this, 'add_home_page_post' ) ); // register the homepage post type add_action( 'init', array( &$this, 'register_homepage_cpt' ) ); // add the menu link add_action( 'admin_menu', array( &$this, 'edit_homepage_link' ) ); } function edit_homepage_link() { global $submenu, $pagenow; // query the homepage posts $homepage = new WP_Query( 'post_type=homepage' ); // if its new post page and we have homepage if ( $pagenow == 'post-new.php' && $homepage->have_posts() ) { wp_die('You cant add more then one homepage'); } // if we have homepage post, show the edit link else the add homepage link if ( $homepage->have_posts() ) { $homepage->the_post(); $link = get_edit_post_link( get_the_ID(), 'return' ); $title = 'Edit Home Page'; } else { // in case if the user has deleted the default post $link = get_bloginfo( 'url' ). '/wp-admin/post-new.php?post_type=homepage'; $title = 'Add Home Page'; } $submenu['edit.php'] = array( array( $title, 'manage_options', $link ) ) + $submenu['edit.php']; } function register_homepage_cpt() { $args = array( 'label' => 'homepage', 'description' => 'Home Page post type', 'public' => true, 'show_in_menu' => false ); register_post_type( 'homepage', $args ); } function add_home_page_post() { // on activation first regsiter the post type $this->register_homepage_cpt(); // add the first and only post $post_data = array( 'post_title' => 'Home Page', 'post_type' => 'homepage', 'post_statue' => 'publish', 'post_author' => 1 ); wp_insert_post( $post_data ); } } $GLOBALS['wpse_homepage_cpt'] = new WPSE_26330_Homepage_CPT; ?> 

Ich habe tatsächlich etwas sehr ähnliches gemacht. Ich habe ein paar verschiedene Dinge in Verbindung gebracht, und alles hat sehr gut für meinen (leicht verwirrten) Kunden funktioniert.

Im Grunde begann ich mit einer Seite namens “home”. Dann habe ich mit den erweiterten benutzerdefinierten Feldern die verschiedenen Felder erstellt, die der Klient steuern soll – zwei WYSIWYG-Felder, mehrere Bildfelder, einige Linkfelder, Sie erhalten die Idee. Dann habe ich beim Einrichten der Regeln für diesen ACF-Typ den Hauptbereich “Inhalt” auf der Bearbeitungsseite ausgeblendet. Ich habe dafür gesorgt, klare und prägnante Regeln für jeden Inhaltsbereich hinzuzufügen, um Verwirrung zu vermeiden, damit sie genau wissen, was sie in jedem Bereich tun können und was nicht.

Wenn der Kunde also im WordPress-Menü auf “Seite bearbeiten” klickt, wird die Seite “Beitrag bearbeiten” für “Startseite” angezeigt, und alle Bereiche, die sie steuern, werden ordentlich angezeigt.

Dann habe ich die home.php-Vorlage eingerichtet, um die Feldausgabe an den richtigen Stellen aufzurufen. Es gibt einige nette Tutorials und Code-Snippes auf der ACF-Hauptseite.

Es machte einen sehr glücklichen Kunden, und nahm viele frustrierende Wartung von meinem Teller.