0
votes

My Wordpress site's index.php has a div which posts the title, category, and featured image of the posts.

index.php HTML

<div>
    <h1><?php the_title(); ?></h1>
    <h3><?php the_category(' '); ?></h3>
</div>

I have a single.php which brings in and puts the content of the post

single.php HTML

<div>
    <?php the_content(); ?>
</div>  

I want to bring a section of the_content of the post into my index.php (for example anything in the 'block quote' tag)

EX.

 <div>
    <h1><?php the_title(); ?></h1>

    ... content from block quote    

    <h3><?php the_category(' '); ?></h3>
</div>
2
I formatted your code a bit. Code blocks should be indented 4 spaces to render properly. - AJF

2 Answers

0
votes

You can retrieve the content with get_the_content(), then check if there's a blockquote and, if so, echo it:

// get the content
$content = get_the_content();
// check and retrieve blockquote
if(preg_match('~<blockquote>([\s\S]+?)</blockquote>~', $content, $matches))
    // output blockquote
    echo $matches[1];
0
votes

You can parse data from HTML tags using the DOM module. This is an excellent guide to doing so.

You can also use REGEX (Somebody has shown this already so I removed the link I was gonna show)

Another option is to parse it yourself with explode etc. Like so:

//Get the content
$content = the_content();

//Explode to separate the first tags
$blockquotes = explode("<blockquote>", $content);

//Data array to use
$data = array();

//For each of these
foreach($blockquotes as $x){
    //Find the location of </blockquote>
    $end_loc = strpos($x, "</blockquote>");

    //Remove everything after by only taking everything before it
    $temp = substr($x, 0, $end_loc);

    //Add it to the array
    $data[] = $temp;
}

//Data now contains all of the data, do as you please with it
var_dump($data);