我可能不完全理解您的问题以及"ID"
您的意思(小部件 ID 或实际 HTML div ID - 实际上是一个并且相同..)但如果您已阅读 codex,则给出了如何提供 ID 的示例那里 ..
function __construct() {
parent::__construct(
'foo_widget', // Base ID
__('Widget Title', 'text_domain'), // Name
array( 'description' => __( 'A Foo Widget', 'text_domain' ), ) // Args
);
}
另一种做同样事情的方法(如果你在谈论HTML
像这样的元素很有帮助divs
- 你可以分配 a class
)
function My_Widget() {
function My_Widget() {
$widget_ops = array( 'classname' => 'example', 'description' => __('A widget that displays nothing ', 'example') );
$control_ops = array( 'width' => 300, 'height' => 350, 'id_base' => 'example-widget' );
$this->WP_Widget( 'example-widget', __('Example Widget', 'example'), $widget_ops, $control_ops );
}
请注意,分子将根据启动的实例数自动添加到您的小部件的 ID,例如:
foo_widget
foo_widget-2
foo_widget-3
ETC ...
编辑我- 评论后
无论如何,恕我直言,ID
在小部件中硬编码一个固定是一个坏主意,原因很简单,从开发人员的角度来看,对小部件的偏好是始终允许支持多个实例。给HTML ID
小部件上的任何地方都将导致验证错误,并且在jQuery
- 的情况下也会导致错误,JS
原因很简单,如果用户将有 2 个小部件,它也会有一个重复的 ID。
换句话说-这与您在原始问题中的陈述完全相反。
所以为了 100% 确定它可以工作并且将来可以工作,我可以给我的小部件我自己的 ID
为您的小部件提供固定的硬编码 ID 实际上将确保它不会100% 工作。
偏好总是使用 a class
(或类似的东西div[id^="my_widget_id"]
)来解决此类问题,并让 wordpress “做它的事情”(通过自动递增 ID)。
出于完全相同的原因 - 主题在register sidebar()
函数中应该始终具有相同的结构,如下所示:
<?php $args = array(
'name' => __( 'Sidebar name', 'theme_text_domain' ),
'id' => 'unique-sidebar-id',
'description' => '',
'class' => '',
'before_widget' => '<li id="%1$s" class="widget %2$s">', // LOOK AT THIS LINE
'after_widget' => '</li>',
'before_title' => '<h2 class="widgettitle">',
'after_title' => '</h2>' ); ?>
这将允许将特定的侧边栏添加到auto increment
小部件的 ID 以避免上述问题。
来自法典:
before_widget - HTML 放置在每个小部件之前(默认值:'')注意:使用 sprintf 进行变量替换
说了这么多,如果你坚持在某个地方提供一个硬编码的固定 ID(而不是上面描述的方法),你总是可以把它放在嵌套的div
或在span
你的小部件的 HTML 输出中,但我会认为如果你仔细阅读了这个答案 - 你现在会避免它。
现在,-由于您没有在问题中包含任何代码(这在 SE 上始终是一种不好的做法),因此我无能为力。如果您遇到任何针对没有 ID 的小部件的问题 - 我建议您打开一个新问题,并可能在此处的评论中指向一个链接,以便我自己(和其他人)可以帮助您。