サポート » 使い方全般 » 固定ページをテーマ有効化の時に一度だけ自動で作成したい

  • 解決済 katz01

    (@katz01)


    いつもお世話になっております。
    タイトルの通り、固定ページを自動で【一度だけ】つくる関数を作りたいと思っております。
    現在は下記のようなコードになっております。

    function create_pages() {
    if ( get_page_by_path('hoge') === null ) {
    	wp_insert_post(
    		array(
    			'post_title'   => 'ほげ',
    			'post_name'    => 'hoge',
    			'post_status'  => 'publish',
    			'post_type'    => 'page',
    			'post_content' => '',
    		)
    	);
    }
    }
    add_action('after_setup_theme', 'create_pages');

    ただ、これだと自動で作成された固定ページ【hoge】を管理画面でゴミ箱に捨てると、また自動で固定ページ【hoge】が作られてしまいます。
    テーマ有効化のときに、一度だけ固定ページを自動で作るようにするにはどういう形にすればよろしいでしょうか?

    ご存知の方がいらっしゃいましたらご教授いただけますと幸いです。
    宜しくお願いいたします。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • こんにちは、

    wp_insert_postする時に option や theme_mod 等で、page_created yes 等とセットしておいて、get_page_by_path(‘hoge’) === null && で条件を追加するといいと思います。

    • この返信は2 年、 11 ヶ月前に  nobita さんが編集しました。

    こんにちは

    after_switch_themeというアクションフックがあるようですよ。
    https://codex.wordpress.org/Plugin_API/Action_Reference/after_switch_theme

    使ったことがないので、要件に合うかどうかはわかりませんが。

    nobita様

    お返事ありがとうございます。
    ご返信が遅くなってしまい申し訳ありません。

    optionというのはadd_optionを使用するということでしょうか?
    条件追加という方向性は理解できました!
    仰って頂いた内容から色々と検索し、自分なりに模索しましたが使い方がわかりませんでした。

    大変恐縮ではございますが、一部でも構いませんのでサンプルコード等を表示頂けますと幸いです。

    munyagu様

    お返事有難うございます。
    after_switch_themeのフック使ってみましたが、希望の動作とはなりませんでした。
    貴重な情報をいただき、感謝いたします。

    自分なりに勉強し、解決できたのでコードを記載しておきます。

    function create_pages() {
    add_option( 'fuga', 'page_create');
    if ( get_page_by_path('hoge') === null && get_option('fuga') === 'page_create' ) {
    	wp_insert_post(
    		array(
    			'post_title'   => 'ほげ',
    			'post_name'    => 'hoge',
    			'post_status'  => 'publish',
    			'post_type'    => 'page',
    			'post_content' => '',
    		)
    	);
            update_option( 'fuga', 'page_created');
        }
    }
    add_action('after_setup_theme', 'create_pages');

    同じ感じで行き詰まった方の参考になりますと幸いです。
    これにてトピックスを解決といたします!
    皆様、ありがとうございました。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「固定ページをテーマ有効化の時に一度だけ自動で作成したい」には新たに返信することはできません。