Php 页面管理中的自定义文本元框赢得';救不了

Php 页面管理中的自定义文本元框赢得';救不了,php,wordpress,wordpress-theming,meta-boxes,Php,Wordpress,Wordpress Theming,Meta Boxes,我添加了一个自定义元框,用于将滑块短码粘贴到我的页面管理。。。我正在尝试将我的自定义元框保存数小时。但不知何故,它不起作用。我可以发誓我的代码是正确的,但可能不是。。。有人能帮我吗?那将是一个很大的恩惠!谢谢大家! <?php add_action( 'add_meta_boxes', 'cd_meta_box_add' ); function cd_meta_box_add() { add_meta_box( 'my-meta-box-masterslider', 'Masterslid

我添加了一个自定义元框,用于将滑块短码粘贴到我的页面管理。。。我正在尝试将我的自定义元框保存数小时。但不知何故,它不起作用。我可以发誓我的代码是正确的,但可能不是。。。有人能帮我吗?那将是一个很大的恩惠!谢谢大家!

<?php
add_action( 'add_meta_boxes', 'cd_meta_box_add' );
function cd_meta_box_add()
{
add_meta_box( 'my-meta-box-masterslider', 'Masterslider Shortcode', 'cd_meta_box_masterslider', 'page', 'normal', 'high' );
}

function cd_meta_box_masterslider()
{
// $post is already set, and contains an object: the WordPress post
global $post;
$values = get_post_custom( $post->ID );
$text = isset( $values​['my_meta_box_masterslider'] ) ? $values['my_meta_box_masterslider'] [0] ) :''; 

// We'll use this nonce field later on when saving.
wp_nonce_field( 'my_meta_box_nonce', 'meta_box_nonce' );
?>

<p>
    Falls ein individueller Slider auf der Seite platziert werden soll, bitte hier den Shortcode platzieren.<br />
</p> 
<p>
    <label for="my_meta_box_masterslider">Masterslider Shortcode</label>
    <input name="my_meta_box_masterslider" type="text" value="<?php echo get_post_meta($object->ID, "my_meta_box_masterslider", true); ?>">
</p>

<?php    
}

add_action( 'save_post', 'cd_meta_box_save' );
function cd_meta_box_save( $post_id )
{
// Bail if we're doing an auto save
if( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return;

// if our nonce isn't there, or we can't verify it, bail
if( !isset( $_POST['meta_box_nonce'] ) || !wp_verify_nonce( $_POST['meta_box_nonce'], 'my_meta_box_nonce' ) ) return;

// if our current user can't edit this post, bail
if( !current_user_can( 'edit_post', $post_id ) ) return;

// now we can actually save the data
$allowed = array( 
    'a' => array( // on allow a tags
        'href' => array() // and those anchors can only have href attribute
    )
);

if( isset( $_POST['my_meta_box_masterslider'] ) )
    update_post_meta( $post_id, 'my_meta_box_masterslider', esc_attr( $_POST['my_meta_box_masterslider'], $allowed ) );

}

?>

cd_meta_box_masterslider功能有几个问题:

  • 在您的$text=行中有一个错误的字符
  • 您为输入设置的值将不起作用,因为它引用的是不存在的内容
  • 最后,$text=行出现了一些奇怪的情况——我重写了它,现在看起来还可以
完整更新的代码供您使用

function cd_meta_box_masterslider()
{
// $post is already set, and contains an object: the WordPress post
global $post;
$values = get_post_custom( $post->ID );
$text = isset($values['my_meta_box_masterslider']) ? $values['my_meta_box_masterslider'][0] : null;

// We'll use this nonce field later on when saving.
wp_nonce_field( 'my_meta_box_nonce', 'meta_box_nonce' );
?>

<p>
    Falls ein individueller Slider auf der Seite platziert werden soll, bitte hier den Shortcode platzieren.<br />
</p> 
<p>
    <label for="my_meta_box_masterslider">Masterslider Shortcode</label>
    <input name="my_meta_box_masterslider" type="text" value="<?php echo $text; ?>">
</p>

<?php    
}
功能cd\u meta\u box\u masterslider()
{
//$post已设置,并包含一个对象:WordPress post
全球$员额;
$values=get\u post\u custom($post->ID);
$text=isset($values['my\u meta\u box\u masterslider'])?$values['my\u meta\u box\u masterslider'][0]:null;
//稍后保存时,我们将使用此nonce字段。
wp_nonce_字段('my_meta_box_nonce','meta_box_nonce');
?>

在平板上的独立滑块上,有一个短码平板。

主滑块短码
$text=isset($value)​['my_meta_box_masterslider'])?$values['my_meta_box_masterslider'][0]:'';在[0]之后有一个杂散值)这将破坏代码并引发错误,因为$object未定义-整个块也应如此谢谢@SimonPollard。我更改了它。不幸的是,我的元框在保存后仍然为空。可能还有其他我们没有看到的内容…这是我更改的两行:
$text=isset($value)​['my_meta_box_masterslider']?$values['my_meta_box_masterslider'][0]:'';
$text=行出现了一些非常奇怪的情况-我可以看到它不起作用,所以我重写了它,它很好…复制并粘贴到现有行上:$text=isset($values['my_meta_box_masterslider'])?$values['my meta_box_masterslider']:null;并确保您的输入框已更新为根据使用$textabove@SimonPollard非常感谢!非常好用。您在上面使用$text的确切含义是什么?只是想确保不要遗漏一些内容;-)谢谢!您救了我一天!