Создать страницу при активации плагина

Я сделал так, что каждый раз, когда мой плагин активируется, он должен создать страницу. Хотя я хочу, чтобы он создавал только страницу, если она не существует раньше. Но то, что он делает, это то, что он создает другую страницу с kns-products-1 вместо того, чтобы вообще не делать этого.

Мой код:

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

Я думал, что это условие is_page разрешит это, но, похоже, встроенный код просто добавляет числа после имени slug.

Есть ли способ решить эту проблему или кто-нибудь знает о каком-либо лучшем подходе?

Solutions Collecting From Web of "Создать страницу при активации плагина"

Поскольку вы хотите проверить определенную страницу, вы можете использовать одну из следующих функций, например:

  • get_post : получает идентификатор сообщения и возвращает запись базы данных для этой записи, которая также может быть страницей.
  • get_page_by_title : получает сообщение с его заголовком. Если больше одного сообщения использует тот же заголовок, сообщение с наименьшим идентификатором будет возвращено.

Или вы можете написать свою собственную небольшую функцию, чтобы получить страницу по ее пули:

 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 

Вы бы использовали его так:

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