在我的WordPress博客上,我试图给侧边栏小部件提供特定的ID。我想给它们一个简单的递增ID,例如id="sidebar-box-" . $i
,其中i是递增变量。
我有来自this page的代码,它可以给它一个特定的id,但我希望更多地控制id用于样式目的并保持我的css遵循相同的模式。我目前的代码如下:
function custom_sidebar() {
register_sidebar( array(
'name' => 'Blog Sidebar',
'id' => 'blog_sidebar',
'before_widget' => '<div id="sb-box-%d" class="sidebar-box">',
'after_widget' => '</div>',
'before_title' => '<h3>',
'after_title' => '</h3>',
) );
}
但是这段代码给了我一个这样的id:decent_comments_widget-2
。我的理解是%1表示使用printf函数的第一个参数,就像基于what I've read的字符串一样。我无法理解$ s部分是什么,我甚至不知道它从哪里得到第一个参数,因为寄存器侧边栏功能只是作为第一个参数传递一个数组。在最后使用递增变量创建一个简单id的正确方法是什么?任何以这种格式理解变量的帮助也是受欢迎的。谢谢!
编辑:我将ID值从“sb-box-%1 $ s”更改为“sb-box-%d”,但现在我只打印了“sb-box-0”对于侧边栏中的每个“侧边栏”类div,一遍又一遍。我找不到设置变量的正确位置。
答案 0 :(得分:0)
通常情况下,您使用%s
(或其他内容)表示您希望在使用sprintf()
时将字符串放在那里。
但是当你有多个(不同的)转换规范(%_
)时,你需要以与格式字符串相同的顺序传递给sprintf()
的参数,或者你可以指定他们需要的顺序。否则字符串可能看起来不像你预期的那样。
使用n$
(如@AlexBlex所述),n
是第n个参数,可以很容易地完成。
示例:强>
我有字符串I am buying %d %s.
(可以是I am buying 2 tomatoes.
),但我希望我的sprintf()函数与sprintf($format, $item, $amount);
类似。
我当前的字符串是不可能的。通过在%
和s
之间添加1 $,我可以指定该占位符将是第一个参数,$2
用于%d
来指定这将是第二个参数。<登记/>
我得到的是:
$item = "tomatoes";
$amount = 314;
$format = "I am buying %2$d %1$s.";
echo sprintf($format, $item, $amount);
// I am buying 314 tomatoes.
sprintf()上的文档提供了有关参数交换的更多信息。
id =“sidebar-box-”。 $ I 强>
你想增加div的id的一部分,我建议你将before_widget
数组键的值更改为<div id="side-barbox-%d" class="sidebar-box">
,这样你可以轻松地增加整数,然后通过{ {1}}。