如何使用ADD_CONTROL提供定制器中所有页面的列表?

时间:2019-07-01 作者:Matthew Brown aka Lord Matt

我想做的是在头版提供三页来突出显示。为此,我想为用户提供一个所有页面的下拉列表。

我还没有想出如何做到这一点。

我知道如何获取页面get_theme_mod( \'mytheme_user_page_1\', \'\' ) 大概是对的。

如何设置控件?

$wp_customize->add_setting( \'mytheme_user_page_1\', array(
    \'default\' => \'\'
) );

$wp_customize->add_control( array(
    \'type\' => \'range\',
    \'section\' => \'my_custom_section\', 
    \'label\' => __( \'Pick a page, bub\' ),
    // something magical here 
) );
更新我可能没有说得很清楚(我的错),我还需要知道如何填充下拉控件。(或者不是,见下文——我之前可能错过了一两个技巧)。

多亏了评论中的一个链接,然后又有一个链接告诉我睁开眼睛(可能比我应得的礼貌得多),我确实看到了被指的内容。手册仅说明了以下内容:

  • dropdown-pages (使用allow\\u addition参数允许用户从控件添加新页面)
这是整个页面上提到的两个术语。也许我很累(这很可能),但我很难理解这是怎么回事,为什么会这样。

我之所以找到它,是因为我在页面上做了一个文本搜索“drop”,得到了1/1的结果。给出注释是否意味着这会填充页面列表?如果是这样,那么allow_addition 论点(我该如何使用它?)

我开始怀疑我可以把一堆东西扔进我的控制之中,并希望一切都好起来。类似这样:

\'type\'=>\'dropdown-pages\',
\'argument\'=>\'allow_addition\', //maybe
\'allow_addition\'=>TRUE, //possibly

\'type\'=>array(\'dropdown-pages\',\'allow_addition\'), // ?? I\'m just guessing
我想知道我为什么这么做,以及这里发生了什么,因为我觉得有义务支持我发布的任何主题。回答一个问题,“TBH,我不知道我在做什么”在任何可能的未来都不是我想要的。

如果我今天有点慢,我道歉。

如果有人能抽出几分钟来帮助我理解,我将不胜感激。如果你能解释一下allow_addition 当你还在争论的时候,我将永远欠你的债。

1 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

要添加用于从下拉列表中选择页面的Customiser控件,只需设置type 参数到dropdown-pages:

$wp_customize->add_control( array(
    \'type\'    => \'dropdown-pages\',
    \'section\' => \'my_custom_section\', 
    \'label\'   => __( \'Pick a page, bub\' ),
) );
这会给你一个控制<select> 包含自动填充的页面列表的下拉列表。保存后,它将保存页面的帖子ID,或0 如果选择“无”。

这个\'allow_addition\' 参数是可以传递给的附加参数$wp_customize->add_control() 使用时dropdown-pages 这将允许用户从Customiser创建页面,就像Customiser主页设置部分中的设置一样。您可以这样使用此参数:

$wp_customize->add_control( array(
    \'type\'           => \'dropdown-pages\',
    \'allow_addition\' => true,
    \'section\'        => \'my_custom_section\', 
    \'label\'          => __( \'Pick a page, bub\' ),
) );

相关推荐