Questions tagged «widgets»

小部件是可配置的元素,用于动态构建WordPress主题的各个部分。

6
我的代码放在哪里:plugin或functions.php?
是否有一种易于理解的方案来确定插件或主题的代码属于哪种代码functions.php? 目前有 很多 情况下,许多辩论有关的话题,主要是因为有关于WordPress的内部运作的一些误解。我是在根据事实而不是根据观点寻求答案。 它应该说明如何处理这些问题(可能还有更多): 自定义帖子类型和分类法 联系表格 简码 自定义小部件 add_theme_support( 'automatic-feed-links' ); SEO功能,例如自定义meta元素 主题切换 双方通常都有利弊。我们为您的functions.php文件提供的最受欢迎的最佳代码收集问题有很多代码片段,这些答案至少是值得商de的。 我们需要初学者可以理解的标准,也许还有清单,并附上原因。 另请参见Chip Bennett在我们的元网站上的相关问题:专门要求“没有插件”的解决方案的问题 相关:我在哪里或在网上其他地方找到的代码片段放在哪里?


4
以编程方式将小部件添加到侧边栏
我想以编程方式将小部件添加到我拥有的两个侧边栏中。我找不到任何官方方法吗? 我开始在数据库中查找。我发现这是“ sidebars_widgets”选项,将小部件放在侧边栏上。查看选项时,小部件名称的末尾添加了一个数字,例如:widget_name-6。这个数字从哪里来? 关于如何解决此问题的任何想法?
62 widgets  sidebar 


2
在后端添加小部件时执行Javascript
我有附加了javascript控件的小部件。 如果在窗口小部件管理页面加载时窗口小部件存在,则控件可以正常工作。 当我添加新的小部件时,它们无法正常工作,我得到了标记,但是没有任何JavaScript事件生效。 如果我保存了新的小部件,则在重新加载表单时,控件将正确创建并且可以正常工作。 刷新页面也可以解决此问题,但仅适用于现有窗口小部件。新的小部件仍然存在此问题。 具体来说,我在这些时候对选择输入运行selectize: 准备好文件 Ajaxcomplete 我已经验证我的代码可以按需在每个事件上运行,但是结果却不符合预期。 这是一个演示该问题的测试插件: https://gist.github.com/Tarendai/8466299 您会看到我有一个计数器,它发现它可以转换的每个select元素都会增加。 笔记: 加载小部件页面后,我可以看到JS控制台中的计数器正在按预期方式增加 当我添加一个新的小部件时,代码将运行,但是,它找不到能在其上运行的所有选择元素,如found.length为0所示。情况并非如此,因为该类型的每个新小部件都应有一个选择元素 select元素具有一个用于标识它们的类,一旦应用了selectize库,便会删除该类,以防止对现有小部件进行重复和重新处理。 在使用selectize之前,我使用了Select2,它具有相同的问题 注释掉AJAX代码,我希望新的小部件具有标准的select输入。他们不。我不知道为什么会这样 那么,如何在不告诉用户在进行更改之前刷新/单击保存的情况下使selectize控件起作用?

1
如何在小部件后端表单中包含复选框?
我试图在我的小部件后端中包含一个复选框。但是在用户提交后,我无法获取该值(打开或关闭)。我以为该值将存储在“ esc_attr($ check)”中(使用文本输入时就是这样),但是我无法检索到它。 这就是我现在正在尝试的方法: public function form( $instance ) { $check = isset( $instance[ 'check' ] ) ? $instance[ 'check' ] : 'off'; echo esc_attr( $check ); // If the input is type text it outputs the value ?> <input class="widefat" id="<?php echo $this->get_field_id( 'check' ); ?>" name="<?php echo $this->get_field_name( …
17 php  widgets 

4
仅在存在特定的简码或窗口小部件时加载脚本
我需要一种在加载页面/帖子内容之前对其进行过滤的方法,这样,如果存在特定的短代码,我可以将脚本添加到页眉中。经过大量搜索之后,我在http://wpengineer.com上发现了这一点 。 function has_my_shortcode($posts) { if ( empty($posts) ) return $posts; $found = false; foreach ($posts as $post) { if ( stripos($post->post_content, '[my_shortcode') ) $found = true; break; } if ($found){ $urljs = get_bloginfo( 'template_directory' ).IMP_JS; wp_register_script('my_script', $urljs.'myscript.js' ); wp_print_scripts('my_script'); } return $posts; } add_action('the_posts', 'has_my_shortcode'); 这绝对是出色的,完全满足了我的需求。 现在,我需要进一步扩展它,并对侧边栏进行相同的操作。它可以是特定的窗口小部件类型,短代码,代码段或任何其他可以识别何时需要加载脚本的方法。 问题是在加载侧栏之前我不知道如何访问侧栏内容(所讨论的主题将具有多个侧栏)

3
如何将“从URL插入”选项卡添加到自定义3.5 Media Uploader?
当单击按钮时,通过运行此JavaScript,我已将WP 3.5媒体上传器插入到小部件中: var frame = wp.media( { title : 'Widget Uploader', multiple : false, library : { type : 'image' }, button : { text : 'Select Image' } } ); frame.on( 'close', function() { var attachments = frame.state().get( 'selection' ).toJSON(); imageWidget.render( widget_id, widget_id_string, attachments[0] ); } ); frame.open(); return …
17 widgets  uploads  media 

4
边栏中的小部件数量限制
如果我使用自定义的小部件区域(例如页脚),其中小部件的斑点数量有限(根据设计),是否可以限制用户可以在该特定小部件区域中包含的小部件数量?解决方案是在后端还是在前端都没有关系。谢谢。
17 widgets  sidebar 


2
授予编辑者对边栏的访问权限
我想授予“编辑者角色”访问权限,以编辑侧边栏及其内容。我在那里有一个文本小部件,为了编辑此文本小部件,用户需要是管理员-这太糟了。如何授予“编辑者角色”权限,使他可以编辑侧边栏?

2
插件中的自定义小部件功能不起作用?
我直接从我创建的主题之一中提取了一个代码,它是无序列表中所有50个状态的列表,这些列表打包到一个小部件中,您可以将其拖放到侧边栏上。 问题是,当我尝试在PLUGIN文件中使用此代码时,出现以下错误: Fatal error: Call to a member function register() on a non-object in C:\xampp\htdocs\wordpress\wp-includes\widgets.php on line 431 为什么它在主题中有效,但在插件中无效?顺便说一句,活动主题不是我从中删除代码的主题。 这是我的代码:http : //pastebin.com/ZeRWW3yb 谢谢。

4
拖放后更新窗口小部件表单(WP保存错误)
几个月前,我已经发布了有关此问题的错误报告(在WordPress trac(小部件实例表单更新错误)上),我想我也想在这里写一下。也许有人比我有更好的解决方案。 基本上,问题在于,如果您将小部件拖放到侧栏中,则在您手动按保存(或重新加载页面)之前,小部件表单不会得到更新。 这使得form()依赖于小部件实例ID 的功能中的所有代码都无法使用(直到您按下保存按钮)。诸如ajax请求之类的东西,诸如colorpickers之类的jQuery之类的东西都不会立即起作用,因为从该函数看来,小部件实例尚未初始化。 肮脏的解决方法是使用livequery之类的方法自动触发保存按钮: $("#widgets-right .needfix").livequery(function(){ var widget = $(this).closest('div.widget'); wpWidgets.save(widget, 0, 1, 0); return false; }); 如果未初始化小部件实例.needfix,form()则添加该类: <div <?php if(!is_numeric($this->number)): ?>class="needfix"<?php endif; ?> ... </div> 该解决方案的一个缺点是,如果您注册了许多小部件,浏览器将占用大量CPU,因为livequery每秒都会检查DOM的更改(因此,我没有专门测试过,这只是我的假设:) 有什么建议可以更好地修复该错误吗?


3
有条件地将小部件的脚本/样式表放入HEAD中(仅当出现在页面上时!)
我一直在尝试在以下情况下为WordPress小部件加载脚本和样式... 脚本必须加载到HEAD中(否则它们会中断)。 仅在小部件实际显示时才加载脚本(它们非常重)。 我已经做了很多搜索,这似乎是一个常见的(未解决的)问题……但是我希望这里的某个人已经成功实现了解决方法。 这是到目前为止我所能做到的最好的... 以下是一个简单的小部件,可将文本打印到侧边栏。它成功地有条件地加载了jQuery(实际上是在显示小部件时)...尽管仅在页脚中!(注意:尽管此hack可能提供向后兼容性,但它也可能仅在WordPress 3.3上有效)。 class BasicWidget extends WP_Widget { function __construct() { parent::__construct(__CLASS__, 'BasicWidget', array( 'classname' => __CLASS__, 'description' => "This is a basic widget template that outputs text to the sidebar" )); } function form($instance) { $instance = wp_parse_args( (array) $instance, array( 'title' => '' ) …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.