Intersect plugin

I decided to switch to WordPress so I could have categories in my blog and I could get RSS feeds on only one of them to be imported in different planets… But I had posts in both French and English in my Gentoo category. So I check if I could say “only take posts from category english and gentoo”… But if I select two categories, I get a union, not an intersection. So I wrote this little plugin. To have an intersection, you can do ?cat=x,y&intersect=1 … Example http://www.tester.ca/?cat=2,10&intersect=1 for my English & Gentoo posts. Also, this only works with category numbers.

File is here, dont forget to rename it .php to remove the .txt extension. Put in in wp-content/plugins/ and enable it..

Update: I just upgraded to 2.5 and I think it works as is. Please report any problems

This Post Has 20 Comments

  1. INF3300

    On attend toujours ton travail de INF3300 Olivier…

  2. Tester

    Kenyon, of course, corrected, thanks 😉

  3. Jason Pearce

    Thanks so much. I’ve been playing with several other plugins to get this functionality. As I’m sure you are aware, you can interset more than two categories; e.g. /?cat=2,10,15&intersect=1.

  4. Tester

    yes yes.. you can intersect as many categories as you want…

  5. adeh

    Hi, this is exactly what I needed. I made a small change though to use $wp_query->query_vars instead of $_GET because I am using wordpress more as a CMS, and embedding certian categories in certian pages.

  6. David Esrati

    Has anyone used this plug-in with WP 2.0? And- what are the other plug-ins that Jason has tried?
    Thanks

  7. Tester

    Hmm, I will port it to WP 2.0 when I move my blog over… I dont know when…

  8. David Esrati

    Hi-
    Does anyone have a working example of this plug-in on their site? WP 1.5?
    It doesn’t seem to work in 2.0 installs-
    and I can’t tell on Tester’s site (because I’m a stupid American and only took one year of French).

    Thanks!

  9. Benoit

    Hi

    First of all, thanks for this! (Not sure I fully understand how it gets called by just adding intersect paramater… but never mind, I’m not a php dev.)

    I was wondering, would you have a variant of this that would return the NUMBER of posting in the given intersection. This would greatly help us to be able to see that amongst a list of complicated intersections, only x actually would yield data..

    Many thanks

    Benoit

  10. E Becker

    I’m using WordPress 2.02 and have a lot of categories listed as children of other categories; these seem to be causing an issue with Intersect. Everytime I search on a category that has child categories, I get an SQL error WordPress database error: [Unknown table [VARIATION ON ‘p2c{i}’] in where clause] (“VARIATION ON” indicating where the error changes based on the number of categories chosen).

    It seems it’s add in all the child categories of the chosen parent category to the WHERE part of the SQL statement, and choking on them (these extra tables not included in the JOIN part, so perhaps this is why?).

    Obviously, my knowledge of php and SQL is remedial at best, so I hope this explains the issue I’m having clearly.

    Thanks for the great plugin; hopefully I can get this worked out and obviously help is greatly appreciated!

    — E

  11. Evan

    I’m having the same issue as E Becker above. When there are more than 2 levels of categories, it breaks the query. Here’s the error:

    WordPress database error: [Unknown table ‘p2c2’ in where clause]
    SELECT DISTINCT * FROM wp_posts LEFT JOIN wp_post2cat AS p2c0 ON (wp_posts.ID = p2c0.post_id) LEFT JOIN wp_post2cat AS p2c1 ON (wp_posts.ID = p2c1.post_id) WHERE 1=1 AND (p2c0.category_id = 25 AND p2c1.category_id = 47 AND p2c2.category_id = 4) AND post_date_gmt

  12. tricky

    i wonder if this works on WP 2.1+

    works very fine for me on 2.0, and i’d like to upgrade but intersect is a must for me so i need to know…

  13. Ken

    Do you have an example of how the plugin gets called? I am trying to call the “cat=2,19&intersect=1 within a query_posts parameter but it doesn’t work.

  14. Tester

    This is exactly how it should work… I can’t upgrade past 2.1 because my host doesnt have a recent enough version of mysql.

  15. David Basulto

    Will this work on 2.5?

  16. Jeff

    I couldn’t get this plugin working for me on 2.5.1. But after then digging more in the codex I found this example that does work to create an intersection of 2 categories. The codex says this started with 2.3:

    query_posts(array(‘category__and’=>array(1,3)));

  17. baytelmobile

    would you have a variant of this that would return the NUMBER of posting in the given intersection.

    1. ocrete

      No, but the code is pretty simple.

Leave a Reply to baytelmobile Cancel reply