Necesito convertir la cadena HTML devuelta por the_content(); en WordPress a una matriz de cada elemento de nivel principal. Por ejemplo:
<h3>My subtitle</h3>
<p>Some content here</p>
<blockquote><p>A blockquote goes here</p></blockquote>
Se convertiría:
array['<h3>My subtitle</h3>', '<p>Some content here</p>', '<blockquote> <p>A blockquote goes here</p></blockquote>']
La razón por la que queremos hacer esto es para insertar un anuncio en el contenido, después del primer párrafo si el primer párrafo o bloque de contenido tiene más de 670 caracteres, o después del segundo párrafo si el contenido es más corto. El desafío es si alguno de esos párrafos está envuelto por otro elemento, o si hay otro elemento involucrado.
Este es el código que tengo actualmente:
$content = apply_filters('the_content', get_the_content());
$content = explode("</p>", $content);
$firstParagraphLength = strlen($content[0]);
if($firstParagraphLength > 670) {
$paragraphAdAfter = 1;
} else {
$paragraphAdAfter = 2;
}
// If this is after the target paragraph, insert ad code first
for ($i = 0; $i <count($content); $i++) {
if ($i == $paragraphAdAfter) { ?>
<!-- AD CODE -->
My ad code goes here, great!
<?php
}
echo $content[$i] . "</p>";
} ?>
Esto realmente funciona, pero si hay una cita en bloque en el primer párrafo o en el segundo, el anuncio se inserta en el elemento de cita en bloque. Los datos son bastante dinámicos, por lo que necesito encontrar una forma de dividirlos según los elementos del nivel principal, ya sean citas en bloque, párrafos, titulares, etc.
Utilice domdocument: seguro.php.net/manual/en/class.domdocument.php
– Venkat.R
31 dic. 15 a las 17:55
¿Has considerado la API de código abreviado para que los autores de contenido puedan decidir dónde se coloca el anuncio?
– Volomike
31 dic. 15 a las 17:59
Además, no podemos proporcionar una respuesta aquí si no especifica si se trata de un complemento o un tema. Es posible que también desee investigar wordpress.stackexchange.com que es bastante rico con cosas geniales.
– Volomike
31 dic. 15 a las 18:02
@Volomike, es posible con Core PHP Code. mira esto !
– Venkat.R
31 dic. 15 a las 18:04
@Venkatraman gracias, ¡échale un vistazo! Un poco confundido pero lo intentaré
–Romina Barrett
31 dic. 15 a las 18:05