web-dev-qa-db-ja.com

テーマカスタマイザ固有のテーマオプションの作成

ネイティブ テーマカスタマイズAPI では、独立したオプションパネルを持つのは意味がありません。それでは、どのようにして私のコード(下記)をテーマカスタマイザに実装するのですか?

これが私のTheme Customizerのためのコードです: ここにコード

私のオプションパネルで、私はユーザーがアーカイブまたはページネーションの次/前のリンクを選択できるようにしています。

array( "name" => "Paginate or next/previous links?",
"desc" => "Choose your option",
"id" => $shortname."_next_prev_or_paginate",
"type" => "select",
"options" => array("Next/Previous Links", "Pagination"),
"std" => "Next/Previous Links"),

これが機能するための関数は次のとおりです。

// Pagination
function my_theme_navigation() {
    global $shortname;

    if( get_option( $shortname . '_next_prev_or_paginate' ) == 'Next/Previous Links' ) :
    // the block for next-prev navigation
    echo '<div class="button left">';
    next_posts_link('Older');
    echo '</div>';
    echo '<div class="button right">';
    previous_posts_link ('Newer');
    echo '</div>'; else :
    // the block for pagination
    global $wp_query;
    $big = 999999999;
    // need an unlikely integer
    echo paginate_links(            array(                'base' => str_replace( $big, '%#%', get_pagenum_link( $big ) ),                'format' => '?paged=%#%','end_size'     => 1,'mid_size'     => 2,                'current' => max( 1, get_query_var('paged') ),                 'total' => $wp_query->max_num_pages            )        );
    endif;
}

私はそれから単にこれを使ってそれを呼ぶ:

<?php my_theme_navigation(); ?>
3
AndrettiMilas

ステップ1:カスタマイザに設定を登録する

これをwptuts_theme_customizer()関数に追加します。これにより、新しい「ページ区切り」セクションと「ページ区切りスタイル」設定が登録されます。

/* Section: Pagination */
$wp_customize->add_section( 'themeslug_pagination', array(
    'title' => __( 'Pagination', 'themeslug' ),
) );
$wp_customize->add_setting( 'pagination_style', array(
    'default' => 'next-previous-links',
) );
$wp_customize->add_control( 'pagination_style', array(
    'label'   => __( 'Pagination Style', 'themeslug' ),
    'section' => 'themeslug_pagination',
    'type'    => 'radio',
    'choices' => array(
        'next-previous-links' => __( 'Next/Previous Links', 'themeslug' ),
        'numbered'            => __( 'Numbered', 'themeslug' ),
    ),
) );

ステップ2:カスタマイザ設定で動作するようにページ付け機能を変更する

my_theme_navigation()関数をこのように修正してください。

前:
if( get_option( $shortname . '_next_prev_or_paginate' ) == 'Next/Previous Links' ) :

の後:
if ( 'next-previous-links' == get_theme_mod( 'pagination_style' ) ) :

テーマのmodは現在アクティブなテーマに固有のものであるため、{$themename}_を前に付ける必要はありません。これは冗長になります。

これに私の修正を加えたあなたのオリジナルのコードがあります。

3
Philip Newcomer