¿Puede un Shortcode Obtener HTML/Texto del Contenido y Devolverlo Dos Veces con HTML Agregado?
Estoy intentando reducir algo de trabajo para mí mismo, y esperaba que alguien pudiera saber si esto es posible.
Estas son imágenes configuradas en un slider que muestra una superposición de texto en la imagen en la siguiente diapositiva de una publicación multipágina.
Esto es lo que estoy intentando hacer. Tomar esto:
<h2>Título de la Imagen</h2>
[caption]<img src="http">[/caption]
texto para la diapositiva
Y generar esto:
<div class="singe_slide">
<h2>Título de la Imagen</h2>
[caption]<img src="http">[/caption]
</div>
<!--nextpage-->
<div class="singe_slide">
<h2>Título de la Imagen</h2> //Misma Imagen Página Siguiente
[caption]<img src="http">[/caption]
<div class="slide_caption"><div class="captExt">
texto para la diapositiva
</div></div>
<!--nextpage-->
Actualmente estoy usando esto para mis shortcodes, pero lleva tanto tiempo como añadir manualmente los divs, y es muy desordenado. Se ve así:
[Slide]<h2>Título de la Imagen</h2>
[caption]<img src="http">[/caption][/Slide]
<!--nextpage-->
[Slide]<h2>Título de la Imagen</h2> //Misma Imagen Página Siguiente
[caption]<img src="http">[/caption]
[SlideCap]texto para la diapositiva[/SlideCap][/Slide]
<!--nextpage-->
Y estos son mis 2 shortcodes:
function Slide($atts, $content = null) {
$content = wpautop(trim($content));
return '<div class="singe_slide">' . do_shortcode($content) . '</div>';
}
add_shortcode('Slide', 'Slide');
function SlideCap($atts, $content = null) {
$content = wpautop(trim($content));
return '<div class="slide_caption"><div class="captExt">' . do_shortcode($content) . '</div></div>';
}
add_shortcode('SlideCap', 'SlideCap');
Estoy abierto a sugerencias sobre una forma más fácil de hacer esto. Este es mi primer shortcode, así que soy nuevo en esto.
¿Es posible obtener algo entre shortcodes como variable?
[shortcode]Esta Parte Aquí[/shortcode]
Entiendo lo que realmente estás preguntando. Preguntas cuál es la variable para el contenido entre los shortcodes. Si eso es todo lo que preguntas, entonces la respuesta es la variable de parámetro $content
. Ya la estás procesando en tu código.
Además, en tu ejemplo, parece que tienes un tercer shortcode, [caption]
, que no estás procesando. ¿Es deliberado? No parece que realmente quieras producir HTML final con eso, por lo que esta solución asume que no lo deseas.
Voy a asumir que lo que quieres es un formato de shortcode simple de usar como:
[slide=TítuloDeLaImagen][slideimg]http://algún.dominio/slide.jpg[/slideimg][slidecap]Este es el pie de foto.[/slidecap][/slide]
Que luego puedes procesar simplemente ajustando tus funciones así:
function shortcode_slide($atts, $content = null) {
if(empty($atts)) {
$img_title='';
} else {
// [slide=Título]...[/slide]
// [slide="Título de varias palabras"]...[/slide]
$atts = $this->attributefix( $atts );
$img_title = '<h2>'.trim(array_shift($atts),'="').'</h2>'; // Elimina comillas y signos de igual.
}
$content = wpautop(trim($content));
return '<div class="singe_slide">'.$img_title. do_shortcode($content) . '</div>';
}
add_shortcode('slide', 'shortcode_slide');
function shortcode_slidecap($atts, $content = null) {
$content = wpautop(trim($content));
return '<div class="slide_caption"><div class="captExt">' . do_shortcode($content) . '</div></div>';
}
add_shortcode('slidecap', 'shortcode_slidecap');
function shortcode_slideimg($atts, $content = null) {
$content = wpautop(trim($content));
return '<img src="'.$content.'" />';
}
add_shortcode('slideimg', 'shortcode_slideimg');
Esto debería producir HTML funcional.
