it-swarm.com.de

Deregistrieren Sie eigenen Beitragstypen

Kennt jemand eine Möglichkeit, benutzerdefinierte Beitragstypen abzumelden?

Gibt es eine Entsprechung zu register_post_type()?

44
anu

Derzeit gibt es keine Funktion zum Aufheben der Registrierung eines Beitragstyps, der Vorgang ist jedoch recht einfach.

Andrew Nacin hat Code auf trac bereitgestellt, hier gefunden und unten gepostet.

if ( ! function_exists( 'unregister_post_type' ) ) :
function unregister_post_type( $post_type ) {
    global $wp_post_types;
    if ( isset( $wp_post_types[ $post_type ] ) ) {
        unset( $wp_post_types[ $post_type ] );
        return true;
    }
    return false;
}
endif;

Das Aufheben der Registrierung eines eingebauten Beitragstyps hat unbekannte Auswirkungen auf WordPress. Bitte tun Sie dies auf Ihr eigenes Risiko. Das Aufheben der Registrierung eines benutzerdefinierten Post-Typs sollte absolut sicher sein, würde aber natürlich keine Bereinigung Ihrer Installation bewirken (dh das Aufheben der Registrierung eines Post-Typs entspricht nicht dem Entfernen von Daten aus der Datenbank).

Ich kann mir einige Szenarien vorstellen, in denen dies erforderlich sein könnte, aber der sinnvollere Ansatz (wenn möglich) wäre, den Post-Typ einfach erst gar nicht zu registrieren, wenn er nicht gewünscht wird.

37
t31os

Ab WordPress 4.5 gibt es dafür die Funktion unregister_post_type . Beispiel:-

function delete_post_type(){
    unregister_post_type( 'blocks' );
}
add_action('init','delete_post_type');
36

Das hat bei mir funktioniert, wie Rarst sagte, wenn möglich mit remove_action () .

add_action( 'after_setup_theme','remove_foundation_options', 100 );

function remove_foundation_options() {   
    remove_action( 'init', 'Orbit');    
}
6
Vayu

Wie bereits erwähnt, ist es einfach, den Post-Typ aus der globalen Variablen zu entfernen.

Aber wenn Sie einen Nicht-Core-Post-Typ meinen, ist es besser, nach Code zu suchen, der ihn registriert und mit remove_action() abhängt (wenn es sich um anständigen Code handelt, sollte er nicht direkt ausgeführt, sondern als Hook ausgeführt werden).

4
Rarst

Ab WordPress-Version 4.5 bieten sie eine Funktion zum Entfernen des Post-Typs (unregister_post_type). Beispiel

function delete_post_type(){
unregister_post_type( 'jobs' );
}
add_action('init','delete_post_type');

Es wird definitiv funktionieren.

2
Nipun Tyagi