Poate Un Shortcode Să Preia HTML/Text Din Conținut Și Să Îl Returneze De Două Ori Cu HTML Adăugat?
Încerc să reduc din munca mea și speram că cineva ar putea ști dacă acest lucru este posibil.
Acestea sunt imagini aranjate într-un slider care afișează un text suprapus pe imaginea din slide-ul următor într-un articol multipagină.
Iată ce încerc să fac. Să iau acest conținut:
<h2>Titlul imaginii</h2>
[caption]<img src="http">[/caption]
text pentru slide
Și să le afișez astfel:
<div class="singe_slide">
<h2>Titlul imaginii</h2>
[caption]<img src="http">[/caption]
</div>
<!--nextpage-->
<div class="singe_slide">
<h2>Titlul imaginii</h2> //Aceeași imagine pe pagina următoare
[caption]<img src="http">[/caption]
<div class="slide_caption"><div class="captExt">
text pentru slide
</div></div>
<!--nextpage-->
Acesta este codul pe care îl folosesc în prezent pentru shortcode-urile mele, dar durează la fel de mult ca și cum aș adăuga manual div-urile, și este foarte dezordonat. Arată astfel:
[Slide]<h2>Titlul imaginii</h2>
[caption]<img src="http">[/caption][/Slide]
<!--nextpage-->
[Slide]<h2>Titlul imaginii</h2> //Aceeași imagine pe pagina următoare
[caption]<img src="http">[/caption]
[SlideCap]text pentru slide[/SlideCap][/Slide]
<!--nextpage-->
Și acestea sunt cele două shortcode-uri ale mele:
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');
Sunt deschis la sugestii pentru o metodă mai ușoară de a face acest lucru. Acesta este primul meu shortcode, așa că sunt nou în acest domeniu.
Este posibil să obții ceva între shortcode-uri ca variabilă?
[shortcode]Această Parte Aici[/shortcode]
Bine, cred că am înțeles ce întrebi de fapt. Întrebi care este variabila pentru partea dintre shortcode-uri. Dacă doar asta întrebi, atunci răspunsul este variabila parametru $content
. O procesezi deja în codul tău.
De asemenea, în exemplul tău, se pare că ai un al treilea shortcode, [caption]
, pe care nu îl procesezi. Este intenționat? Nu pare că vrei să obții HTML final cu acesta inclus, așa că această soluție presupune că nu vrei asta.
Voi presupune că ceea ce dorești este un format simplu de shortcode, cum ar fi:
[slide=ImageTitle][slideimg]http://some.domain/slide.jpg[/slideimg][slidecap]This is the caption.[/slidecap][/slide]
Pe care apoi îl poți procesa simplu ajustând funcțiile tale astfel:
function shortcode_slide($atts, $content = null) {
if(empty($atts)) {
$img_title='';
} else {
// [slide=Titlu]...[/slide]
// [slide="Titlu cu mai multe cuvinte"]...[/slide]
$atts = $this->attributefix( $atts );
$img_title = '<h2>'.trim(array_shift($atts),'="').'</h2>'; // Elimină ghilimele și egalul.
}
$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');
Aceasta ar trebui să producă HTML funcțional.
