Generando un número aleatorio en cada publicación y guardándolo en la base de datos

2

Quiero generar dos números aleatorios sobre cada publicación y guardarlos en la base de datos para que no cambie cada vez que veamos o actualicemos esa página.

Decidí colocar este código php dentro de mi archivo single.php de mi tema para el número aleatorio:

<?php echo rand(1000, 10000); ?>

y coloque este para el número decimal aleatorio:

<?php echo $rand = 0.1*rand(40,49)?>

pero generan números aleatorios entre valores especificados cada vez que el visitante ve la página. Quiero saber cómo generar esos números aleatorios y almacenarlos junto con otros contenidos de la página en la base de datos.

    
pregunta Conspiria 05.11.2014 - 17:10

1 respuesta

5

Supongo que quieres decir algo como esto:

if( function_exists( 'get_post_random_wpse' ) )
    echo get_post_random_wpse( 
        $post_id    = get_the_ID(), 
        $meta_key   = '_post_random', 
        $meta_value = rand( 1000, 10000 ) 
    ); 

donde:

function get_post_random_wpse( $post_id = 0, $meta_key = '_post_random', $meta_value = 0 )
{
    if( ! ( $post_id > 0 && strlen( $meta_key ) > 0 ) )
        return 0;

    if( '' === ( $post_rand = get_post_meta( $post_id, $meta_key, true ) ) ) 
            update_post_meta( $post_id, 
                $meta_key, 
                $post_rand = $meta_value 
            );

    return $post_rand;
}

donde usamos el post meta para almacenar el valor aleatorio de cada publicación.

Actualización:

Respuesta de comentario: Parece que desea almacenar dos números aleatorios para cada publicación: _post_random_int y _post_random_dec donde los muestra / almacena con:

if( function_exists( 'get_post_random_wpse' ) )
    echo get_post_random_wpse( 
        $post_id    = get_the_ID(), 
        $meta_key   = '_post_random_int', 
        $meta_value = rand( 1000, 10000 ) 
    ); 

y

if( function_exists( 'get_post_random_wpse' ) )
    echo get_post_random_wpse( 
        $post_id    = get_the_ID(), 
        $meta_key   = '_post_random_dec', 
        $meta_value = 0.1 * rand( 42, 49 ) 
    ); 

pero debes evitar cowboy coding en un sitio activo y probar esto en una instalación dev (localhost).

Observe que el guión bajo en la clave de metadatos hace que los campos personalizados sean inaccesibles desde la interfaz de usuario de back-end. Si desea poder modificar los campos personalizados desde el backend, no use el guión bajo, use por ejemplo. post_random en lugar de _post_random .

    
respondido por el birgire 05.11.2014 - 17:48

Lea otras preguntas en las etiquetas