es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Página de administración personalizada de WordPress – Guardar casilla de verificación

Estoy tratando de crear una página personalizada en el panel de administración para guardar algunas casillas de verificación en algún lugar en un array para luego poder mostrarlas en el tema de WordPress. Pero la verdad es que estoy limitado, no sé cómo continuar para guardar esa información, ni sé si es mejor usar update_option() o update_post_meta() para guardar esa configuración.
Tengo el siguiente código en el archivo de funciones del tema:

function wpdocs_unsub_add_pages() {
    add_menu_page(
        __( 'Lista de Desuscripción', 'textdomain' ),
        __( 'Emails de Desuscripción', 'textdomain' ),
        'manage_options',
        'categoriasrelacionadas',
        'wpdocs_unsub_page_callback',
        ''
    );
}

/**
 * Función de visualización para la página de Desuscripción.
 */
function wpdocs_unsub_page_callback() {
    echo 'Lista de Correo de Desuscripción';
?>

'name', 'order' => 'ASC' ); $categorias = get_categories($cat_argtos); foreach($categorias as $categoria) { $args = array( 'showposts' => -1, 'category__in' => array($categoria->term_id), 'caller_get_posts' => 1 ); $entradas = get_posts($args); if ($entradas) { echo '' . $categoria->name . '

'; } } ?>

¿Qué más podría hacer para guardar la información y mostrar las casillas seleccionadas?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para guardar la información de la casilla de verificación, puedes utilizar la función de WordPress update_option() con el nombre de tu opción y el valor como parámetros. Aquí tienes un ejemplo de cómo puedes guardar los IDs de categoría seleccionados:

    function wpdocs_unsub_page_callback() {
        if ( isset( $_POST['categorias'] ) ) {
            // Guardar los IDs de categoría seleccionados en una opción
            update_option( 'selected_categories', $_POST['categorias'] );
        }
    
        echo 'Desinscribirse de la lista de correo electrónico';
    ?>
        <form method="post" action="<?php echo esc_html( '?page=categoriasrelacionadas' ); ?>">
            <?php $cat_args = array(
                'orderby' => 'name',
                'order' => 'ASC'
            );
    
            $categorias = get_categories( $cat_args );
            foreach( $categorias as $categoria ) {
                $args = array(
                    'showposts' => -1,
                    'category__in' => array( $categoria->term_id ),
                    'caller_get_posts' => 1
                );
                $entradas = get_posts( $args );
                if ( $entradas ) {
                    $selected = in_array( $categoria->term_id, get_option( 'selected_categories', array() ) ) ? 'checked' : '';
                    echo '<p>' . $categoria->name . '
                        <input type="checkbox" name="categorias[]" value="' . $categoria->term_id . '" .="" $selected="" .="">
                        </p>';
                }
            }
            wp_nonce_field( 'acme-settings-save', 'acme-custom-message' );
            submit_button();
        ?>
        </form>
    <?php 
    }
    

    En este ejemplo, hemos agregado una declaración condicional para verificar si la variable categorias está establecida en el array superglobal $_POST. Si está establecida, entonces guardamos los IDs de categoría seleccionados usando update_option().

    Para mostrar las casillas de verificación seleccionadas cuando se carga la página, hemos agregado la variable $selected, que verifica si el ID de categoría actual está en la opción guardada utilizando la función in_array().

    Finalmente, en cualquier lugar donde quieras mostrar las opciones guardadas en tu tema, puedes utilizar la función get_option() con el nombre de tu opción como parámetro:

    $selected_categories = get_option( 'selected_categories', array() );
    foreach ( $selected_categories as $category_id ) {
        // Mostrar la categoría seleccionada
    }
    

    Esto devolverá un array de IDs de categoría que puedes utilizar para mostrar las casillas de verificación seleccionadas en tu tema.

Comments are closed.