Questions tagged «oop»

3
如何删除一个匿名对象的过滤器?
在我的functions.php文件中,我想删除下面的过滤器,但是由于它在一个类中,所以我不确定该如何做。应该是什么remove_filter()样子? add_filter('comments_array',array( &$this, 'FbComments' )); 这里是 88号线。
62 filters  oop 

6
在主题中使用OOP
我看到很多插件在不需要时都使用了面向对象的编码。 但是更糟糕的是主题开发人员开始做同样的事情。商业主题和免费流行主题,例如Suffusion,甚至是我最喜欢的主题-Hybrid,都将其所有功能填充在一个类中,然后在functions.php中实例化一次,并以程序方式运行它的功能:) WTF?这样做有什么意义?显然,您不会同时使用两个或多个相同主题的实例。 假设插件为名称空间执行此操作(这很荒谬),但是主题借口是什么?我想念什么吗? 编写这样的主题有什么好处?
36 themes  php  oop 


2
为什么有些钩子在类上下文中不起作用?
我对此很困惑。我在插件类中使用add_action做某些事情-将脚本和样式添加到头部,wp_ajax等。这是__construct中的操作: function __construct(){ add_action('admin_menu', array($this, 'sph_admin_menu')); add_action('sph_header', array($this, 'sph_callback')); add_action('sph_header_items', array($this, 'sph_default_menu'), 1); add_action('sph_header_items', array($this, 'sph_searchform'), 2); add_action('sph_header_items', array($this, 'sph_social'), 3); //Below here they don't work. I have to call these outside of the class (but I need class variables within the functions) add_action('wp_print_styles', array(&$this, 'sph_stylesheets')); add_action('wp_print_scripts', array(&$this, 'sph_scripts')); add_action( …
16 hooks  actions  oop 

1
插件表格提交最佳实践
我已经做了很多研究,但是没有找到我想要的东西,因此我希望可以指出正确的方向。 我正在开发一个Events插件,它将从前端预订票证。这与其他任何Form提交都没有什么不同,但是让我感到困惑的是如何处理通过OOP用类编写的插件的处理方式。 我发现的大多数文章都说要在模板页面中进行$ _POST处理。理想情况下,我希望通过插件中的函数来处理此问题。 我不确定的另一件事是,当您在前端提交表单时,该表单实际上是如何传递到后端的函数的。我希望从任何模板详细信息中完全抽象出表单处理。 // events.php if ( ! class_exists( 'Events' ) ) { Class Events { function __construct() { add_action( 'plugins_loaded', array( &$this, 'includes' ), 1 ); } function includes() { require_once( EVENTS_INCLUDES . 'functions.php' ); } } } if ( class_exists( 'Events' ) ) { $events_load = …

2
将Class方法注册为钩子回调
我不确定是否正确执行了此操作。 据我了解: 如果我有一个foo类和一个静态方法栏,则可以通过将数组array("foo","bar")作为函数名称传递来将其注册为回调。 如果我在$ foo中有一个类的实例,并且想调用方法栏,则可以传递array array($foo,'bar')。 如果我需要在类本身内部注册一个动作,它可以工作array($this,'bar')吗?
16 plugins  hooks  oop 


3
来自类的短代码处理程序的PHP错误
目前,我正在使用以下通用流程为插件添加简码。 class MyPlugin { private $myvar; function baztag_func() { print $this->myvar; } } add_shortcode( 'baztag', array('MyPlugin', 'baztag_func') ); 现在,当调用此类及其方法时,出现以下错误。 致命错误:不在对象上下文中时使用$ this ... (行号是我在上打印的位置$this->myvar) 这是Wordpress的问题,还是我做错了什么?这似乎很简单。

2
从插件深处获取plugin_dir_url()
我使用该结构编写了几个插件: /plugins/myplugin/myplugin.php /plugins/myplugin/class/class-myclass.php 以便利用面向对象和整体结构我的代码 从类文件中,有时我需要获取基本插件的URL ...我一直在使用以下内容,但是我敢肯定有更好的方法: $this->plugin_location = substr(plugin_dir_url(__FILE__),0, strrpos(plugin_dir_url(__FILE__), "/",-2)) . "/"; 我玩弄的另一个想法是有一个额外的单例类,用于存储插件的所有设置,并通过类文件添加抽象层。 任何帮助是极大的赞赏。

1
在Functions.php中使用类而不是全局函数
在我见过的许多主题(包括TwentyEleven)中,以及在网上找到的示例中,functions.php为主题创建文件时,所有功能都在全局范围内声明。为了澄清,这是典型的函数文件的外观: function my_theme_do_foo() { // ... } function my_theme_do_bar() { // ... } add_action( 'foo_hook', 'my_theme_do_foo' ); 在我看来,如果使用一个类,可以将事情“封装”得更好: class MyTheme { function do_foo() { // ... } function do_bar() { // ... } } $my_theme = new MyTheme(); add_action( 'foo_hook', array( &$my_theme, 'do_foo' ) ); 第二种方法的优点(以我卑微的眼光): 较短的函数名称 访问实例变量(IMO的最大优势) 没有全局功能 缺点: …

3
如何使用在另一个插件中声明的类?
我正在开发一个Wordpress Woocommerce插件。在我的本地环境中,它工作正常,但是将插件添加到产品环境的副本时遇到了问题。我是Wordpress的新手,对Web开发人员也不是很熟悉(我是Java程序员)。 在插件文件中,我从Woocommerce插件包实例化一个类,如下所示: $coupon = new WC_Coupon($some_code); 在本地环境中(php 5.4.10,Woocommerce 2.0.13,Wordpress 3.6)很好。在生产环境中(php 5.4.10,Woocommerce 1.6.5.2,Wordpress 3.4.2),我遇到以下错误: Fatal error: Class 'WC_Coupon' not found 我试过包括定义了WC_Coupon类的文件,但随后错误变为 Fatal error: Cannot redeclare class WC_Coupon 那么,使用在另一个插件中声明的类的正确方法是什么? 注意:目前无法升级。
10 plugins  oop 

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', …

4
如何命名命名空间类的文件?
WP核心手册> PHP编码标准>命名约定为使用类命名文件提出了以下建议: 类文件名应基于带class- 前缀的类名,并且类名中的下划线用连字符代替,例如WP_Error: class-wp-error.php 从本节的措辞来看,它主要是供核心使用的,但总体而言,编码风格确实确实适用(并且我认为应该如此)适用于第三方WP代码。 但是,由于core不支持名称空间(PHP 5.2,ugh),因此无法解决这种情况。 从开发人员便利性的角度出发,采取什么实际方法?支持自动装带器? 我可以看到多种替代方法: 完全忽略命名空间 在文件名中包括名称空间 使用名称空间作为文件夹级别 完全使用替代命名方案,例如PSR

1
如何为WP_Query创建灵活的抽象?
我的问题是关于php的,但是在我创建插件时涉及到wordpress。情况是我有5个问题,每个问题有6个选择,每个选择一个。现在,此人可以从每个选择中选择一个,也可以选择几个。我已经创建了if条件,现在该条件使我发疯,因为它已经太久了,并且会进一步发展,就像将进行近100种组合一样。我不希望那样,我知道有一种多维数组的方法,但是不是wordpress的插件或PHP专家。因此,如果有人可以为我排序。 $qs = $_POST['q1']; $q2 = $_POST['q2']; $q3 = $_POST['q3']; $q4 = $_POST['q4']; $q5 = $_POST['q5']; $q6 = $_POST['q6']; $args = array( 'post_type' => 'product', 'posts_per_page' => -1, 'tax_query' => array( 'relation' => 'AND', array( 'taxonomy' => 'product_cat', 'field' => 'slug', 'terms' => 'fashion-follower' ), // array( // 'taxonomy' => …
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.