Cria uma página quando o plugin é ativado

4

Eu fiz para que toda vez que meu plugin fosse ativado, ele deveria criar uma página. Embora eu queira apenas criar a página, se não existir a partir de antes. Mas o que está fazendo é que está criando outra página com kns-products-1 em vez de não fazer nada.

Meu código até agora:

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);
        }
    }   
}

Eu pensei que a condição! is_page resolveria isso, mas parece haver um código embutido para adicionar números após o nome do slug.

Existe alguma maneira de resolver isso ou alguém sabe de alguma abordagem melhor?

    
por Jake Snake 16.09.2013 / 19:36

1 resposta

1

Como você deseja verificar uma determinada página, você pode usar uma das seguintes funções, por exemplo:

  • get_post : obtém um ID de postagem e retorna o registro do banco de dados para esse post, que também pode ser uma página.
  • get_page_by_title : recupera uma postagem com o título. Se mais de uma postagem usar o mesmo título, a postagem com o menor ID será retornada.

Ou você pode escrever sua própria pequena função para obter a página por sua slug:

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

Você poderia usá-lo assim:

if (! get_page_by_slug('kns-products')) {
    ...
}
    
por tfrommen 16.09.2013 / 20:01