Benutzerdefinierter Beitragstyp - Auftragsfeld

13

Gibt es in einem benutzerdefinierten Beitragstyp eine Möglichkeit, das für Seiten verfügbare Feld "Reihenfolge" einzuschließen?

Gibt es eine integrierte Logik, die doppelte Werte im Feld "Reihenfolge" verhindert?

Die Idee besteht darin, einen benutzerdefinierten Beitragstyp nach einer benutzerdefinierten Reihenfolge und anschließend alphabetisch nach einem auf Zeichenfolgen basierenden benutzerdefinierten Feld sortieren zu können.

Flow erzwingen
quelle

Antworten:

24

Wenn Sie Ihren benutzerdefinierten Post-Typ mit der Funktion register_post_type deklarieren, müssen Sie dem Support-Feld 'Seitenattribute' hinzufügen, wie im folgenden Beispiel gezeigt:

register_post_type('myposttype', array(
    'supports' => array('title', 'editor', 'page-attributes'),
    'hierarchical' => false
));

Sie müssen weitere unterstützte Meta-Boxen zum Feld "Unterstützungen" hinzufügen. Weitere Informationen zu den Feldern "register_post_type " finden Sie unter http://codex.wordpress.org/Function_Reference/register_post_type .

Soweit ich weiß, gibt es keine Möglichkeit, zwei gleiche Reihenfolgen zu verhindern. Dies liegt daran, dass Sie eine Unterreihenfolge basierend auf der Hierarchie erstellen können (eine Gruppe von untergeordneten Seiten kann also eine andere Reihenfolge haben als eine andere).

Dave Hunt
quelle
using page-attributespräsentiert sowohl das orderFeld als auch das parentFeld. Wie werde ich das parentFeld los ?
Force Flow
Keine Ursache. Das Setzen hierarchicalauf false beseitigt das Problem.
Force Flow
Meine schlechte, wusste nicht, dass Sie nicht auch die Seite Eltern wollten. Ich werde meine Antwort aktualisieren, um sie auszuschließen.
Dave Hunt
Hallo. Ich habe diesen Code, sehe aber nichts: `` // Service Custom Post Type add_action ('init', 'create_post_type'); Funktion create_post_type () {$ supported_args = array ('title', 'editor', 'page-attributes'); register_post_type ('service', array ('labels' => array ('name' => __ ('services'), 'singular_name' => __ ('service'), 'supported' => $ supported_args, 'hierarchical') => false), 'public' => true, 'has_archive' => true, // 'menu_position' => 2)); } `` `
Sylar
@ Sylar Mir ist klar, dass dies sehr spät ist, aber für mich sieht es so aus, als ob Ihre 'Unterstützungen' => $ Unterstützungen_Args, 'hierarchisch' => falsch im falschen Teil des Arrays sind. Sie haben es in Ihrem Beispiel unter dem Label-Array verschachtelt. Es sollte sich im Basis-Array auf der gleichen Ebene wie 'public' befinden => true
Dave Hunt
4

Neben der Antwort von @ Dave-Hunt können Sie auch einen Filter wie den folgenden hinzufügen, um eine benutzerdefinierte Reihenfolge zu definieren - in diesem Fall alphabetisch nach Titel. (Code dank Mark Leongs Blogbeitrag. ) is_admin()Deaktivieren Sie das Kontrollkästchen, wenn Sie auch im Front-End "order_by" anpassen möchten.

Funktion set_custom_post_types_admin_order ($ wp_query) {
  if (is_admin ()) {

    // Den Beitragstyp aus der Abfrage abrufen
    $ post_type = $ wp_query-> query ['post_type'];

    if ($ post_type == 'POST_TYPE') {

      // 'orderby' kann ein beliebiger Spaltenname sein
      $ wp_query-> set ('orderby', 'title');

      // 'order' Wert kann ASC oder DESC sein
      $ wp_query-> set ('order', 'ASC');
    }
  }
}
add_action ('pre_get_posts', 'set_custom_post_types_admin_order');

Aktualisieren

Informationen zur Überprüfung vor dem Speichern finden Sie in der folgenden Antwort: /wordpress//a/40095/4645. Dort werden Ihre Optionen erläutert. Grundsätzlich kommt es auf benutzerdefinierte jQuery an, da WordPress keine Pre-Save-Hooks hat.

Auch (meinen vorherigen Kommentar hier für die Zukunft zu duplizieren), hier ist , wie das ‚Menü - Reihenfolge‘ Feld in der Admin zu belichten, so dass es vom Benutzer editierbar, wie es für die Seiten ist: Hinzufügen ‚Menü , um‘ Spalte , um benutzerdefinierte Post admin Bildschirm

Marfarma
quelle