it-swarm.com.de

Erstelle eine Seite via Plugin

Mein Problem ist es, eine Liste von Produkten anzuzeigen, die aus DB-Tabellen gelesen wurden. Ich weiß, wie man sie liest, und ich kann die Tabelle erstellen, aber nur mit einem Shortcode, der in eine Seite eingebettet ist, die ich über WP erstellt habe.

Ich möchte, dass das Plugin selbst eine Seite mit meiner Tabelle erstellt und diese Seite den WP Benutzern über einen Menüpunkt (nicht das Admin-Menü) zur Verfügung stellt.

Was ist der richtige Weg?

2
picus

Sie können die Seite über wp_insert_post( $post, $wp_error ); erstellen. Der array $post enthält die Daten für Ihre Seite mit der vollständigen Dokumentation hier .

Stellen Sie sicher, dass Sie die ID von Ihrer eingefügten Seite/Ihrem eingefügten Beitrag erhalten. Sie können die Seite bei der Aktivierung Ihres Plugins hinzufügen. Prüfen Sie jedoch zuerst, ob die Option für die Seite bereits festgelegt ist (möglicherweise von einer früheren Installation), da Sie in diesem Fall die Erstellung der Seite überspringen können:

function your_plugin_activate() {

    if ( !get_option( 'your_plugin_page_id' ) ) { // check if the option is already set

        $post = array(); //insert your postdata into this array
        $mypageid = wp_insert_post( $post ); // create the page/post
        update_option( 'your_plugin_page_id', $mypageid ); // set the option in the database for future reference
    }

}
register_activation_hook( __FILE__, 'your_plugin_activate' );

Dies geht in Ihre Plugin-Datei.

Sie können diese ID in Ihren Plugin-Optionen speichern und sie verwenden, um den Inhalt automatisch zu filtern und Ihre Tabelle einzufügen. Natürlich können Sie auch einfach den von Ihnen verwendeten Shortcode direkt in den post_content einfügen, aber mit

add_filter( 'the_content', 'your_table_function_name' );

function your_table_function_name( $content ) {

    if ( $GLOBALS['post']->ID == get_option( 'your_plugin_page_id' ) ) { // check if you are on the right page
        $content = $your_table_code . $content; // Set the Table in front of the User Content
    }
    return $content; // return the content, any other page returns the original content.

}

sie haben den Vorteil, unabhängig von der Benutzereingabe zu sein, da ein fehlerhafter Shortcode die Anzeige der Tabelle verhindern kann.

Bitte denken Sie daran, dass es für den Benutzer sehr gut wäre, wenn Sie ihm die Wahl ließen, eine vorhandene Seite auszuwählen, die gefiltert werden soll, oder automatisch eine neue Seite zu erstellen und eine Option zum Ändern dieser Seite bereitzustellen. Wenn Sie die ID Ihrer neuen Seite gespeichert haben, sollte dies nicht zu aufwendig sein :)

1
fischi