gpt4 book ai didi

wordpress - 通过 register_widget 操作 Hook 将参数传递给 WP_Widget 构造

转载 作者:行者123 更新时间:2023-12-05 03:10:29 24 4
gpt4 key购买 nike

在使用 register_widget() 函数时是否可以将附加参数传递到自定义 Wordpress 小部件中?register_widget 只有一个参数除外 - 目标类名。

add_action( 'widgets_init', function() {
register_widget("ID_Projects_Widget");
} );

class ID_Projects_Widget extends WP_Widget {
public function __construct() {
parent::__construct([...])
}
}

迄今为止相当广泛的搜索得出了一个空白......

https://wordpress.org/ideas/topic/passing-arguments-to-widget

https://wordpress.org/ideas/topic/allow-ability-to-pass-parameters-when-registering-widgets

问题背后的逻辑?

我们想传入一个包含 post_type 名称、ACF“选项”页面 ID 等在之前的类中注册的数组……该小部件将仅用于提供用户选择……

我们真的想避免使用越来越多的 GLOBALS——如果可能的话……

我们的逻辑是否倒退?小部件是否先于鸡蛋?

最佳答案

通过为扩展小部件类创建额外的扩展,可以将属性发送到已注册的小部件。

/*
* Standard WP_Widget
* https://developer.wordpress.org/reference/classes/wp_widget/
*/
class Actual_Widget extends \WP_Widget {

// WordPress WP_Widget Class
public function __construct($args) {

// do stuff with $args

parent::__construct(
// extend WP_Widget as per codex
);
}

}

/*
* Args passed to WP_Widget Class __constuctor for processing
*/

class Temp_Widget extends Actual_Widget {

public function __construct($args) {
$this -> args = $args;
parent::__construct( $this -> args );
}

}

/*
* Args passed via Action Hook to Temp_Widget Class
*/
add_action( 'widgets_init', function() {

$args = array( 'chicken', 'fish' ); // Proceedural
$args = $this -> args; // Or Class Properties

$widget = new Temp_Widget( $args );
\register_widget( $widget );
} );

关于wordpress - 通过 register_widget 操作 Hook 将参数传递给 WP_Widget 构造,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39586672/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com