Questions tagged «pluggable»

30
您的functions.php文件的最佳代码收集
请点击问题或答案左侧的向上箭头,对问题和您认为有用的答案进行投票。 与许多现在正在查看此文章的其他人一样,我一直在阅读各种博客,论坛和讨论组,以学习和提高我的wordpress技能。在过去的12个月中,我一直致力于通过向functions.php文件中添加代码来替代插件的使用。尽管我完全同意插件在许多情况下非常有用,但我的经验证明,尽管有插件存在,但在90%的使用情况下,实际使用它可能会造成不必要的复杂性和兼容性问题。另外,在很多情况下,此类插件添加了我不需要或不需要的菜单和其他管理元素。 我经常发现通过分析插件的代码,我可以剥离我想要的代码并将其硬编码到我的functions.php。这为我提供了所需的确切功能,而不必包含不必要的元素。 因此,这篇文章的目的是我试图吸引您(读者/管理员/开发人员)与我和其他人在这里分享您认为有用的任何代码位,这些代码位已添加到主题function.php文件中以扩展或增强WordPress,而无需使用插入。 当您在此处提交回复时,请给每个代码位一个标题,让我们知道您是否知道与哪个版本的wordpress兼容,包括最能描述其功能的描述,以及(如果适用)包括原始链接。您在其中找到信息的插件或来源。 我期待着您的所有答复,当然,无论何时发现它们,我都会不断添加自己的新发现。


1
如何在子主题中覆盖父函数?
我一直在阅读并尝试找出解决方法,但是由于某些原因,我似乎无法在子主题中覆盖父函数。 我将TwentyTen用作父级-谁能告诉我为什么我的子主题中的此功能没有覆盖父级功能? // Override read more link function osu_twentyten_continue_reading_link() { return ' <a href="'. get_permalink() . '">' . __( 'Read on <span class="meta-nav">→</span>', 'twentyten-child' ) . '</a>'; } function osu_twentyten_auto_excerpt_more( $more ) { return ' …' . osu_twentyten_continue_reading_link(); } remove_filter( 'excerpt_more', 'twentyten_auto_excerpt_more' ); add_filter( 'excerpt_more', 'osu_twentyten_auto_excerpt_more' ); 我以为您必须先删除过滤器/操作等,然后再重新添加对不对? 谢谢, 大须

6
更改密码后禁用电子邮件通知
如果用户或管理员更改了用户密码,我想禁用电子邮件通知。 经过一番Googleling之后,我发现我需要创建一个插件并覆盖中wp_password_change_notification找到的功能pluggable.php。 这是插件和功能: <?php /* Plugin Name: Stop email change password Description: Whatever */ if ( !function_exists( 'wp_password_change_notification' ) ) { function wp_password_change_notification() {} } ?> 我将文件上传到了我的插件文件夹,并在管理面板中将其激活! 这需要使用插件来完成,因为pluggable.php文件先于functions.php文件加载。 无论如何,这似乎对我不起作用。 用户仍然会收到电子邮件。 我禁用了所有插件,并以全新安装方式运行该插件,因此不会产生干扰 在WP_DEBUG不显示任何错误,以及! 有人可以告诉我要更改什么或如何以其他方式解决它(核心修改除外:-)) M.

2
在WooCommerce中为完成的订单添加第二个电子邮件地址[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为WordPress Development Stack Exchange 的主题。 5年前关闭。 在我问这个问题之前,我知道这里有一个(合法的)犹豫的答案,关于Woo产品,因为他们有自己的支持,应该鼓励他们的用户使用它。我是Woo的付费用户,但无法在他们的付费支持下解决此问题,我的问题是覆盖WP中的类,因此我希望它能引起公平的听证。 我的问题是:将完整的订单电子邮件发送给客户时,我还需要逐字自动接收此电子邮件,就像发送给客户时一样,而不是各种发票PDF创建的其他格式WooCommerce插件。我可以通过更改以下行来轻松完成此操作/woocommerce/classes/emails/class-wc-email-customer-completed-order.php: $this->send( $this->get_recipient(), $this->get_subject(), $this->get_content(), $this->get_headers(), $this->get_attachments() ); 读书: $this->send( $this->get_recipient(), $this->get_subject(), $this->get_content(), $this->get_headers(), $this->get_attachments() ); $this->send( me@myemail.com, $this->get_subject(), $this->get_content(), $this->get_headers(), $this->get_attachments() ); 但是,显然这样的黑客无法在升级中幸存下来。我有一个覆盖WooCommerce模板的子主题。是否有任何等效的机制可以使我以类似的封装方式覆盖类?还是您可以推荐一种替代方法(除了将SMTP服务器设置为将所有外发电子邮件密送至第二个地址)来完成我在客户也收到该电子邮件时接收该电子邮件的特定任务?

4
在pluggable.php之前加载插件时,如何在插件中调用wp_get_current_user()?
当前结果是“ PHP致命错误:调用未定义函数wp_get_current_user()”,这是有道理的,但无济于事。 我需要使用$ current_user。 这是我当前正在使用的代码: $wp->init(); do_action( 'init' ); // Check site status $file='http://xxxxxxxx.com/wp-admin/wp_includes/pluggable.php'; if ( is_multisite() ) { if ( true !== ( $file = ms_site_check() ) ) { require( $file ); die(); } unset($file); } // Get the current user's info $current_user = wp_get_current_user(); if ( !($current_user instanceof …

3
如何覆盖主题中的可插拔功能?
我遇到的所有文档都讨论了通过插件重写可插拔功能。 如果您要进行主题开发该怎么办? 我的functions.php需要另一个文件来覆盖get_user_by()功能,该文件在中定义pluggable.php。 如果我忽略该if( function_exists() )呼叫,则会收到“无法重新声明...”错误。 如果包含该if( function exists() )调用,则不会出错,但是由于存在可插入版本,因此当然会忽略我的函数。 根据Dominic 在WordPress启动命令上的精彩文章,很明显,该pluggable.php加载是在主题的加载之前进行的functions.php,依此类推,因此可以解释该错误。 因此,问题是-您如何在主题内利用好用的可插拔体系结构,而无需编写必须与主题捆绑或安装的插件? 进一步说明:因此看来,论点是主题不应该尝试执行插件所做的事情。但是该论点已经有四年多了(根据4位数的追踪数)。考虑到当今主题开发领域的复杂拓扑结构,我很乐意从一些沉重的打击者那里听到这种哲学是否仍然适用。我想相信我们从那以后就已经发展了。 上下文:我正在为客户开发一次性CMS解决方案,其中包含许多自定义元数据,Admin后端的自定义,登录/身份验证过程以及各项工作。当然,这里有设计组件-就是主题部分所在的地方。事实是,这些组件根本不是可重用的组件-它们永远不会应用于其他客户,也永远不会置于GPL之下并开源,它们是大多数当然不会在其他WordPress部署中分发/安装。充其量,我会在将来的项目中利用一些最佳实践,但这绝对是参考/复制粘贴工作。 这听起来不像是我的插件用例。该主题已安装,可能是“二十一”的子主题,也可能是一个独立的主题,它的functions.php调用包含一系列内容,每个都处理所涉及的CMS的不同方面。然后,主题模板文件将使用包含中定义的自定义“模板标签”。我不想让主题文件依赖于某些插件或其他被激活的对象,等等。在系统中增加复杂性只是没有意义。当然,我可以将其放在必须使用的plugins文件夹中,但是仍然感觉像黑客一样-现在,与为此项目进行的自定义相关的所有内容都包含在中wp-content/themes/my-theme/。我也不想考虑在某些插件文件夹中搜索内容。 不要误会我的意思。我喜欢插件,并且使用它们并编写它们。当插件是第三方并且代表最佳实践时,我确实将插件与这种高度定制的主题开发结合使用,远远超出了我在合理的时间范围内可能会推出的最佳实践。但是,当我需要为一次性场景修改核心功能时,我转向动作挂钩,过滤挂钩,并且我也希望能够依赖于用户和身份验证方面的可插入功能。

2
使用外部凭证覆盖用户身份验证
我正在与vBulletin论坛一起运行WordPress的网站上工作。用户群已在vBulletin上注册。我只需要允许用户显示在WordPress上登录,其唯一目的就是与论坛用户发布评论。 不得在WordPress上复制用户,因此涉及在WordPress数据库中创建用户的每种解决方案均不适用。 以这种方式识别的用户不需要具有任何管理员或发布特权,而只需具有评论功能,这样他们的评论就可以显示在论坛用户名下。 我编写了一个简单的插件,该插件可以在较旧的版本上运行,但在最新版本的WordPress(目前为3.3.2)上不再起作用。该解决方案依赖于重写可插拔功能wp_validate_auth_cookie和get_userdata。 要实现此功能应采取哪些正确步骤?
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.