Kann ich verhindern, dass der Benutzer mehr als zwei tiefere Ebenen innerhalb einer Taxonomie-Metabox hinzufügt?

Ich bin gerade dabei, in WordPress eine strukturierte Tutorial-Struktur zu erstellen und möchte sie so aufbauen, dass sie das Front-End ohne den vom Benutzer benötigten Code einrichtet.

Bisher habe ich einen benutzerdefinierten Post-Typ namens “tut_page”, der eine Metabox für benutzerdefinierte Taxonomie hat, genannt “tut_group”, und Begriffe können über die Taxonomie-Metabox hinzugefügt werden. Für meine register_taxonomie wurde der Wert für ‘hierarchisch’ auf ‘wahr’ gesetzt. Also ich möchte Levels, aber ich will nicht mehr als zwei tiefe. Ich weiß, dass ich wählen kann, wie viele Ebenen von Begriffen in einer Vorlage angezeigt werden sollen, aber gibt es eine Möglichkeit, Benutzer daran zu hindern, Begriffe zu erstellen, die tiefer als zwei Ebenen von der Taxonomie-Metabox sind?

Hier ist, was ich in functions.php für die Registrierung der Taxonomie habe:

function create_tutorial_topic() { register_taxonomy( 'tut_group', //name of taxonomy 'tut_post', //object type eg our post type array( 'labels' => array( 'name' => _x( 'Tutorial Group', 'taxonomy general name' ), 'singular_name' => _x( 'Tutorial Groups', 'taxonomy singular name' ), 'search_items' => __( 'Search Tutorial Groups' ), 'all_items' => __( 'All Tutorial Groups' ), 'parent_item' => __( 'Parent Tutorial Groups' ), 'parent_item_colon' => __( 'Parent Tutorial Groups:' ), 'edit_item' => __( 'Edit Tutorial Group' ), 'update_item' => __( 'Update Tutorial Group' ), 'add_new_item' => __( 'Add Tutorial Group' ), 'new_item_name' => __( 'New Tutorial Group' ), 'menu_name' => __( 'Tutorial Group' ), ), 'rewrite' => array( 'slug' => 'tutorial-group' ), 'hierarchical' => true, //this is true but I only want two levels deep ) ); } 

Ich würde auch gerne so viel wie ich selbst bauen, ohne ein Plugin verwenden zu müssen. Ich habe versucht, auf dieser Site zu suchen und habe Fragen zur Begrenzung der Anzahl von Begriffen, aber nicht zu Hierarchieebenen, gefunden. Danke für etwaige Tipps im Voraus!

Solutions Collecting From Web of "Kann ich verhindern, dass der Benutzer mehr als zwei tiefere Ebenen innerhalb einer Taxonomie-Metabox hinzufügt?"

Leider ist das nicht möglich, zumindest nicht sicher.

Die function wp_insert_term( $term, $taxonomy, $args = array() ) , die die Erstellung von Taxonomien behandelt, bietet einige Filter und Hooks, aber die einzige vor der Erstellung des Terms in der database ist

 $term = apply_filters( 'pre_insert_term', $term, $taxonomy ); 

Wie Sie sehen können, werden die $args die bei der Erstellung des Terms angegeben wurden, nicht an den Filter übergeben. Sie haben also keine Möglichkeit zu überprüfen, wie viele Ebenen der Taxonomie existieren, indem Sie $args['parent'] .

Eine hässliche Art, dies zu tun, wäre, nachdem der Begriff erstellt wurde, indem er sich in die Aktion created_term oder created_term und sie dort überprüft. Ich habe das nie selbst gemacht, und Sie können eine große Dose Würmer öffnen, die den Begriff nach der Erstellung löschen, ohne die Möglichkeit, danach einen Fehler zu melden.

Wenn der Filter pre_insert_term die $args als Argument akzeptieren würde, wäre das kein Problem.