私は自分のプラグインがアクティブになるたびにそれがページを作成することになっているようにしました。それが前から存在していない場合、私はそれが唯一のページを作成したいのですが。しかし、やっていることは、まったくやっていないのではなく、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条件でこれを解決できると思いましたが、スラッグ名の後に数字を追加するだけの組み込みコードがあるようです。
これを解決する方法はありますか、それとも誰かがより良いアプローチを知っていますか?
特定のページをチェックしたいので、たとえば次のいずれかの機能を使用できます。
get_post
:投稿IDを受け取り、その投稿のデータベースレコードを返します。これはページでもかまいません。get_page_by_title
:役職を指定して投稿を取得します。複数の投稿が同じタイトルを使用している場合、IDが最小の投稿が返されます。あるいは、スラッグでページを取得するための独自の小さな関数を書くこともできます。
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')) {
...
}