Php 一个用于所有元数据库的保存功能
我有一个设置元数据库的功能。这会在使用自定义名称实例化类时创建它们 现在,Php 一个用于所有元数据库的保存功能,php,wordpress,Php,Wordpress,我有一个设置元数据库的功能。这会在使用自定义名称实例化类时创建它们 现在,init()执行两个add\u操作函数。一个用于添加元数据库,另一个用于保存元数据库 创建metabox工作正常。然而,储蓄并不意味着什么 它只将上次创建的元盒保存到数据库中 class metaBox { final public function init() { add_action( 'add_meta_boxes', [ $this, 'add' ] ); add_acti
init()
执行两个add\u操作
函数。一个用于添加元数据库,另一个用于保存元数据库
创建metabox工作正常。然而,储蓄并不意味着什么
它只将上次创建的元盒保存到数据库中
class metaBox {
final public function init() {
add_action( 'add_meta_boxes', [ $this, 'add' ] );
add_action( 'save_post', [ $this, 'save' ] );
}
public $CMB_Name;// for custom name
public function setName( $CMB_Name ) {
$this->CMB_Name = $CMB_Name;
}
public function add() { // to add the metabox
add_meta_box(
$this->CMB_Name,
__( $this->CMB_Name, 'plugin' ),
[ $this, 'display' ],
'page',
'normal',
'high'
);
}
public function save( $post_id ) {// to save the metabox
$is_autosave = wp_is_post_autosave( $post_id );
$is_revision = wp_is_post_revision( $post_id );
$is_valid_nonce = ( isset( $_POST['nonce_check_value'] ) && wp_verify_nonce( $_POST['nonce_check_value'], basename( __FILE__ ) ) ) ? 'true' : 'false';
// Exits script depending on save status
if ( $is_autosave || $is_revision || ! $is_valid_nonce ) {
return;
}
if ( isset( $_POST[ $this->CMB_Name . '-text' ] ) ) {
update_post_meta( $post_id, $this->CMB_Name . '-text', sanitize_text_field( $_POST[ $this->CMB_Name . '-text' ] ) );
}
}
}
我不明白的是,当元盒有唯一的nonce和名称时,它不会同时保存这两个值
对象的创建方式如下所示:
function mbe_start() {
$plugin = new testForm();
$plugin->setName( "OOP Plugin name" );
$plugin->init();
$plugin1 = new anotherForm();
$plugin1->setName( "whaat" );
$plugin1->init();
}
mbe_start();
为什么保存功能不起作用?我的意思是,它的原理和添加代谢组的原理完全一样
如果我禁用isset()
函数,它会给我一个关于第一个元框的未定义索引的通知。不确定为什么和/或如何填写。天哪
让它工作起来。原因是给定的名称包含空格和大写字母。这就造成了问题
通过将名称替换为
strtolower(preg_replace('/-+/','-',preg_replace('/[^\wáèíú]/','-',$this->CMB_Name))代码>