首页 > 解决方案 > 保存元框值不起作用 [WP-PHP]

问题描述

我正在尝试保存元框输入,但它似乎不起作用。我正在使用数组(因为我需要我的元框有 60 行),所以我认为问题出在它们之内。

这是我的管理员元框功能(它可以正确显示我想要显示的信息):

function mock_metabox() {
    global $post;
    // Nonce field
    wp_nonce_field( basename( __FILE__ ), 'mock_fields' );
    // init counter for meta array
    $contadorglobal = 1;
    $selecciones = array();
    $equipos = array();
    $equiposog = array();
    while ( $contadorglobal <= 60 ){
        $selecciones[$contadorglobal-1] = get_post_meta( $post->ID, '_seleccion_' . $contadorglobal, true );
        $equipos[$contadorglobal-1] = get_post_meta( $post->ID, '_equipo_' . $contadorglobal, true );
        $equiposog[$contadorglobal-1] = get_post_meta( $post->ID, '_equipoog_' . $contadorglobal, true );
        $contadorglobal++;
    }

    // Output the fields
    ?>
    <h3> Informacion del Mock </h3>
    <table>
    <tr>
    <th> # </th>
    <th> Jugador </th>
    <th> Equipo </th>
    <th> Equipo Original </th>
    </tr>

    <?

    $contador = 1;

    $teams = get_posts( array(
            'post_type' => 'team',
            'orderby'   => 'title',
            'order'     => 'ASC',
            'numberposts' => -1,
            'post_status' => 'publish'
        ) );

    while ( $contador <= 60 ){
        ?>
        <tr>
            <td><?php echo $contador ?></td>
            <td><input type="text" name="<? 'jugador_' . $contador ?>" value="<?php echo $selecciones[$contador-1] ; ?>" />
            <td><select name="<? 'equipo_' . $contador?>" ><?
            foreach ( $teams as $team ) { ?>
                <option value="<?php echo $team->ID; ?>" <?php checked( $equipos[$contador-1], $team->ID ); ?> > <?php echo $team->post_title; ?> </option> <? } ?> </select> </td>
            <td><select name="<? 'equipoog_' . $contador ?>" ><?
            foreach ( $teams as $team ) { ?>
                <option value="<?php echo $team->ID; ?>" <?php checked( $equiposog[$contador-1], $team->ID ); ?>  > <?php echo $team->post_title; ?> </option> <? } ?> </select> </td>
            <? $contador++; ?>
        </tr>
        <?php } ?>
    </table>


<?}

这是保存功能(我认为问题出在 while 上,但我尝试将其删除,但它也没有保存任何信息)。

function mock_save_meta_box_data( $post_id ){
    // verify taxonomies meta box nonce
    if ( !isset( $_POST['mock_fields'] ) || !wp_verify_nonce( $_POST['mock_fields'], basename( __FILE__ ) ) ){
        return;
    }
    // return if autosave
    if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ){
        return;
    }
    // Check the user's permissions.
    if ( ! current_user_can( 'edit_post', $post_id ) ){
        return;
    }
    // guarda tipo traspaso
    for ($contadorid = 1; $contadorid <= 60; $contadorid++) {
    if ( isset( $_REQUEST['jugador_' . $contadorid] ) ) {
        update_post_meta( $post_id, '_seleccion_' . $contadorid, $_POST['jugador_' . $contadorid] );
        }
    if ( isset( $_REQUEST['equipo_' . $contadorid] ) ) {
        update_post_meta( $post_id, '_equipo_' . $contadorid, $_POST['equipo_' . $contadorid] );
        }
    if ( isset( $_REQUEST['equipoog_' . $contadorid] ) ) {
        update_post_meta( $post_id, '_equipoog_' . $contadorid, $_POST['equipoog_' . $contadorid] );
        }
    }
}   

add_action( 'save_post_mock', 'mock_save_meta_box_data' );

有任何想法吗?提前致谢!

标签: phpwordpress

解决方案


推荐阅读