En el functions.php de nuestro tema activo:
register_sidebar( array(
'id' => 'meter_widget_en_articulo',
'name' => __( 'Dentro articulo', 'lsg' ),
'description' => __( 'Widget Dentro artículo', 'lsg' ),
'before_widget' => '<div>',
'after_widget' => '</div>',
) );
add_shortcode('lsg_get_contenido_widget', 'get_contenido_widget'); // esto solo se usara cuando se haga manualmente
function get_contenido_widget() {
ob_start();
dynamic_sidebar( 'meter_widget_en_articulo', array(
'before' => '<div class="content-widget widget-area">',
'after' => '</div>',
) );
$contenido = ob_get_contents();
ob_end_clean();
return $contenido;
}
Luego nos vamos ya desde el Admin a Apariencia -> Widget nos saldrá esa nueva zona de widget creada donde podremos meter la imagen (o cualquier otro widget que queramos).
Y ya en la entrada que quieras solo tienes que añadir este shortcode:
[lsg_get_contenido_widget]
Si queremos automatizar como que por ejemplo tras el segundo párrafo de todas las entradas salga ese widget habría que ocultar en el functions.php el add_shortcode y quedaría así:
register_sidebar( array(
'id' => 'meter_widget_en_articulo',
'name' => __( 'Dentro articulo', 'lsg' ),
'description' => __( 'Widget Dentro artículo', 'lsg' ),
'before_widget' => '<div>',
'after_widget' => '</div>',
) );
add_filter( 'the_content', 'lsg_insertar_dentro_articulo' );
function lsg_insertar_dentro_articulo( $content ) {
$content_widget_area = get_contenido_widget();
if ( is_single() ) {
return lsg_insertar_despues_del_parrafo( $content_widget_area, 2, $content );
}
return $content;
}
// add_shortcode('lsg_get_contenido_widget', 'get_contenido_widget'); // esto solo se usara cuando se haga manualmente
function get_contenido_widget() {
ob_start();
dynamic_sidebar( 'meter_widget_en_articulo', array(
'before' => '<div class="content-widget widget-area">',
'after' => '</div>',
) );
$contenido = ob_get_contents();
ob_end_clean();
return $contenido;
}
function lsg_insertar_despues_del_parrafo( $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 );
}
INCISO: Si no hubiera segundo párrafo lo pondría detrás del primero y único párrafo.

No hay comentarios:
Publicar un comentario