私はそれが設定>読書>フロントページからフロント静的ページを選択するのは簡単だと知っています。しかし、私はこのオプションをテーマオプションに含める方法を探しています。これができますか?
Wp 3.4以降、テーマカスタマイザを使用してこれを実行できます。私の知る限りでは、「静的フロントページ」はテーマカスタマイザのデフォルトオプションの1つです。
一般的な紹介はcodexの 外観カスタマイズ画面 についてのページをチェックしてください。そして、おそらく カスタマイザのチュートリアルとドキュメント が次のステップに役立つでしょう。
WordPressはoptions APIを使ってこれらの設定を保存します。あなたがする必要があるのは、設定名とその値を見つけることだけです。あなたの場合、それは以下の通りです:
//Option name - Value
//This corresponds to 'Front page displays'
show_on_front - posts/page
//This corresponds to the Static page: Front page name
page_on_front - <page id>
//This corresponds to the Posts page: Posts page name
page_for_posts - <page id>
あなたがしなければならないのは、オプションを正しく表示するフォームを作ることだけです。 WordPress設定ページでフォームを調べてコピーすることができます。名前は私が上で与えたものと一致しなければなりません(あなたがWordPressのフォームをコピーするならばそれはそうするでしょう)。フォームを送信したら、次のように設定を更新してください。
//If you want the page titled 'Home', with the ID 34 to be the homepage.
update_option('show_on_front', 'page');
update_option('page_on_front', 34);
それでおしまい。お役に立てれば。
更新
私はこれを考え出しました。私はwp-admin/options-reading.php
から助けを得ました。これがサンプルコードです。それは私のテーマオプションのフロントページとして設定するページを選択するオプションを追加するだけです。
add_menu_page('Menu Name', 'Menu Name', 'manage_options', 'menu-slug', 'menu_manage_options');
function menu_manage_options(){
?>
<div class="wrap">
<h1><?php echo esc_html( $title ); ?></h1>
<form method="post" action="options.php">
<?php
settings_fields( 'reading' );
if ( ! in_array( get_option( 'blog_charset' ), array( 'utf8', 'utf-8', 'UTF8', 'UTF-8' ) ) )
add_settings_field( 'blog_charset', __( 'Encoding for pages and feeds' ), 'options_reading_blog_charset', 'reading', 'default', array( 'label_for' => 'blog_charset' ) );
?>
<?php if ( ! get_pages() ) : ?>
<input name="show_on_front" type="hidden" value="posts" />
<table class="form-table">
<?php
if ( 'posts' != get_option( 'show_on_front' ) ) :
update_option( 'show_on_front', 'posts' );
endif;
else :
if ( 'page' == get_option( 'show_on_front' ) && ! get_option( 'page_on_front' ) && ! get_option( 'page_for_posts' ) )
update_option( 'show_on_front', 'posts' );
?>
<table class="form-table">
<tr>
<th scope="row"><?php _e( 'Front page displays' ); ?></th>
<td id="front-static-pages"><fieldset><legend class="screen-reader-text"><span><?php _e( 'Front page displays' ); ?></span></legend>
<p><label>
<input name="show_on_front" type="radio" value="page" class="tog" <?php checked( 'page', get_option( 'show_on_front' ) ); ?> />
<?php printf( __( 'A <a href="%s">static page</a> (select below)' ), 'edit.php?post_type=page' ); ?>
</label>
</p>
<ul>
<li><label for="page_on_front"><?php printf( __( 'Front page: %s' ), wp_dropdown_pages( array( 'name' => 'page_on_front', 'echo' => 0, 'show_option_none' => __( '— Select —' ), 'option_none_value' => '0', 'selected' => get_option( 'page_on_front' ) ) ) ); ?></label></li>
</ul>
<?php if ( 'page' == get_option( 'show_on_front' ) && get_option( 'page_for_posts' ) == get_option( 'page_on_front' ) ) : ?>
<div id="front-page-warning" class="error inline"><p><?php _e( '<strong>Warning:</strong> these pages should not be the same!' ); ?></p></div>
<?php endif; ?>
</fieldset></td>
</tr>
<?php endif; ?>
<?php do_settings_fields( 'reading', 'default' ); ?>
</table>
<?php do_settings_sections( 'reading' ); ?>
<?php submit_button(); ?>
</form>
</div>
<?php
}