Metabox纹理区显示白屏

时间:2013-08-01 作者:Azad Rana

问题是,当我添加textarea时,我会看到没有数据的白色屏幕
下面是我从堆栈交换中获得的代码。

add_action( \'add_meta_boxes\', \'dynamic_add_custom_box\' );

/* Do something with the data entered */
add_action( \'save_post\', \'dynamic_save_postdata\' );

/* Adds a box to the main column on the Post and Page edit screens */
function dynamic_add_custom_box() {
    add_meta_box(
        \'dynamic_sectionid\',
        __( \'Client Information\', \'myplugin_textdomain\' ),
        \'dynamic_inner_custom_box\',
        \'page\');
}

/* Prints the box content */
function dynamic_inner_custom_box() {
    global $post;
    // Use nonce for verification
    wp_nonce_field( plugin_basename( __FILE__ ), \'dynamicMeta_noncename\' );
    ?>
    <div id="meta_inner">
    <?php

    //get the saved meta as an arry
    $ourwork = get_post_meta($post->ID,\'ourwork\',true);

    $c = 0;
    if ( is_array( $ourwork ) ) {
        foreach( $ourwork as  $track ) {
            if ( isset( $track[\'thumb\'] ) || isset( $track[\'client-img1\'] ) || isset( $track[\'client-img2\'] ) || isset( $track[\'client-img3\'] ) || isset( $track[\'client-img4\'] ) || isset( $track[\'client-desc\'] ) ) {
                printf( \'<p>Thumb Image :&nbsp;&nbsp;<input type="text" name="ourwork[%1$s][thumb]" value="%2$s" size="50" /><br/>Client Image 1 : <input type="text" name="ourwork[%1$s][client-img1]" value="%3$s" size="50" /><br/>
                Client Image 2 : <input type="text" name="ourwork[%1$s][client-img2]" value="%4$s" size="50"/><br/> 
                Client Image 3 : <input type="text" name="ourwork[%1$s][client-img3]" value="%5$s" size="50" /><br/> 
                Client Image 4 : <input type="text" name="ourwork[%1$s][client-img4]" value="%6$s" size="50" /><br/>
                Client Desc :<br/><textarea name="ourwork[%1$s][client-desc]" value=""></textarea><br/>
                <span class="remove">%8$s</span></p>\', $c, $track[\'thumb\'], $track[\'client-img1\'], $track[\'client-img2\'] , $track[\'client-img3\'] , $track[\'client-img4\'], $track[\'client-desc\'],  __( \'<span class="button">Remove</span>\' ) );
                $c = $c +1;
            }
        }
    }

    ?>
<span id="here"></span>
<span class="add"><?php _e(\'<span class="button">Add+</span>\'); ?></span>
<script>
    var $ =jQuery.noConflict();
    $(document).ready(function() {
        var count = <?php echo $c; ?>;
        $(".add").click(function() {
            count = count + 1;

            $(\'#here\').append(\'<p>Thumb Image :&nbsp;&nbsp;<input type="text" name="ourwork[\'+count+\'][thumb]" value="" size="50"/><br/>client Image 1 : <input type="text" name="ourwork[\'+count+\'][client-img1]" value="" size="50"/><br/>client Image 2 : <input type="text" name="ourwork[\'+count+\'][client-img2]" value="" size="50"/><br/>client Image 3 : <input type="text" name="ourwork[\'+count+\'][client-img3]" value="" size="50"/><br/>client Image 4 : <input type="text" name="ourwork[\'+count+\'][client-img4]" value="" size="50"/><br/>client Desc:<br/><textarea  name="ourwork[\'+count+\'][client-desc]" value=""></textarea><br/><span class="remove"><span class="button">Remove</span></span></p>\' );
            return false;
        });
        $(".remove").live(\'click\', function() {
            $(this).parent().remove();
        });
    });
    </script>
</div><?php

}

/* When the post is saved, saves our custom data */
function dynamic_save_postdata( $post_id ) {
    // verify if this is an auto save routine. 
    // If it is our form has not been submitted, so we dont want to do anything
    if ( defined( \'DOING_AUTOSAVE\' ) && DOING_AUTOSAVE ) 
        return $post_id;

    // verify this came from the our screen and with proper authorization,
    // because save_post can be triggered at other times
    if ( !isset( $_POST[\'dynamicMeta_noncename\'] ) )
        return;

    if ( !wp_verify_nonce( $_POST[\'dynamicMeta_noncename\'], plugin_basename( __FILE__ ) ) )
        return;

    // OK, we\'re authenticated: we need to find and save the data

    $ourwork = $_POST[\'ourwork\'];

    update_post_meta($post_id,\'ourwork\',$ourwork);
}

1 个回复
SO网友:gmazzap

我打赌这比看起来要简单得多。。。

代替

<textarea name="ourwork[%1$s][client-desc]" value=""></textarea>
使用:

<textarea name="ourwork[%1$s][client-desc]">%7$s</textarea>
不要忘记在jQuery代码中替换字符串。

2个问题:

你忘了%7$s

  • text区域不使用value="" 但将价值放在<textarea></textarea> (如果使用value=”,则会保存但不会显示)
  • 结束

    相关推荐