Ondersteuning » Algemeen WordPress » pre_get_posts

  • pagemaecker

    (@pagemaecker)


    Ik tracht het dubbel uitvoeren van de query te voorkomen. Om de zaak werkend te krijgen gebruik ik de volgende query:

      // Set up the query arguments
      $args = array (
        'post_type' => 'jhk_story',   // what type you want to display
        'posts_per_page' => 9,        // display 9 posts per page
        'cat' => 8,                   // category 8 is 'Levensverhaal'  
      );
    
      // Create a new WP_Query object and pass arguments
      $stories = new WP_Query( $args );
    
    /* Alleen om het resultaat van de query te inspecteren
      echo '<pre>';
        print_r($stories);
      echo '</pre>';
    

    Dit geeft een acceptabel result zoals in de link is te zien.

    Wil ik de ‘pre_get_posts’ weg bewandelen dan gaat het fout.
    Dit is de selectie: (staat in functions.php)

    
    function jhk_modify_main_query_page_stories ($query) {
    	// Must run on page: page-jhk-stories only, so:
    	$target_page = 'verhalen';
    
    	if ( ! is_admin()
    		&& $query->is_main_query()
    		&& $target_page === $query->get( 'pagename')) {
       		$query->set('post_type', 'jhk_story');   // what type you want to select
       		$query->set('category__in',  array( 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 ));
        	$query->set('posts_per_page', 9 );
    	}
    }
    // Hook this function to the pre_get_posts action
    add_action('pre_get_posts', 'jhk_modify_main_query_page_stories');
    

    Inspectie van het resultaat van de query lijkt niet mogelijk; er is geen $query of zoiets dat ik kan benaderen.
    Daarnaast toont wp nu ineens de pagina index.php en die is leeg; waarom is dat?
    Laat ik de regel: $query->set('post_type', 'jhk_story'); // what type you want to select weg dan krijg ik weer gewoon de pagina zoals in de link, maar ZONDER posts.
    Waar en Hoe ga ik hier de mist in?

    De pagina waar ik hulp bij nodig heb: [log in om de link te zien]

  • Het onderwerp ‘pre_get_posts’ is gesloten voor nieuwe reacties.