Questions tagged «plugin-development»

WordPress插件可轻松修改,自定义和增强WordPress博客。您可以使用WordPress插件添加功能,而无需更改WordPress的核心编程。


4
插件在符号链接目录中?
当我开发插件时,可以通过在不同wp-content目录中对我的插件目录进行符号链接来在多个版本的WordPress上测试它们。很棒,因为我只需要编辑一次文件,但是它破坏了在插件中生成对资源的引用的重要结构:__FILE__是指物理插件位置,而不是中的位置wp-content。我该如何解决? 我的目录结构如下所示: /path/to/wordpress/development/dir/ plugin-development/ monkeyman-rewrite-analyzer/ monkeyman-rewrite-analyzer.php js/ monkeyman-rewrite-analyzer.js versions/ 3.1/ wp-content/ plugins/ monkeyman-rewrite-analyzer 作为上述插件的符号链接 3.1-multi-dir/ wp-content/ plugins/ monkeyman-rewrite-analyzer 作为上述插件的符号链接 3.1-multi-domain/ wp-content/ plugins/ monkeyman-rewrite-analyzer 作为上述插件的符号链接 如果我想将Javascript文件放入队列,则应该使用plugins_url( 'monkeyman-rewrite-analyzer.js', [base file] ),但是__FILE__在这里使用将不起作用,因为实际的文件路径将是/path/to/wordpress/development/dir/plugin-development/monkeyman-rewrite-analyzer/monkeyman-rewrite-analyzer.php,而不是/path/to/wordpress/development/dir/versions/*/wp-content/plugins/monkeyman-rewrite-analyzer/monkeyman-rewrite-analyzer.php,因此WordPress无法删除第一部分并生成相对于WordPress安装的URL。



5
OOP插件的设置页面提交中的“错误:未找到选项页面”
我正在使用Tom McFarlin的Boilerplate存储库作为模板开发一个插件,该模板利用了OOP实践。我一直在试图弄清楚为什么我无法正确提交我的设置。我尝试按照此处另一个问题的建议将action属性设置为空字符串,但这没有帮助... 以下是我正在使用的常规代码设置... 表格(/views/admin.php): <div class="wrap"> <h2><?php echo esc_html( get_admin_page_title() ); ?></h2> <form action="options.php" method="post"> <?php settings_fields( $this->plugin_slug ); do_settings_sections( $this->plugin_slug ); submit_button( 'Save Settings' ); ?> </form> </div> 对于以下代码,假定除了“ option_list_selection”外,所有add_settings_field()和add_settings_section()的回调都存在。 插件管理类(/{plugin_name}-class-admin.php): namespace wp_plugin_name; class Plugin_Name_Admin { /** * Note: Some portions of the class code and method functions are …

3
如何将用户名和密码存储到Wordpress选项数据库中的API?
我目前正在开发一个插件,很可能我会在公共插件存储库中发布它,以便其他人可以使用它。 该插件将使用API​​,并且要使用此API,您需要传递用户名和密码。因此,我的插件需要将这些登录凭据存储在数据库中。尽管API需要使用纯文本格式,但我不想将它们存储为纯文本格式。 所以我的问题是如何存储这些敏感信息?散列不存在,因此必须进行某种加密。 在WordPress中,有一个可以使用的唯一密钥,该密钥因博客而异?我应该使用哪些PHP函数进行加密和解密?我正在寻找可以在所有WP安装中正常工作的功能。

1
如何用新动作覆盖现有插件动作
我正在使用插件。它具有这样的动作。 add_action('publish_post', 'old_action'); function old_action($pid) { "code goes here" } } 我正在为此插件编写模块。所以我需要用我的新动作函数覆盖那个旧的动作函数。 这是我的新功能。 function new_action($pid) { "code goes here" } } 我想使用钩子将new_action函数替换为old_action函数。谁能帮我? 谢谢

2
插件在哪种情况下负责数据验证/清理?
我想确保插件/主题中的所有数据在进入数据库之前以及输出到浏览器之前都得到安全处理。我的问题是,在某些情况下,API会为您处理清理操作(例如,保存帖子元字段时),而在某些情况下,插件/主题作者将全权负责清理操作(例如,保存自定义设置时)。 对于此问题的范围,我不关心在域级别验证数据-例如,检查表单上的Age字段是否在0到120之间,或电子邮件地址是否有效。我只关心安全性-例如,转义SQL查询以避免在保存到数据库时进行SQL注入,或者清除输出到HTML模板的数据以避免XSS。 为了进行输出清理,我知道在将变量回显到HTML模板中时,您总是需要使用esc_html()和之类的函数esc_attr()。但是,使用模板标签时呢?他们都已经清理输出了吗?如果是这样,则针对哪个上下文(常规HTML,标记属性等)?某些函数具有针对不同上下文的变体(例如the_title_attribute(),但大多数没有)。 为了进行输入清理,我知道$wpdb->prepare()在进行手动查询时需要使用,但是在使用Settings API创建插件设置页面或为自定义帖子类型保存帖子元字段时该怎么办? 现在,每当我使用一个函数来查找它是否可以清除时,我就一直在深入研究Core并阅读教程,但这很容易出错并且很耗时。我希望找到所有可能情况以及API是否处理的全面列表。例如, API验证/清除 使用 update_postmeta() 保存用户元 update_user_meta() 输出帖子标题-使用上下文相关的变体 the_title() 等等 您必须手动验证/消毒 使用Settings API保存插件选项。将回调作为的第3个参数传递register_setting()。 直接数据库查询:将查询包装在中$wpdb->prepare()。 以HTML输出变量。使用esc_attr(),esc_html()等 等等 我也很想了解为什么在某些情况下API提供了它,而在其他情况下却没有。我假设它与数据的未知性质有关,但希望听到一个详尽的解释。

3
将插件数据与主题集成的方法
我想就开发提供主题集成的WordPress插件的最佳做法获得一些意见。 为了让我在问这个问题时讲得通,让我从一个我所好奇的场景的假设示例开始。想象一下,我创建了一个名为“ Discography”的插件。唱片目录注册三种自定义帖子类型:“乐队”,“专辑”和“曲目”。该插件还提供了元框,该框提供了每种帖子类型的详细信息,以及用于组织每种帖子类型的自定义分类法。这些帖子类型与Posts 2 Posts插件捆绑在一起。在管理员中,用户可以添加新的乐队,这些乐队可以与专辑相关联,而专辑又与曲目相关联,所有这些乐队都将通过元框和分类法向其中添加许多其他数据。 现在,我不希望这个插件为用户输入信息而简单地设置管理员。我希望它为数据提供一些默认显示。仅具有该管理员的高级用户/开发人员就可以了。对于她来说,获取这些数据并将其用于主题将很容易;但是,如果没有一些默认视图,此插件对于大多数用户将是无用的。对于此示例,您可以显示类似的内容(括号显示按模板层次结构顺序显示信息的方式): 频段(单前缀-band.php,single.php,index.php,简码) 专辑(single-prefix-album.php,single.php,index.php,shortcode) 曲目(单前缀-track.php,single.php,index.php,简码) 乐队列表(template-band-list.php,page-band-listing.php,page- {id} .php,page.php,index.php,简码) 专辑列表(template-album-list.php,page-album-listing.php,page- {id} .php,page.php,index.php,shortcode) 相册时间轴(template-album-timeline.php,page-album-timeline.php,page- {id} .php,page.php,index.php,shortcode) 重要的是,这些帖子类型必须有一些默认的表示形式,因为默认模板文件不会显示每种帖子类型所需的所有信息。例如,默认情况下,“二十一”主题将仅显示专辑的名称,类别,描述和发布日期。对于专辑来说不是很有用。我想提供一个单独的帖子模板,其中包含乐队,发行日期,唱片标签,专辑版本,曲目等。作为插件开发人员,我觉得提供这一点很重要。我知道该模板不会针对每个主题都适用,但是应该有一些默认设置可以与用户主题进一步集成。 再次,我很好奇如何处理这种情况?我认为您可以执行以下任何操作。 简码 简码可以用作一种非常灵活且用户友好的方式,以允许非开发人员在站点中的任何位置添加乐队,专辑,曲目,乐队列表等。这对于在特定页面上显示乐队或为每个乐队创建单独的页面很有帮助(效率不高,但是某些用户以这种方式处理事情)。短代码将生成HTML,该HTML将与提供的CSS文件绑定,该CSS文件将提供所需数据的漂亮默认视图。一切都将包含在插件文件中,并且主题不需要执行任何操作。 模板文件 该插件还可以附带模板文件。可以对模板文件进行标记和样式设置,以获得漂亮的默认视图。您可以为用户提供指示,以将文件移动到主题文件夹,以便在查看帖子类型时主题将找到正确的模板。您甚至可以提供一个界面,允许用户单击移动文件(注意:激活时我不会在用户的主题文件夹中创建文件,因为将文件添加到主题中而不启动它们是邪恶的) 。 您还可以使用过滤器来利用这些文件,而无需将其移出plugin文件夹,从而使所有内容保持独立。我已经看到了用于此目的的“ template_include”和“ {$ type} _template”过滤器。实际上,您可以使用主题文件夹中的模板,如果模板不存在,则可以依靠这些过滤器提供默认视图。 问题 我想知道别人认为这些情况下的最佳做法是什么,如果所提出的想法在任何方面都存在问题,并且我没有列出任何替代方案。 谢谢!

2
如何以编程方式更改用户密码
我试图创建一个完全不同的配置文件页面(而不是Wordpress提供的页面),因为默认配置文件页面的布局和使用感觉对于用户来说太“ Wordpress”了。现在,我能够成功呈现一个页面,该页面可以修改用户元数据,例如名字,姓氏,城市,邮政编码等。 现在让我感到困扰的是更改用户密码。是否有内置的wordpress函数,例如change_user_password($ user_id,$ new_password)?我很惊讶我找不到能做到这一点的东西。 更糟糕的是,我正在执行UPDATE wp_users SET user_pass = md5($new_password) WHERE ID = $user_id,但是如果没有此功能,我会感到非常惊讶。

3
插件开发的单元测试
我需要对其中一个插件进行单元测试。我最近将其重新设计为类,因此现在应该更容易进行单元测试。 对插件进行单元测试的有效策略有哪些?我需要一种方法来使用插件中使用的WordPress函数,但是我不需要运行中的WordPress网站(只需在DB AFAIK上测试数据),对吗? 我很难弄清楚如何仅对插件进行单元测试,而不是在站点上下文中对插件进行单元测试。我可以为此使用Selenium,但是现在我只想集中精力对插件类功能进行单元测试,以便在每次更新时都不会破坏它们。

4
谁是最受信任的插件开发人员?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 注意:请对问题进行投票,并通过单击问题或答案左侧的UP箭头对您认为有用的任何答案。 那里有很多插件。我们可以一直信任谁的插件? 请分享一个完全可靠的插件作者列表,以及指向其插件页面的链接。 此问题以您的functions.php文件的“最佳代码收集”为模型

8
is_plugin_active函数不存在
我正在使用WordPress 3.0.5,并且已经过3.1rc4的测试。在插件的主PHP文件中,当我尝试调用is_plugin_active时,得到了Call to undefined function is_plugin_active()。我可以调用add_action和add_filter。我应该检查/更改以解决此问题? 这是在“插件”页面上的管理员内部进行的。我在主插件文件的顶部,if (function_exists('is_plugin_active')) {该文件始终返回false。 我也看不到其他插件的主插件文件中的功能(如果有帮助的话)。

3
插件激活后如何重定向到设置页面?
我创建了自己的插件。一切似乎都不错,但是我想在该插件中做的一件事是在激活插件时将其重定向到相应的插件设置页面。 例如: http://www.example.com/wordpress/wp-admin/options-general.php?page=rotator 有没有一种方法可以在激活时重定向到相应的页面,例如使用register_activation_hook?

3
用于管理页面的body_class挂钩
body_class挂钩似乎仅适用于非管理员页面。当我做 add_filter('body_class', 'add_body_classes'); function add_body_classes($classes) { $classes[] = 'myclass'; return $classes; } 如果我想向管理页面的正文添加类,是否应该使用另一个钩子?

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.