Questions tagged «plugin-development»

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


1
向图像实例添加更多选项。(附件显示设置)
我正在尝试在Wordpress 3.9中构建一个简单的可重用插件来进行图像演示,看来我遇到了麻烦。 我希望能够向图像实例添加几个选项。(“附件显示设置”下的详细信息)。就像说“响应式”的复选框会禁用(变灰)图像大小下拉菜单,或固定页面位置的选项等。 在媒体管理器中,选择/替换图像时,我已经能够使用attachment_fields_to_edit和兄弟过滤器添加一些自定义字段,但是这些字段会附加到图像本身(或者,如果需要的话,会附加到图像附件发布对象),所以如果页面上有两个相同图像的实例,则它们将共享我的自定义字段的相同值。 a)我添加的“自定义文本”字段,无法将其附加到实例,同一图像的所有实例都共享此值。 b)这是我要添加选项的区域,因为这里的所有内容似乎都遵循每个实例。 c)显示的显示设置与上一个屏幕相同,但是在Wordpress 3.9中单击图像顶部的“铅笔”时,显示的设置有所不同。请注意attachment_fields_to_edit,此屏幕上根本不显示给出的自定义选项。 即使我对骨干网的工作方式或修改wp.media对象的最佳做法尚不完全了解,但我对php,js和谷歌搜索都相当有能力。但是这一天让我难过了几天,所以任何帮助都将不胜感激。 谢谢阅读!

6
在何处,何时何地以及如何在插件范围内正确刷新重写规则?
我在重写规则未正确刷新时遇到了一个奇怪的问题。 我尝试使用flush_rewrite_rules();和flush_rewrite_rules(true);。 我也尝试$wp_rewrite使用$wp_rewrite->flush_rules();和进行全球化$wp_rewrite->flush_rules(true); 似乎都没有正确刷新重写规则。这些调用确实在调用时刷新了重写规则。我怎么知道 使用解决方案调试重写规则刷新。 目前,我在插件激活和插件停用时刷新了重写规则。那里没有问题。 我有一个插件管理设置页面,供用户配置插件。有些设置会调整永久链接结构,因此需要在插件管理设置页面“保存设置”中刷新重写规则。(使用标准update_option();)保存设置。 我想指出,根据指定的设置,将创建自定义帖子类型以匹配用户指定的设置。因此,保存设置后必须立即清除重写规则。这是事情无法正常运行的地方。 上面的调试调试规则所提供的链接解决方案@toscho显示了正在刷新大量的重写规则。但是,当访问自定义帖子类型的单个项目或什至是自定义帖子类型的存档时,每个返回404错误。 自定义帖子类型已正确正确注册。我确定这不是问题。 紧随其后的插件管理页面设置保存。创建自定义帖子类型,调整永久链接结构,并尝试刷新所有重写规则。 然后将始终加载自定义帖子类型,然后init像正常一样加载它们。 由于某些原因,重写规则未正确刷新,因为就像我之前说过的那样,访问自定义帖子类型的单数或存档部分会返回404错误。 现在,奇怪的是,如果我要做的只是访问管理永久链接设置页面,然后返回到前端以查看自定义帖子类型的单数或存档部分,它们将按预期运行。 该管理永久链接设置页面做了哪些我没有做的事情,从而允许重写规则正确刷新而我的不允许这样做? 我的意思是,作为临时解决方案,我将在保存插件管理设置页面后将用户重定向到管理永久链接设置页面,但这不是理想的解决方案。我希望重写规则可以在我的插件代码中正确刷新。 在WordPress中是否有某些要点,刷新刷新规则只是不再刷新所有规则了? admin_menu -插件设置页面已添加到WordPress管理中。 add_options_page() -在“设置”菜单下添加了“插件设置”页面。 设置页面在的回调中呈现add_options_page()。这也是$_POST更新插件设置和刷新重写规则的处理位置。 由于这已经是一个漫长的问题,所以我愿意在非现场链接中提供代码块(如果有帮助),以帮助产生有效的答案。

3
获取其他插件的路径
要获得插件的路径,可以使用plugin_dir_path(__FILE__)-但这显然必须从插件内部调用。 如何从插件A中可靠地获取插件B(pluginb/pluginb.php)的路径? 编辑:假设您知道所追求的插件的特性(实际上您可以从中获取它们get_plugins())。但我希望它能正常工作。

2
为什么activate_plugin在register_activation_hook中不起作用
我正在尝试在激活第一个插件时自动激活第二个插件。 register_activation_hook(__FILE__, 'example_activation' ); function example_activation() { include_once(ABSPATH .'/wp-admin/includes/plugin.php'); activate_plugin('hello.php'); } 它不能在register_activation_hook内部工作。如果我直接使用它,则它的工作方式如下: include_once(ABSPATH .'/wp-admin/includes/plugin.php'); activate_plugin('hello.php'); 我该如何解决?感谢帮助 解: 我现在为自己使用它: // When this plugin activate, activate another plugin too. register_activation_hook(__FILE__, function(){ $dependent = 'hello.php'; if( is_plugin_inactive($dependent) ){ add_action('update_option_active_plugins', function($dependent){ /* for some reason, activate_plugin($dependent); is not working */ activate_plugin('hello.php'); }); } }); …

2
如何从添加/编辑帖子类型中删除某些屏幕选项和元框?
现在,当您在所需的帖子类型中添加或编辑特定帖子时,还有更多屏幕选项。虽然,这些屏幕选项正在显示/隐藏元框。我希望能够以编程方式获取所有已注册的元框屏幕选项的列表,以便我可以再次检查是否存在某些屏幕选项数组,如果存在,我计划以编程方式将其删除。 点击这里查看全尺寸截图 问题 我如何以编程方式获取帖子类型上所有已注册的屏幕选项(元框)的列表,您想在其中添加或编辑所需帖子类型内的特定帖子。 最终,这里的目标是删除这些选项,而不仅仅是禁用它们。我希望按照删除不必要的仪表板meta框所完成的工作来做。

2
寻找WordPress系统图
我正在寻找WordPress图表/图表系统设计。 我仅找到模板层次结构图,但这只是系统的一部分。 来源:http : //upload.wikimedia.org/wikipedia/commons/3/3d/Wordpress_Template_Hierarchy.png

2
WP_Query泄漏荒谬的内存量
每当我在下面的函数中调用WP_Query()时,Wordpress就会泄漏8兆的内存。而且,由于我多次调用此函数,所以事情很快就变得很毛茸茸了……:(我尝试取消生成的$ queryObject以及定期调用wp​​_cache_flush(),但似乎都没有任何效果。 function get_post_ids_in_taxonomies($taxonomies, &$terms=array()) { $post_ids = array(); $query = gen_query_get_posts_in_taxonomies($taxonomies, $terms); // var_dump($query); //Perform the query $queryObject = new WP_Query($query); //*****THE 8 MEGABYTES IS LEAKED HERE***** //For all posts found... if($queryObject->have_posts()) { while($queryObject->have_posts()) { $queryObject->the_post(); //Get the $post_id by capturing the output of the_ID() ob_start(); the_ID(); $post_id = …

6
如何从插件向页面模板列表中添加选项?
在过去的几个小时中,我一直在寻找一种从插件中创建自定义页面模板的方法,但是还没有运气。 我专门想做的是在编辑页面时将选项添加到可用页面模板列表中,而不使用其他方法,例如if( is_page( 'page-slug' ) ) { /* etc */ } 是否可以修改全局变量来执行此操作? 编辑: 我目前正在使用此代码,基于@ m0r7if3r在评论中给我的链接,问题是它将在查看页面时运行此功能,但在编辑页面时不运行(用页面模板填充下拉列表) : class JW_SiteGrader { private static $instance; private function __construct() { add_action( 'template_redirect', array( &$this, 'sitegrader_template_redirect' ), 20 ); } public static function getInstance() { // Return the class data in a Singleton fashion if …

2
在WordPress管理员部分,如何链接到为插件创建的子菜单页面?
因此,我尝试创建一个WordPress插件,并使用此提供的功能创建了一些菜单页面: add_submenu_page('my_plugin_menu', 'Edit record page', 'Edit record page', 'manage_options', 'edit_record_page', array(&$this, 'display_edit_record_page'); 当我转到该页面时,我在浏览器的地址栏上注意到它的内容如下: http://mydomain.com/wp/wp-admin/admin.php?page=edit_record_page 我想要做的是能够链接此页面,但是我发现我必须对链接进行硬编码,原因是缺乏更好的方法来进行链接,而我正在开发站点上。因此,我想知道如何动态生成在浏览器中看到的链接,以便在将该插件代码复制到生产服务器时可以正常工作。即,是否有一个WordPress函数将生成子菜单页面创建的链接部分。 page=edit_record_page 另外,如果我想将查询字符串附加到链接的链接上,就像手动添加它一样简单: http://mydomain.com/wp/wp-admin/admin.php?page=edit_record_page&rec_id=1 还是也有合适的WordPress功能呢?

1
如何使用插件选项页面的设置API保存多选数组?
我想这可能是我的PHP而不是设置API的问题,但我似乎无法让Wordpress为多选框保存数据数组。 多选框对应于自定义元字段,而选择选项是将显示该元字段的自定义帖子类型。 这是显示代码: case 'select2': echo "<select id='$id' style='width:15em;height:10em;' class='select$field_class' name='" . $buddha_option_name . "[$id]' multiple>"; foreach($choices as $item) { $item = explode("|",$item); $item[0] = esc_html($item[0], 'buddha_textdomain'); $selected = ($options[$id]==$item[1]) ? 'selected="selected"' : ''; echo "<option value='$item[1]' $selected>$item[0]</option>"; } echo "</select>"; echo ($desc != '') ? "<br /><span class='description'>$desc</span>" : …

2
如何实现修改数据库的WordPress插件更新?
我开发了一个WordPress插件,它有几个自己的数据库表。该插件在激活时创建这些表,并在删除/卸载时将其删除。 我必须实现插件的更新过程,以更新插件的代码以及表结构。最简单的情况是将新列添加到表之一。更复杂的情况是创建新的表结构并相应地更新内容。 您将如何建议解决此问题?有内置的WordPress功能可能会有所帮助吗?

3
插件激活期间如何输出消息
我正在开发插件,但是在激活短语期间,我经常遇到错误。但是,没有简单的方法来显示错误消息,因为回声会导致“未精确输出”错误。我尝试了admin_message钩子,但是它不起作用。如果激活的某个阶段由于某种原因而失败,我该如何警告用户?


1
如何将第三级子菜单添加到Wordpress管理菜单
是否可以使用功能,操作或过滤器将第三级下拉菜单添加到WordPress管理菜单中。 例如,现在在侧边栏菜单中,有一个用于帖子的菜单,而在帖子下方,有用于编辑帖子,添加新帖子,类别和标签的子菜单。Pages有一些类似的东西。 我想做的是添加一个名为“内容”的菜单项,并将其放置在“内容”,“页面”和“我的自定义内容类型”之下,并在每个条目的下面都具有相关的子菜单(编辑,添加等)。 我想通过我创建的自定义插件来做到这一点。问题是,我找不到有关如何添加第三级子菜单的任何信息。 有任何想法吗? 谢谢。

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.