it-swarm.com.de

Seite erstellen, wenn das Plugin aktiviert ist

Ich habe so gemacht, dass jedes Mal, wenn mein Plugin aktiviert wird, eine Seite erstellt werden soll. Obwohl ich möchte, dass die Seite nur erstellt wird, wenn sie noch nicht existiert. Aber was es tut, ist, dass es eine andere Seite mit kns-products-1 erstellt, anstatt es überhaupt nicht zu tun.

Mein Code bisher:

function kns_install() {
    global $wp_version;

    if( version_compare( $wp_version, '3.5', '<' ) ) {
        wp_die( 'Detta tilläget kräver att du har WordPress version 3.5 eller högre.' );
    } else {
        if(!is_page('kns-products')) {
            $product_page = array(
            'post_type' => 'page',
            'post_name' => 'kns-products',
            'post_title' => 'Produkter',
            'post_status' => 'publish',
            );

            wp_insert_post($product_page);
        }
    }   
}

Ich dachte, dass die! Is_page-Bedingung dies lösen würde, aber es scheint einen eingebauten Code zu geben, um nur Zahlen nach dem Slug-Namen hinzuzufügen.

Gibt es eine Möglichkeit, dies zu lösen, oder kennt jemand einen besseren Ansatz?

4
Jake Snake

Da Sie nach einer bestimmten Seite suchen möchten, können Sie beispielsweise eine der folgenden Funktionen verwenden:

  • get_post : Nimmt eine Beitrags-ID und gibt den Datenbankeintrag für diesen Beitrag zurück, der auch eine Seite sein kann.
  • get_page_by_title : Ruft einen Beitrag mit dem angegebenen Titel ab. Wenn mehr als ein Beitrag denselben Titel verwendet, wird der Beitrag mit der kleinsten ID zurückgegeben.

Oder Sie können Ihre eigene kleine Funktion schreiben, um die Seite an der Schnecke zu erkennen:

function get_page_by_slug($slug) {
    if ($pages = get_pages())
        foreach ($pages as $page)
            if ($slug === $page->post_name) return $page;
    return false;
} // function get_page_by_slug

Du würdest es dann so benutzen:

if (! get_page_by_slug('kns-products')) {
    ...
}
1
tfrommen