私はWPMUインスタンスを持っていますが、これはブログのネットワークのようには動作が少なく、全体的なアプリケーションのように動作します。私はチェックをして、スラッグが 'home'、 'login'、 'password'の3ページが存在するかどうかを確認する必要があります。そうでなければ、私はそれらを自動的に生成するシステムが必要です。もしそうなら、私は無視するシステムが必要です。
今、私は以下のコードを持っています、そして、何らかの理由でそれはページがロードされるたびに5つの投稿を生成しています。これを達成するための方法についてアドバイスがありますか。
function check_pages_live(){
if(get_page_by_title( 'home', page ) != NULL) {
create_pages_fly('home');
}
if(get_page_by_title( 'login', page ) != NULL) {
create_pages_fly('login');
}
if(get_page_by_title( 'password', page ) != NULL) {
create_pages_fly('password');
}
}
add_action('init','check_pages_live');
function create_pages_fly($pageName) {
$createPage = array(
'post_title' => $pageName,
'post_content' => 'Starter content',
'post_status' => 'publish',
'post_author' => 1,
'post_type' => 'page',
'post_name' => $pageName
);
// Insert the post into the database
wp_insert_post( $createPage );
}
私はあなたが欲しいと思います:
if( get_page_by_title( 'home' ) == NULL )
create_pages_fly( 'home' );
元のif
条件は、ページが存在する場合(NULLと等しくない場合)に、ページを作成します。また、2番目の引数は文字列でなければなりませんが、デフォルトでは'page'
がデフォルトになるので、実際には関係ありません。
非常に便利な機能です。私はこれを私の仕事のいくつかに適応させます。もう少し合理化するために行ったマイナーな機能強化の1つは、get_by_title()アクションを関数に入れることです。したがって、各ページでそれを呼び出すことができます。
例:
function create_page_if_null($target) {
if( get_page_by_title($target) == NULL ) {
create_pages_fly($target);
}
}
function check_pages_live(){
create_page_if_null('about');
create_page_if_null('contact-us');
create_page_if_null('home');
create_page_if_null('news');
create_page_if_null('privacy');
}