gpt4 book ai didi

php - 在自定义插件类中使用 Carbon Fields

转载 作者:行者123 更新时间:2023-12-02 15:08:14 28 4
gpt4 key购买 nike

我有一个目前还没有任何功能的插件。这是当前的结构:

<?php
class Test
{
public function __construct()
{

}
}

$wpTest = new Test();

我想使用 Carbon Fields WordPress 插件。安装后,我根据网站上的说明更改了结构,只是适配了 OOP。

<?php
use Carbon_Fields\Container;
use Carbon_Fields\Field;

class Test
{

public function __construct()
{
add_action( 'carbon_fields_register_fields', array( $this, 'crb_attach_theme_options') );
add_action( 'after_setup_theme', array( $this , 'crb_load' ) );
}

public function crb_load()
{
require_once( 'vendor/autoload.php' );
\Carbon_Fields\Carbon_Fields::boot();
}

public function crb_attach_theme_options()
{
Container::make( 'theme_options', __( 'Plugin Options', 'crb' ) )
->add_fields( array(
Field::make( 'text', 'crb_text', 'Text Field' ),
) );
}

}

$wpTest = new Test();

它不起作用。我该如何解决?

最佳答案

answer从作者自己可能会为他自己的特定目的工作的问题。

但是如果你问这个问题很长,你很可能想在你自己的插件中集成 Carbon Fields(由于这个问题的语言化)。在这种情况下,(至少)有一个问题您应该注意,即您的碳场数据可用的时间点;如果您想在执行插件时检索 Carbon Fields 数据。

TL;DR:carbon_fields_fields_registered 中,操作 Hook 是您可以获得碳字段值的最早阶段。这些字段首先必须在 carbon_fields_register_fields 操作 Hook 中定义。有关其他说明,您还可以查看 this answer .

所以这是一个确保有正确时间的 Bootstrap :

use Carbon_Fields\Container;
use Carbon_Fields\Field;

class YourFancyPlugin
{

public function __construct()
{
add_action( 'after_setup_theme', array( $this,
'load_carbon_fields'
) );

add_action( 'carbon_fields_register_fields', array( $this,
'register_carbon_fields'
) );

/* will succesfuly retrieve the data of the fields registered at
* carbon_fields_register_fields action hook
* if you retrieve the data before carbon_fields_fields_registered action hook
* has fired it won't work
*/
add_action( 'carbon_fields_fields_registered', array( $this,
// picked this name only to emphasize whats going on
'carbon_fields_values_are_available'
) );

/* do all the stuff that doesn't rely on values of your Carbon Fields */
}

public function load_carbon_fields()
{
require_once 'vendor/autoload.php'; // modify depending on your actual setup
\Carbon_Fields\Carbon_Fields::boot();
}

public function register_carbon_fields()
{
Container::make( 'theme_options', 'YourFancyPlugin options' )
-> add_fields( array(
Field::make( 'text', 'YourFancyPlugin_option_1')
) );
}

public function carbon_fields_values_are_available()
{
/* retrieve the values of your Carbon Fields related to your plugin */
var_dump( carbon_get_theme_option( 'YourFancyPlugin_option_1' ) );
/* do all the stuff that does rely on values of your Carbon Fields */
}

}

new YourFancyPlugin();

关于php - 在自定义插件类中使用 Carbon Fields,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45821726/

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