Questions tagged «plugin-development»

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

4
当未达到某个WP版本时,在激活过程中停止插件,然后在admin_notices操作钩中显示错误消息
我有一个插件,如果它不符合某个WP版本号,则不希望被激活,然后在admin_notices操作钩中显示错误消息。据我研究,以下代码是我可以达到的最好的代码: $wp_version = get_bloginfo('version'); if ( $wp_version < 4.5 ) { add_action( 'admin_init', 'deactivate_plugin_now' ); add_action( 'admin_notices', 'errormsg' ) ); } public function deactivate_plugin_now() { if ( is_plugin_active('myplugin/myplugin.php') ) { deactivate_plugins('myplugin/myplugin.php'); } } public function errormsg () { $class = 'notice notice-error'; $message = __( 'Error you did not meet …

3
引用插件目录的最佳实践
我的插件使用以下代码引用文件,但WP_PLUGIN_DIR如果用户重命名默认插件文件夹,则无法读取。我还想替换/location-specific-menu-items/为对当前插件文件夹的引用。 $gi = geoip_open(WP_PLUGIN_DIR ."/location-specific-menu-items/GeoIP.dat", GEOIP_STANDARD); 无论WP插件目录和特定插件文件夹的名称如何,我如何都可以重写它以使其工作? 编辑: 这是每个人的输入后我最终的工作解决方案。非常感谢! $GeoIPv4_file = plugin_dir_path( __FILE__ ) . 'data/GeoIPv4.dat'; $GeoIPv6_file = plugin_dir_path( __FILE__ ) . 'data/GeoIPv6.dat'; if (!filter_var($ip_address, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) === FALSE) { if ( is_readable ( $GeoIPv4_file ) ) { $gi = geoip_open( $GeoIPv4_file, GEOIP_STANDARD ); $user_country = geoip_country_code_by_addr($gi, $ip_address); geoip_close($gi); } …

2
在mu-plugins插件中为flush_rewrite_rules自定义帖子类型的最佳方法?
我正在编写一个实例化自定义帖子类型的插件(除其他外)。它是一个多站点插件,位于目录mu-plugins中。 在这种情况下处理flush_rewrite_rules()的最佳实践是什么?对于“普通”插件,您可以在激活钩子中进行此操作-对于必需使用的插件将无法实现,因为这些钩子不可用。 由于这应该是在注册自定义帖子类型之后的“一次性”事件,因此在我注册CPT的类中做这样的事情是否有意义: private function check_flush_my_CPT() { global $wp_rewrite; if ( !get_option('my_plugin_firstrun') ) { $wp_rewrite->init(); $wp_rewrite->flush_rules(true); update_option('my_plugin_firstrun', 'yes'); } } public function register_my_CPT() { // do all the CPT setup steps for the $args array... register_post_type('my_CPT', $args); $this->check_flush_my_CPT(); } add_action( 'init', array(&$this, 'register_my_CPT' ) ); 因此,CPT注册发生在每个“ init”操作上-但如果我有此权利,则重写规则刷新仅发生一次。 曾经。 我在正确的轨道上吗? (编辑):我刚刚尝试过;我的CPT显示404错误,因此重写规则不起作用:-( …

3
流浪脚本来设置所有常见的PHP / WordPress版本组合
我正在寻找一种方法来快速重复地为我们的插件设置测试/调试环境,很可能使用Vagrant。像VVV这样的项目专注于单环境设置(或诸如稳定/干线这样的几个环境),而我正在寻找的是可以设置以下环境的脚本: wp39-php52.local wp40-php52.local wp41-php52.local wp39-php53.local wp40-php53.local 等等(你明白了) 有这样的事吗?我找到的最接近的是WordPress Vagrant Boxes,它至少具有PHP版本,但也许还有更完善的东西,也将WordPress版本添加到了组合中。谢谢。

3
插件升级:小部件设置
我尝试对此进行一些研究,但尚未发现任何可靠的方法。我有一个正在使用的插件,在上一个版本和新版本之间,我们对小部件进行了一些更新,以更改某些设置名称(在后端),并且在创建升级例程来执行此操作时遇到了麻烦。 到目前为止,我所做的似乎(大部分)工作是这样的: $widget = get_option( 'widget_name' ); if( is_array( $widget ) && ! empty( $widget ) ) { foreach( $widget as $a => $b ) { if( ! is_array( $b ) ) { continue; } foreach( $b as $k => $v ) { $widget[$a]['setting1'] = $widget[$a]['oldsetting1']; $widget[$a]['setting2'] = $widget[$a]['oldsetting2']; } …

1
在Wordpress插件安装列表中添加新标签
当用户从WP Admin的“添加插件”区域搜索插件时,我想在当前选项卡旁边添加一个新选项卡(带有指向页面的链接)。 我想要链接的位置在下面的屏幕快照中标记。 在@ http://codex.wordpress.org/Adding_Administration_Menus上查找了它,但没有成功。 WP允许吗? 提前致谢。

1
将数据URI保存到媒体库
我有一个TinyMCE插件,可以使用HTMLCanvasElement.toDataURL()(MDN)生成PNG图像。目前,我只是通过将data-URI放在图像标签中来在后端显示它们,但我真的很想将它们添加到WordPress媒体库中。 上传当前序列化为base64编码的数据URI的图像的最佳方式(即,与VIP兼容)是什么? 到目前为止,这是我的上传功能: <?php /** * AJAX callback that inserts chart as attachment into the WP database */ public static function insert_axis_attachment() { // Get config $axis_config = json_decode( $_POST['axisConfig'] ); if ( ! isset( $_POST['axisJS_nonce'] ) || ! wp_verify_nonce( $_POST['axisJS_nonce'] ) || ! current_user_can( 'upload_files' ) || ! current_user_can( …

3
以编程方式创建用户时发送用户激活电子邮件
我想知道这里是否有人可以提供帮助。 基本上,我创建了一个自定义注册表单,该表单在通过验证后会将用户插入到用户表中。 function _new_user($data) { // Separate Data $default_newuser = array( 'user_pass' => wp_hash_password( $data['user_pass']), 'user_login' => $data['user_login'], 'user_email' => $data['user_email'], 'first_name' => $data['first_name'], 'last_name' => $data['last_name'], 'role' => 'pending' ); wp_insert_user($default_newuser); } 现在,我需要执行的操作不是发送确认电子邮件,我知道我可以使用以下代码进行处理。 wp_new_user_notification($user_id, $data['user_pass']); 我想发送一个用户激活电子邮件。我已经尝试了一些方法,但是似乎无法找到任何具体的方法。希望以前有人遇到过这个问题。

4
动态更改页面的the_title()
我正在开发一个不使用自定义帖子类型,而是使用单独的数据库表的插件。它是一个插件,它显示课程列表,并带有指向不同课程详细信息页面的链接,然后用户可以在其中订阅课程。 在当前状态下,我正在使用简码将插件数据放入具有自定义页面模板(page-courses.php)的页面中。 我现在要the_title()根据插件显示的页面(课程列表,带有表单的课程详细信息页面,表单提交成功页面)进行动态更改。但是只要我使用以下过滤器执行此操作,到页脚中其他页面的链接也会更改: <?php add_filter('the_title', 'custom_page_title'); function custom_page_title() { return 'Custom Title'; } 编辑 在footer.php中,我具有一个包含页脚链接的函数,wp_nav_menu()因此可以在外观>菜单中对其进行定义。但是,使用上面的过滤器后,页脚中的所有链接也会更改为“自定义标题”。但我只想更改页面标题,而不影响页脚中的菜单链接。 试图添加条件标记in_the_loop()的页脚链接仍然受到影响,尽管它们不在循环中。 <?php add_action( 'loop_start', 'set_custom_title' ); function set_custom_title() { if ( in_the_loop() ) { add_filter( 'the_title', 'custom_page_title' ); } } function custom_page_title() { return 'Custom Title'; } 类似于这个问题:在nav中过滤the_title问题,只是受影响的链接在页脚中,in_the_loop()并且不起作用。 我如何更改the_title()而只影响显示的当前页面标题而不影响页脚中的链接? 编辑2-解决方案 所以我终于让它工作了: <?php add_action( 'loop_start', 'set_custom_title' …

4
阻止插件的网络激活
我有一个目前不支持网络激活的插件。当然,最好的解决方法是修复它:),我打算这样做。但是,我想知道是否有一个临时解决方案可以同时防止网络激活,可能是类似于以下的工作流程: 检测激活是否在整个网络范围内(如何?) 显示当前不支持的消息,很抱歉,很抱歉 中断激活或停用 或者,接受其他建议。谢谢。 需要说明的是:多站点激活很好,但不是整个网络范围的激活。

2
wp-content / install.php是插件吗?
我找不到有关什么是以及如何使用Drop-in插件的文档或讨论。 在此问答中提出了问题,请在安装时填充内容。 wp-content/install.php重新定义可插拔功能的文件是否是wp_install_defaultsDrop-in插件? 我的研究结果 以下列表来自hakre的文章 (这似乎是互连网中所有其他副本的来源)。 File Type of Plugin Loaded Context advanced-cache.php Advanced caching plugin. on WP_CACHE value Single db.php Custom database class always Single db-error.php Custom database error message on error Single install.php Custom install script on install Single maintenance.php Custom maintenance message on maintenance Single object-cache.php External …



1
根据用户更改管理语言(在单个站点中)
我正在尝试制作一个小插件,以安装在德国客户的某些站点中。 我可以用德语绕过WordPress,但是如果使用英语,会更容易。 有一个管理该插件的插件(WP Native Dashboard),尽管它做得非常好,但它太重了,无法满足我的需求。客户不需要这个,我需要。 试图模拟它无济于事...它存储一个数据库选项来检查交换而不是$current_user。但是我没有逻辑上可以做到这一点。 因此,我正在尝试采用toscho给出的此解决方案,但似乎我没有在WordPress过程的正确点上做文章。 问题是:以下代码缺少什么(或者我搞砸了)? <?php /* Plugin Name: Set User Locale Plugin URI: https://wordpress.stackexchange.com/q/53326/12615 Description: changes the admin language according to user_login Version: 1.0 Author: wordpress-stackexchange */ class Wpse53326_ChangeLocaleOnDemand { public function __construct() { add_action('admin_init', array(&$this, 'on_init')); add_filter( 'locale', array(&$this, 'on_change_language') ); } public function on_init() …

1
在模板中使用插件类
我正在编写一个插件,用于向邀请对象发送邀请,当单击链接时,该邀请对象会打开一个表单。我按照@toscho在Report Broken Video插件中给出的代码封装了类中的所有函数。相关代码如下: /* Plugin Name: Send Invitation Plugin URI: http://w3boutique.net Description: Emails a the link of the current page to a friend Author: Nandakumar Chandrasekhar Version: 0.1 Author URI: http://w3boutique.net/about-nanda.html License: GPL2 */ // include() or require() any necessary files here // Settings and/or Configuration Details go here define('SEND_INVITATION_MIN_WORDPRESS_VERSION', …

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.