logo

$20
Show only children of certain page on edit-pages.php

Hi,

On wp-admin/edit-pages.php I need to show only those pages, that are children of page id N.

I thought that filter on edit-pages.php line 132 should do the trick:
$query = apply_filters('manage_pages_query', $query);
wp($query);
But i'm stuck with it's strange behavior:
it works fine with 'posts_per_page'=>n
but it ignores 'post_parent'=>n

Could anyone point out what i am missing here?

UPDATE: i managed to get the wanted result by using "posts_where_request" filter in query.php, bud i'd still prefer something that is in edit-pages.php (filter or action).

Valentinas Bakaitis | 04/05/10 at 4:21am | Edit


(2) Possible Answers Submitted...

  • avatar
    Last edited:
    04/05/10
    8:48am
    Brian Richards says:

    Is there a reason you're restricting the page listing by modifying core? If you're only looking to restrict what a user has access to editing, I HIGHLY recommend wp-role-scoper. It gives you very fine-tuned controls as to which pages, posts, categories, etc a user can see and which ones they can edit. Furthermore, it let's you set this access level both user-by-user an by group as well (you can create as many user groups as you like).

    I used it on http://phoenixhouse.org to only allow regional editors to have access to their region and no others, and then again so that regional contributors could only suggest new/revised content without actually publishing anything.

    Hope this helps!

    Previous versions of this answer: 04/05/10 at 8:48am

    • 04/05/10 9:18am

      Valentinas Bakaitis says:

      Just to be clear: I'm not modifying any core files, those filters I mentioned above are wordpress core filters, not mine. I'm just looking for a filter, that could give me control over the query, that fetches all pages for editing.

      Currently I am using a filter, which is located at query.php, but as you can guess this filter is applied to all queries, and i would like to use the filter, that is applied only to the query that fetches pages for editing.

      Thanks for the plug-in, but I am looking only for a filter (or action hook?), which is a lot simpler solution in my case.

    • 04/05/10 9:42am

      Brian Richards says:

      Ah, got it. Unfortunately I am not a filter/action guru so I can be of no more service. Best of luck!

  • avatar
    Last edited:
    04/06/10
    4:02am
    Buzu B says:

    an easy way to do it, though it doesn't use filters, is to use an if() to unset elements of $posts if they do not match our criteria. I have this:

    <?php
    foreach($posts as $post=>$value){
    if($value->post_parent != 2){
    unset($posts[$post]);
    }
    }
    ?>


    and does the job; it shows only those pages whose parent id is 2. In order for this fix to work you need to find the line that reads:

    <?php if ($posts) { ?>


    on your edit-pages.php file, and modify the if() statement according to your needs. The line you will have to modify is on line 186, at least that is on my edit-pages.php file, but it might be different on yours because my wp instalation is a bit old. (need to update, I know.)

    If your really, really need it to be using filters, let me know, we can look further into it.

    • 04/05/10 12:13pm

      Valentinas Bakaitis says:

      This is interesting idea, but I need to achieve the result without editing core files. So i need to use either filter or action hook.

    • 04/05/10 1:42pm

      Buzu B says:

      Ok, I have been playing around with some values and filters. Finally I came up with a piece of code that does what you need using a filter. Now, before we proceed, I would like to say that I think this answer is worth more than 10 bucks, but I leave it to you to decide, the answer is there anyways.

      I also want to point out that this is more a hack than a correct use of the filter I'm using here. In other words, I'm using ( and maybe abusing) a filter that has a different purpose to accomplish your goal.

      Here is the code, I currently have it placed in functions.php on my current themes folder, where is where you should place it just to stick to wp specification and development recommendations.


      add_filter('manage_pages_columns', 'scompt_custom_columns');
      function scompt_custom_columns($defaults) {
      global $posts;
      foreach($posts as $post=>$value){
      if($value->post_parent != 2){
      unset($posts[$post]);
      }
      }
      return $defaults;
      }


      I repeat, this solution is using a filter whose purpose is not to modify the list of pages in the edit section. I actually don't think there is a filter to do just that.

    • 04/06/10 4:00am

      Valentinas Bakaitis says:

      Thanks for info. Unfortunately i can't spend much on this, but I'll rise it to $20.

      Best of luck!

This question has expired.





Current status of this question: Completed