Ajax filter not returning page content

Question

I have a special function on some of my pages that returns a modified embed code. It works great:


    if (/*is_page() &&*/ has_category('Krajské zprávy')) {
        /* get subtitle */
        $subtitle = apply_filters( 'plugins/wp_subtitle/get_subtitle', '', array(
           ) );

        if ((strpos($subtitle , 'kraj') == false) && (strpos($subtitle , 'Praha') == false) && (strpos($subtitle , 'Vysočina') == false)) {
            $subtitle = "Všechny kraje";
        };

        /* get page id with embed code */
        $id_short = 357;
        $tag_id = array (
            'Ovzduší' => 357
        );
        foreach ($tag_id as $k => $v) {
            if (has_tag($k)) {$id_short = $v;}
        }

        /* get embed code & replace */
        $acf_kod = get_field('embed_kod', $id_short /*,false*/);
        $replace_sub = "<param name='filter' value='Parameters.Kraj="  . $subtitle . "'>";
        preg_match_all('/<param [^>]*>/', $acf_kod, $matches);
        $m_1 = $matches[0][0]; $m_2 = $matches[0][1];
        $pos = strpos( $acf_kod, $m_1) + strlen( $m_1 );
        if (strpos($acf_kod,$m_2)-(strpos($acf_kod,$m_1)+strlen($m_1))<2) {
            $before = substr ($acf_kod, 0, $pos);
            $after = substr( $acf_kod, $pos, strlen( $acf_kod ) );
            $whole = $before . $replace_sub . $after;
            $content = $whole .'<!--more-->' . $content;
        };
    /*echo $whole;*/
        };
    return $content;
};
add_filter('the_content', 'add_embed_parameter');

However, I also have a filter on my site that filters pages by categories and tags and returns them via Ajax. That, too, works just fine – but only with “standard pages” that don’t use the code above. For the pages that do, it returns nothing.

This is a snippet of the php code that is used by the filter:

    $query = new WP_Query( $args );

    if( $query->have_posts() ) :
        while( $query->have_posts() ): $query->the_post();
            /*$content = get_post_field( 'post_content', get_the_ID() );*/
            $content = get_the_content (/*get_the_ID()*/);
            $content_parts = get_extended( $content );
            echo '<h2>' . $query->post->post_title . '</h2>', 
                            $content/*$content_parts['main'] /*'<p>' . $query->post->post_excerpt . '</p>'*/;
        endwhile;
        wp_reset_postdata();
    else :
        echo 'No posts found';
    endif;

    die();

This is the whole AJAX thing (it’s not mine, I’m using the tutorial here):

jQuery(function($){
    $('#filter').submit(function(){
        var filter = $('#filter');
        $.ajax({
            url:filter.attr('action'),
            data:filter.serialize(), // form data
            type:filter.attr('method'), // POST
            beforeSend:function(xhr){
                filter.find('button').text('Processing...'); // changing the button label
            },
            success:function(data){
                filter.find('button').text('Apply filter'); // changing the button label back
                $('#response').html(data); // insert data
            }
        });
        return false;
    });
});

Any idea where the problem might be? Many thanks!

0
, , , Kristyna Sulcova 3 years 2020-06-08T10:11:35-05:00 0 Answers 88 views 0

Leave an answer

Browse
Browse