• Resolved Jessi Gurr

    (@jessigurr)


    Nice plugin!

    We have this installed, using a few different post types. We have custom post types set up, with Hierarchy turned on. (Essentially, this allows us to move a giant number of pages out of the “Pages” section for easier CMS – ex. “Departments” for a county website with 30+ departments, each having their own subpages).

    We need to be able to display a list of posts (title, permalink) of a given post type, with parent, ordered alphabetically, depth = 1.

    In other words, we need to do exactly this, but for Custom Post Types:

    wp_list_pages ('child_of=15&depth=1&sort_column=post_title&sort_order=asc');

    Custom Post Types won’t work with the wp_list_pages … and we have tried a number of plugins to display posts of a certain type – but cannot get them to work with the hierarchical structure (depth=1).

    Suggestions would be greatly appreciated!

    https://wordpress.org/plugins/custom-post-type-ui/

Viewing 10 replies - 1 through 10 (of 10 total)
  • Plugin Contributor Michael Beckwith

    (@tw2113)

    The BenchPresser

    I don’t know how php skilled you are, so let me know if you need some more help with this.

    I have this custom function for you, and it creates a new WP_Query and returns that object. Rename the function to whatever you need.

    function jessi_custom_query( $args = '' ) {
    	$query_args = wp_parse_args( $args, array() );
    
    	$query = new WP_Query( $query_args );
    	return $query;
    }

    You can pass in similar arguments like you can with wp_list_pages, but they will need to match the arguments for the WP_Query class. http://codex.wordpress.org/Class_Reference/WP_Query

    So, for example, we have the code below. Fill in the fields as necessary.

    $foobar = jessi_custom_query( 'post_type=departments&post_parent=15&orderby=title&order=ASC' );

    $foobar will be the WP_Query object, and you’ll need to loop over it in a way similar to the examples in the WP_Query codex page.

    Thread Starter Jessi Gurr

    (@jessigurr)

    Thank you for your reply! I was stuck for a bit but got this to work!

    Here’s my code – hopefully it helps someone else 🙂

    In functions.php I added:

    function dept_query( $args = '' ) {
    	$query_args = wp_parse_args( $args, array() );
    
    	$query = new WP_Query( $query_args );
    	return $query;
    }

    And then in my template file I’ve added:

    <?php
    // the query
    $listdepartments = dept_query( 'post_type=departments&post_parent=14&orderby=title&order=ASC&depth=1&posts_per_page=-1' );
    
    // The Loop
    if ( $listdepartments->have_posts() ) {
    	echo '<ul>';
    	while ( $listdepartments->have_posts() ) {
    		$listdepartments->the_post();
    	echo '<li><a href="';
    	the_permalink();
    	echo '">';
    	the_title();
    	echo '</a></li>';
    	}
    	echo '</ul>';
    } else {
    	   _e( 'Sorry, no posts matched your criteria.' );
    }
    /* Restore original Post Data */
    wp_reset_postdata();
    ?>

    Thank you so much. I really appreciate your help!

    Thread Starter Jessi Gurr

    (@jessigurr)

    Thank you so much. I really appreciate your help!

    Plugin Contributor Michael Beckwith

    (@tw2113)

    The BenchPresser

    Welcome.

    Hi Michael and Jessi,

    By finding this great post I came close to the solution, but not yet completely.

    I have an archive page that lists only the parent posts. I created the custom post type with your plugin custom post type UI. As my site works on headway them and I control my css and visual styling from there, is there anything you can suggest?

    http://fourhourbody.nl/kennisbank/

    Plugin Contributor Michael Beckwith

    (@tw2113)

    The BenchPresser

    FredW, what’s the actual issue you’re running into? You never specify that part.

    I am not that experienced with developing websites, so I try my best to explain this well:

    http://fourhourbody.nl/kennisbank/ this is my custom post type archive page

    it currently lists both parent and child pages, and I only want this archive page to display parent pages.

    As I understand it, the listing of the posts here is generated by some code like wp_list_pages ( something )

    Now my problem is, I don’t know how to adapt the existing list as such that the layout (including the custom bullet points) do not change, but only that the parent pages are listed. As I am using Headway themes to create my website, I assume that the function.php is ‘generated’ by Headway, and I think I have to create a child theme and then add or eliminate some code to make this adaption? I rather solve this within Headway without changing code or creating a child theme. Is this possible?

    Hopefully I expressed this clear enough:)

    Plugin Contributor Michael Beckwith

    (@tw2113)

    The BenchPresser

    The code snippets above that I typed up just mimic how wp_list_pages accepts query arguments.

    What you need is to set your query arguments to only query for top level posts by setting post_parent to 0

    http://codex.wordpress.org/Class_Reference/WP_Query#Post_.26_Page_Parameters

    I definitely recommend a child theme when possible, but you could create your own little plugin as well as necessary.

    Can you tell me where exactly I can set the query argument to only query for top level posts? I have to say I do not know which file in Filezilla contains the code that generates the custom post type archive page?

    The template file is probably generated by Headway Theme as Headway is a ‘drag and drop’ theme with an interface. I have very limited coding skills.

    An alternative solution which I tried is that I actually got the menu to work by inserting a ‘custom code block’ within Headway containing the following code

    <h1> Kennisbank</h1><p></p>
    
    <?php
    $args = array(
      'depth'=> 1,
      'post_type'=>'kennisbank',
      'title_li'=> __('Kennisbank')
      );
    wp_list_pages( $args );
    ?>

    However, this results in a list without styling and where it is not ‘visually integrated’ with the other pages of my website. I looked on ‘styling wp_list_pages’ with css, but I don’t have any clue.

    Any input from your side would be great. Thanks a lot for your posting:)

    PS. This is the link to my custom post type archive page: http://bit.ly/1wG3IQs

    You can see from the child article pages of my custom post type ‘kennisbank’ how the page shoud visually look.

    Plugin Contributor Michael Beckwith

    (@tw2113)

    The BenchPresser

    The link I provided in my last reply is for when interacting with arguments for a new WP_Query instance directly, instead of with trying to use wp_list_pages.

    It’d be one of the parts passed in to the code in this reply example https://wordpress.org/support/topic/how-to-list-posts-of-parent-with-depth-1?replies=10#post-5873879

    You would then loop over the resulting variable you assign as if it were “The Loop”, and could control the markup/output as much as you wanted.

Viewing 10 replies - 1 through 10 (of 10 total)
  • The topic ‘How to list posts of Parent with Depth = 1’ is closed to new replies.