Insertar anuncios en móviles y PC con código optimizado

  • Autor Autor iweb
  • Fecha de inicio Fecha de inicio
I

iweb

Curioso
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Buenas tardes.
Tengo un pequeño problema que no consigo solucionar. Espero que algún experto en código pueda echarme una mano, y si no lo consigo puede que el código que aquí voy a poner le sirva a alguien.

Hasta ahora para insertar anuncios, independientemente del dispositivo, después del enesimo parrafo (en este caso después del tercero) utilizaba este código:

PHP:
//Insertar anuncio despues de 3 párrafo
add_filter( 'the_content', 'prefix_insert_post_ads' );

function prefix_insert_post_ads( $content ) {

    $ad_code = '<div class="has-text-centered">Anuncio 1
								</div>';
    if ( is_single() & ! is_admin() ) {
        return prefix_insert_after_paragraph( $ad_code, 3, $content );
    }

    return $content;
}

//Necesario para que funcione
function prefix_insert_after_paragraph( $insertion, $paragraph_id, $content ) {
    $closing_p = '</p>';
    $paragraphs = explode( $closing_p, $content );
    foreach ($paragraphs as $index => $paragraph) {

        if ( trim( $paragraph ) ) {
            $paragraphs[$index] .= $closing_p;
        }

        if ( $paragraph_id == $index + 1 ) {
            $paragraphs[$index] .= $insertion;
        }
    }

    return implode( '', $paragraphs );
}

Para que inserte el anuncio únicamente en dispositivos móviles modificaba la linea:
PHP:
if ( is_single() & ! is_admin() ) {

por

PHP:
if ( is_single() && wp_is_mobile() & ! is_admin() ) {

Ahora viene mi pregunta. ¿Cómo mejoro el código para que inserte el "Anuncio 2" cuando el visitante utiliza un sobremesa o portatil (no dispositivo móvil)?

Muchas gracias.
 
Buenas tardes.
Tengo un pequeño problema que no consigo solucionar. Espero que algún experto en código pueda echarme una mano, y si no lo consigo puede que el código que aquí voy a poner le sirva a alguien.

Hasta ahora para insertar anuncios, independientemente del dispositivo, después del enesimo parrafo (en este caso después del tercero) utilizaba este código:

PHP:
//Insertar anuncio despues de 3 párrafo
add_filter( 'the_content', 'prefix_insert_post_ads' );

function prefix_insert_post_ads( $content ) {

    $ad_code = '<div class="has-text-centered">Anuncio 1
                                </div>';
    if ( is_single() & ! is_admin() ) {
        return prefix_insert_after_paragraph( $ad_code, 3, $content );
    }

    return $content;
}

//Necesario para que funcione
function prefix_insert_after_paragraph( $insertion, $paragraph_id, $content ) {
    $closing_p = '</p>';
    $paragraphs = explode( $closing_p, $content );
    foreach ($paragraphs as $index => $paragraph) {

        if ( trim( $paragraph ) ) {
            $paragraphs[$index] .= $closing_p;
        }

        if ( $paragraph_id == $index + 1 ) {
            $paragraphs[$index] .= $insertion;
        }
    }

    return implode( '', $paragraphs );
}

Para que inserte el anuncio únicamente en dispositivos móviles modificaba la linea:
PHP:
if ( is_single() & ! is_admin() ) {

por

PHP:
if ( is_single() && wp_is_mobile() & ! is_admin() ) {

Ahora viene mi pregunta. ¿Cómo mejoro el código para que inserte el "Anuncio 2" cuando el visitante utiliza un sobremesa o portatil (no dispositivo móvil)?

Muchas gracias.
¡Hola! Entiendo que quieres hacer que se muestre un anuncio diferente según el tipo de dispositivo que esté usando el visitante. Puedo ayudarte a modificar tu código para que inserte "Anuncio 1" en dispositivos móviles y "Anuncio 2" en desktops (sobremesas y portátiles).

Aquí tienes una versión mejorada de tu código:

PHP:
// Insertar anuncio después de 3 párrafo
add_filter( 'the_content', 'prefix_insert_post_ads' );

function prefix_insert_post_ads( $content ) {
    // Anuncios para diferentes dispositivos
    $mobile_ad_code = '<div class="has-text-centered">Anuncio 1</div>';
    $desktop_ad_code = '<div class="has-text-centered">Anuncio 2</div>';
   
    if ( is_single() && ! is_admin() ) {
        // Determinar si el usuario está en un dispositivo móvil
        if ( wp_is_mobile() ) {
            return prefix_insert_after_paragraph( $mobile_ad_code, 3, $content );
        } else {
            return prefix_insert_after_paragraph( $desktop_ad_code, 3, $content );
        }
    }

    return $content;
}

// Necesario para que funcione
function prefix_insert_after_paragraph( $insertion, $paragraph_id, $content ) {
    $closing_p = '</p>';
    $paragraphs = explode( $closing_p, $content );
    foreach ($paragraphs as $index => $paragraph) {
        if ( trim( $paragraph ) ) {
            $paragraphs[$index] .= $closing_p;
        }

        if ( $paragraph_id == $index + 1 ) {
            $paragraphs[$index] .= $insertion;
        }
    }

    return implode( '', $paragraphs );
}

### Cambios realizados:
1. Se han añadido dos variables $mobile_ad_code y $desktop_ad_code para almacenar el contenido del anuncio para móviles y desktops, respectivamente.
2. Se ha modificado la estructura de control dentro de la función prefix_insert_post_ads para verificar el tipo de dispositivo y añadir el anuncio correspondiente.

Ahora, dependiendo de si el visitante está usando un dispositivo móvil o de escritorio, se insertará el anuncio adecuado después del tercer párrafo. Espero que esto solucione tu problema. ¡No dudes en preguntar si tienes más dudas!
 
Atrás
Arriba