Ejecutar código únicamente en versión mobil

Mensajes
144
Puntuación de reacción
0
Necesito ejecutar el siguiente código sólo en la versión mobil utilizando

PHP:
<?php if (wp_is_mobile()) : ?> .... <?php endif; ?>

PHP:
add_filter( 'the_content', 'publicidad_tras_parrafo' );
function publicidad_tras_parrafo( $content ) {
        if( !is_single() )
            return $content;
 
            $paragraphAfter = 3; //Este es el número del párrafo tras el que irá la publicidad
            $content = explode ( "</p>", $content );
            $new_content = '';
                for ( $i = 0; $i < count ( $content ); $i ++ ) {
                    if ( $i == $paragraphAfter ) {
                    $new_content .= '<div style="width: 600px; height: 100px; padding: 5px 5px 5px 0; margin-right: 0;">';
                    $new_content .= 'Aquí va el código de publicidad';
                    $new_content .= '</div>';
                    }
            $new_content .= $content[$i] . "</p>";
            }
            return $new_content;
    }

Agradezco la ayuda.
 

javierflti

Piedra
Usuario de Piedra
Mensajes
42
Puntuación de reacción
0
No lo he probado, pero con esto te debería bastar
<?php if (wp_is_mobile())
add_filter( 'the_content', 'publicidad_tras_parrafo' );
endif; ?>
La función la puedes dejar fuera, o dentro debajo del add_filter, como quieras
 
Mensajes
144
Puntuación de reacción
0
Gracias.

No me ha funcionado. La función que inserta el anuncio en el segundo párrafo la tengo en functions.php y al incluir el en single.pho el código que me pasas me genera error.

Saludos!
 

javierflti

Piedra
Usuario de Piedra
Mensajes
42
Puntuación de reacción
0
¿puedes mostrarme aquí el error?
El problema debe ser que lo has añadido en el single.php, cuando tendrías que meterlo también en el functions.php
Tendrías que meter todo este código en functions.php
<?php if (wp_is_mobile() && is_single())
add_filter( 'the_content', 'publicidad_tras_parrafo' );
endif; ?>
function publicidad_tras_parrafo( $content ) {
if( !is_single() )
return $content;

$paragraphAfter = 3; //Este es el número del párrafo tras el que irá la publicidad
$content = explode ( "</p>", $content );
$new_content = '';
for ( $i = 0; $i < count ( $content ); $i ++ ) {
if ( $i == $paragraphAfter ) {
$new_content .= '<div style="width: 600px; height: 100px; padding: 5px 5px 5px 0; margin-right: 0;">';
$new_content .= 'Aquí va el código de publicidad';
$new_content .= '</div>';
}
$new_content .= $content[$i] . "</p>";
}
return $new_content;
}

Eso lo que haría sería ejecutar la función solamente si estás cargando el archivo single.php
comenta si te funciona
 
Mensajes
144
Puntuación de reacción
0
Gracias. Me ha funcionado un pequeña modificación. Aquí dejo el código completo:

PHP:
if (wp_is_mobile() )
add_filter( 'the_content', 'publicidad_tras_parrafo' );

function publicidad_tras_parrafo( $content ) {
        if( !is_single() )
            return $content;
 
            $paragraphAfter = 1; //Este es el número del párrafo tras el que irá la publicidad
            $content = explode ( "</p>", $content );
            $new_content = '';
                for ( $i = 0; $i < count ( $content ); $i ++ ) {
                    if ( $i == $paragraphAfter ) {
                    $new_content .= '<div id="ads"> ';
                    $new_content .= '<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <!-- ads1 --><ins class="adsbygoogle"     style="display:block"     data-ad-client="ca-pub-xxxx"     data-ad-slot="xxx"     data-ad-format="auto"></ins><script>(adsbygoogle = window.adsbygoogle || []).push({});</script>';
                    $new_content .= '</div>';
                    }
            $new_content .= $content[$i] . "</p>";
            }
            return $new_content;
    }
 
Arriba