Questions tagged «plugin-development»

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

5
开发人员可以采用标记为“两年内未更新”的插件吗?
我在http://wordpress.org/extend/plugins/上遇到了一些WordPress插件,并显示以下警告: 这个插件两年多来没有更新。与更新版本的WordPress一起使用时,可能不再受到维护或支持,并且可能会存在兼容性问题。 有没有办法像这样“采用”或“验证”插件?我在wordpress.org上确实有一个插件,所以我了解此过程。使旧的或可能被废弃的插件最新的正确过程是什么?

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' => '' ) …

3
设置API有什么优势?
首先,我要说我几乎不使用WordPress,实际上,我最后一次在WordPress中创建网站是在2.2期间。昨天我把所有东西弄得一团糟,在这里问了几个问题,试图使基本的菜单插件正常工作。 现在,我的插件可以正常运行,并且性能完全符合我的预期,因此我决定在此进行一些小的更改以增加功能和兼容性-包括使用Settings API。但是,阅读此API教程的时间很短,我感到非常困惑,然后,当我继续阅读并尝试实现示例时,这种困惑就加深了-由于我的插件被实现为类,这变得更加困难。 除非我做错了事,否则据我所知,要使用Settings API,需要创建一个新的功能PER SETTING。这意味着平均每个插件需要3-5个功能,而更多高级插件则需要多达数百个功能。当您可以很容易地将所有适用的$_POST变量导入数组并放弃整个混乱时,编写这么多函数(开发一个命名系统以免混淆)似乎很荒谬。 也许我是过时的,但是除非能从中受益,否则我看不出将我编写的代码增加三倍或四倍的原因。这是在尝试添加Settings API之前我如何管理选项的方法: function __construct() { /* constructor stuff */ $this->options = $this->db_options = get_option( 'de-menu-options' ); if( $this->options === false ){ $this->options = $this->defaults; } if (is_admin()) { add_action('admin_menu', array(&$this, 'admin_menu')); } /* more stuff */ // When WordPress shuts down we store changes …

2
使用Eclipse构建插件的策略
有使用Eclipse PDT构建wordpress插件的经验吗? 我的情况是: 我需要构建扩展其他插件的插件(将其视为其他插件的高级版本) 我已经plugin core通过从svn仓库导入创建了项目(原始插件) 我创建了eclipse库wordpress,并将其添加到plugin core项目中。 我创建了另一个项目plugin extender,该项目将托管我创建的脚本。 问题是,如何轻松地将其测试为wordpress,而不必手动将这些项目复制粘贴到wp-content/plugins?是否有自动将这些文件复制到的文件wp-content/plugins?或者,你们对这个问题还有其他解决方案吗? 附带说明,我正在Windows 7上工作。我知道Windows的mklink。但是,我的htdocs位于FAT32分区上,在接下来的几个月中,我不得不使用Windows。

3
如何在插件中使用get_template_part()包含文件?
一个非常简单的问题可能是,但是我很挣扎。在主题开发中,我工作了get_template_part()很多次,并且了解了它的基础知识。但是当我开发一个插件时,我想知道如何使用它显示一些错误: 注意:使用未定义的常量STYLESHEETPATH-...\wp-includes\template.php在第407行假定为'STYLESHEETPATH' 和 注意:使用未定义的常量TEMPLATEPATH-...\wp-includes\template.php在第410行假定为“ TEMPLATEPATH” 谷歌搜索问题显示了支持修复程序: 用于get_template_part()插件-WordPress支持 但这似乎是一个巨大的解决方法-我对此表示怀疑。我认为应该没那么复杂。我检查了此WPSE答案并找到以下代码行: if ( '' === locate_template( 'loop-mycustomposttype.php', true, false ) ) include( 'loop-mycustomposttype.php' ); 哪里有PHP include()函数。根据我的WordPress知识,我学会了优先get_template_part()于PHP include()。那我该如何get_template_part()在插件中使用简单的插件呢? 我没有使用任何循环或其他东西,我只是将我的插件代码分离(或可以说是将其组织)到不同的文件中,以便在某些情况下,我会简单地将其注释掉,以删除不必要的地方。我试过了: get_template_part( 'my', 'special-admin' ); 然后在错误之后,将其更改为: get_template_part( 'my', 'specialadmin' ); 但您知道那不是问题。我在本地服务器上,使用WAMP。

2
如何配置Docker以开发和部署自定义主题?
想要改善这篇文章吗?提供此问题的详细答案,包括引文和答案正确的解释。答案不够详细的答案可能会被编辑或删除。 我开始使用Docker,但是对WordPress专业开发实践还是不熟悉。我想在我的Mac上设置一个Docker开发环境,以便可以进行自定义WordPress主题开发。 假设您之前已经做过并且已经在使用Docker,那么如何设置呢?您的Dockerfile和docker-compose.yml是什么样的?我敢肯定这已经做过。如果已经有单行命令可以为您进行设置,我不会感到惊讶。 更新:我已将本主题缩小为以下问题: 如何配置Docker以开发和部署自定义主题?

1
自定义媒体上传内容,用于插入自定义帖子简码
我正在使用一个可创建自定义帖子类型“投资组合”以及可插入任何页面或帖子的简码的插件。 简码是: [portfolio option1=“1” option2=“0” option3=“1” ] 而且效果很好,它通过custom显示所有自定义帖子WP_query。但我想走得更远。 在旁边upload media生成一个自定义按钮以生成投资组合短代码输出,用户可以在其中选择要包括的帖子并定义所有选项。因此输出为:[portfolio option1=“1” option2=“0” option3=“1” ids=“12,311,432,443,” ] 这是我在wp的media.php中找到的按钮的代码: add_action( 'media_buttons', array( $this, 'media_buttons' ) ); public function media_buttons($editor_id = 'content') { $post = get_post(); if ( ! $post && ! empty( $GLOBALS['post_ID'] ) ) $post = $GLOBALS['post_ID']; wp_enqueue_media( array( 'post' => $post …

2
如何派生插件?
我想开始回馈社区,但是从头开始编写插件目前超出了我的技能水平和创造力水平(也就是说,我不知道我可以用插件解决什么样的问题!我找到一个已经写好的插件或6个插件!)。但是,我最近发现了一个非常简单的插件,自WP 2.8起,它似乎已被放弃,我想我可以将其修改为与3.1兼容。我问过,似乎更新此插件的最佳方法可能就是简单地对其进行分叉。 所以现在我的问题是:我该怎么做?我是SVN的新手,所以我不确定去哪里,如何开始等。有人可以指导我吗?:)


1
哪里是使用add_filter的最佳位置
我应该add_filter在插件的init动作挂钩中还是在主插件脚本中使用函数? 由于有时我发现人们到处都在使用过滤器,因此如果init挂上钩子,在某些情况下为时已晚。 是否有关于action&filter挂钩优先级的一般建议,以便我们可以使用更一致的代码样式?

6
哪里存储由插件/主题创建的PHP文件
在某些情况下,插件或主题需要在以后可以包含它的某个地方创建一个php文件。例如验证码插件,或诸如twig / smarty之类的模板系统(在我的情况下,这是用于小部件集合的简单模板引擎)。 该文件应该在哪里创建? 我唯一能想到的地方是wp-content/uploads/,但这听起来不对:) 那么,有没有安全的地方可以创建文件,而不用担心它们会在WordPress /插件/主题更新中被删除? 一种解决方案是在themes / plugins目录中创建一个子主题/目录。

4
您如何看待定制设计的插件/主题选项用户界面?
您可能已经注意到了制作定制设计的插件/主题选项UI的趋势,尤其是在商业版本中(例如在CodeCanyon上-定制框,标签,手风琴等)。 我个人认为UI应该首先统一,并且在WP中使用样式指南遵循的一些核心默认HTML结构+ CSS类=>确实很容易实现。 但是,有时可能还不够,这就是为什么有这种趋势的原因。另一个原因可能是“烙印”或仅仅是一些“凉爽效果”。 你怎么看待这件事?您更喜欢一些自定义设计的UI还是默认的UI,为什么? PS我问这的主要原因也是因为这些天我开始进行插件开发,并且试图决定选择哪种方式。

5
如何使用Xdebug调试插件?
我能够在本地环境中基于PHP 5.3.0(XAMPP)轻松安装和设置NetBeans 6.9.1和Xdebug。 现在的问题是:如果在Wordpress的index.php或其他Wordpress核心PHP文件上设置断点,则NetBeans会正确停在所需位置。相反,如果我在插件文件上放置一个断点,则触发代码执行的NetBeans不会在那里停止。 您知道如何解决吗? 更新:有关我要调试的更多信息 该插件称为Vanilla论坛,具有以下文件结构: - plugins - vanilla-forums + assets + nbproject + templates admin.php embed.php functions.php hooks.php plugin.php sso.php widgets.php 我在vf_validate_options定义的名为函数中设置了断点functions.php。我确定该函数已执行,但是NetBeans不会在此中断。

3
如何从任何位置包括wp-load.php?
我有一个插件,可通过插件内的jQuery.ajax()脚本调用独立的php脚本(myAjax.php)。 我需要将以下代码放入myAjax.php文件中: require_once('../../../wp-load.php'); if (!is_user_logged_in()){ die("You Must Be Logged In to Access This"); } if( ! current_user_can('edit_files')) { die("Sorry you are not authorized to access this file"); } 但是,如果实际的相对路径与我的示例不同,我想使用一种更加防弹的方法来指定wp-load.php的路径。

2
如何使用插件将子菜单添加到wp_nav_menu生成的菜单中
我有一个菜单wp_nav_menu看起来像 <ul class="nav-menu" id="menu-top-nav"> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-43" id="menu-item-43"><a href="http://www.example.com/item1.com">Item 1</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-44" id="menu-item-44"><a href="http://www.example.com/item2.com">Item 2</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-45" id="menu-item-45"><a href="http://www.example.com/item3.com">Item 3</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-46" id="menu-item-46"><a href="http://www.example.com/item4.com">Item 4</a></li> </ul> 我想通过使用插件将子菜单添加到“项目3”来修改以上菜单,因此下面是我想要的输出。 <ul class="nav-menu" id="menu-top-nav"><li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-43" id="menu-item-43"><a href="http://www.example.com/item1.com">Item 1</a></li> <li class="menu-item …

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.