[wp-hackers] wp-hackers Digest, Vol 66, Issue 101
Kris Young
KrisY at tbs.uk.com
Wed Jul 28 07:50:24 UTC 2010
This seems to work. I need to test it a little more (and handle for no
results) but at first impressions, this is exactly it.
Thanks a lot Mike!
Kris
-----Original Message-----
From: wp-hackers-bounces at lists.automattic.com
[mailto:wp-hackers-bounces at lists.automattic.com] On Behalf Of Mike
Schinkel
Sent: 26 July 2010 22:26
To: wp-hackers
Subject: Re: [wp-hackers] wp-hackers Digest, Vol 66, Issue 101
Oops, I meant to include this link to a standalone file that you can
download to your website root to demonstrate this with your own
post_type and taxonomy:
http://gist.github.com/491202
-Mike
On Jul 26, 2010, at 4:56 PM, Mike Schinkel wrote:
> Hi Kris:
>
> I was intrigued to find a solution for "taxonomy=clients" and
"term=any" where "any" is a wildcard (WP_Query() supports "any" as a
wildcard for post_types but not for terms of a taxonomy.)
>
> Here's a hook that adds an "any" wildcard for terms for a taxonomy
assuming some other plugin didn't muck with the " AND 0 " inserted into
the WHERE clause when a taxonomy term doesn't match:
>
> add_action('posts_where','my_posts_where',10,2);
>
> function my_posts_where($where,$query) {
> if (isset($query->query_vars['taxonomy']) &&
$query->query_vars['term']=='any') {
> global $wpdb;
> $tt = $wpdb->term_taxonomy;
> $tr = $wpdb->term_relationships;
> $where .= $wpdb->prepare(" AND {$wpdb->posts}.ID IN (
> SELECT object_id FROM
$tr
> INNER JOIN $tt ON
$tt.term_taxonomy_id = $tr.term_taxonomy_id
> WHERE $tt.taxonomy=%s)
",$query->query_vars['taxonomy']);
> $where = str_replace(' AND 0 ','',$where);
> }
> return $where;
> }
>
> Your query for this would look like this:
>
> $posts = new
WP_Query("post_type=portfolio_item&taxonomy=clients&term=any&posts_per_p
age=-1");
>
> Or like this:
>
> $posts = new WP_Query(array(
> 'post_type' => 'portfolio_item',
> 'taxonomy' => 'clients',
> 'term' => 'any',
> 'posts_per_page' => -1,
> ));
>
> It works but unfortunately it's not very robust because of the need to
remove the " AND 0 " from the WHERE clause because there are other
reasons get_posts() adds " AND 0 ". If query natively supported
"term=any" or at least if there was a hook in /wp-includes/query.php
(lines 2049 and 2068) that allowed us to target this specifically it
might be better; if any of the core team agree I'll add a ticket to
trac.
>
> Alternate, maybe someone else knows a better way I didn't discover?
>
> -Mike
>
>
> On Jul 26, 2010, at 10:53 AM, Kris Young wrote:
>
>> I was as nice as I could be in my original mail without getting
>> frustrated - it really helps though that someone else is having the
same
>> problem though. I honestly think this whole process was a lot more
>> complicated than it should have been.
>>
>> Thanks for your solution - I will do my best to take a look at it
today,
>> and will let you know when I make some progress. Thanks again, and
also
>> to Mike Schinkel for the same.
>>
>> Kris
>>
>> -----Original Message-----
>> From: wp-hackers-bounces at lists.automattic.com
>> [mailto:wp-hackers-bounces at lists.automattic.com] On Behalf Of Jared
>> Williams
>> Sent: 26 July 2010 14:23
>> To: wp-hackers at lists.automattic.com
>> Subject: Re: [wp-hackers] wp-hackers Digest, Vol 66, Issue 101
>>
>> I have a wp_nav_menu, and it has two top level pages that have a
bunch
>> of
>> terms I've created for two custom taxonomies, which are for the two
top
>> level pages. I'm trying to figure out how I can hide the terms from
the
>> drop
>> down menu I made that shows the terms, if there are no posts assigned
to
>> a
>> term of the taxonomies. Is this possible? It doesn't seem like it is.
>>
>>
>> As for Kris Young's question about showing all posts of a taxonomy,
this
>> is
>> a problem I ran into as well, and searched for a long time and found
it
>> very
>> hard to figure out.
>>
>> What I managed to do is list all terms for a taxonomy, and all the
posts
>> for
>> each term individually. You may be able to hack this to do what
you're
>> trying to do since it is the same as what I needed to do I just
didn't
>> have
>> time to make it list only the posts for the taxonomy.
>>
>>
>> <?php
>> // Create list of taxonomy terms and list the posts under each term
>> $post_type = 'post';
>> $tax = 'your_custom_taxonomy';
>> $tax_terms = get_terms( $tax );
>> if ($tax_terms) {
>> foreach ($tax_terms as $tax_term) {
>> $args = array(
>> 'post_type' => $post_type,
>> "tax" => $tax_term->slug,
>> 'post_status' => 'publish',
>> 'posts_per_page' => -1,
>> 'caller_get_posts'=> 1
>> );
>>
>> $my_query = null;
>> $my_query = new WP_Query($args);
>>
>> if( $my_query->have_posts() ) : ?>
>>
>> <h2 class="breadcrumb">All <?php echo $tax; ?> Posts For
>> <?php
>> echo $tax_term->name; ?></h2>
>> <ul class="taxlist">
>> <?php while ( $my_query->have_posts() ) :
>> $my_query->the_post();
>> ?>
>>
>> <li id="post-<?php the_ID(); ?>">
>> <a href="<?php the_permalink(); ?>" rel="bookmark"
>> title="Permanent Link to <?php the_title_attribute(); ?>"><?php
>> the_title();
>> ?></a>
>> </li>
>>
>>
>> <?php endwhile; // end of loop ?>
>> </ul>
>>
>> <?php if( function_exists('wp_pagenavi')) { wp_pagenavi();
}
>> else { ?>
>> <div class="navigation clearfix">
>> <div class="alignleft"><?php
>> next_posts_link('«
>> Previous Entries') ?></div>
>> <div class="alignright"><?php
>> previous_posts_link('Next
>> Entries »') ?></div>
>> </div>
>> <?php } ?>
>>
>> <?php else : ?>
>>
>> <h2 class="title">Oops</h2>
>> <p>Looks like something is missing...</p>
>>
>> <?php endif; // if have_posts()
>> wp_reset_query();
>>
>> } // end foreach #tax_terms
>> }
>> ?>
>>
>> Hope this helps.
>>
>> Jared Williams
>>
>>
>> On Mon, Jul 26, 2010 at 8:00 AM,
>> <wp-hackers-request at lists.automattic.com>wrote:
>>
>>> Send wp-hackers mailing list submissions to
>>> wp-hackers at lists.automattic.com
>>>
>>> To subscribe or unsubscribe via the World Wide Web, visit
>>> http://lists.automattic.com/mailman/listinfo/wp-hackers
>>> or, via email, send a message with subject or body 'help' to
>>> wp-hackers-request at lists.automattic.com
>>>
>>> You can reach the person managing the list at
>>> wp-hackers-owner at lists.automattic.com
>>>
>>> When replying, please edit your Subject line so it is more specific
>>> than "Re: Contents of wp-hackers digest..."
>>>
>>>
>>> Today's Topics:
>>>
>>> 1. Re: Custom post types - a multitude of problems (Mike Schinkel)
>>> 2. Querying posts of another WordPress install (Ashish Saini)
>>> 3. Re: Querying posts of another WordPress install (Ashish Saini)
>>> 4. Re: Querying posts of another WordPress install (Aaron Jorbin)
>>>
>>>
>>>
----------------------------------------------------------------------
>>>
>>> Message: 1
>>> Date: Mon, 26 Jul 2010 06:06:14 -0400
>>> From: Mike Schinkel <mikeschinkel at newclarity.net>
>>> Subject: Re: [wp-hackers] Custom post types - a multitude of
problems
>>> To: wp-hackers at lists.automattic.com
>>> Message-ID: <F70451A1-2EFF-4911-BD5C-ACC86CF452E7 at newclarity.net>
>>> Content-Type: text/plain; charset=us-ascii
>>>
>>> On Jul 26, 2010, at 5:20 AM, Kris Young wrote:
>>>> I need to output the contents (all posts, all content of those
>> posts) of
>>>> a specific custom category (taxonomy) and I have no idea how to get
>> it
>>>> done. All I want is a page that outputs all the posts for a certain
>>>> category (and that category only) that I created using this code:
>>>>
>>>> register_taxonomy("clients", array("portfolio_item"),
>>>> array("hierarchical" => true, "label" => "Clients",
"singular_label"
>> =>
>>>> "Client", "rewrite" => array('slug'=>'portfolio_item')));
>>>>
>>>> Yes, that part was simple, but for some reason my custom taxonomy
is
>>>> completely separate from the rest of the site and irretrievable.
>> Can't
>>>> figure out for the life of me how to do this.
>>>
>>> To start, I think you have your taxonomy registration wrong. (FWIW
my
>>> preference would be to go with a singular for the taxonomy name,
e.g.
>>> "client" but I'll leave yours as is):
>>>
>>> $labels = array(
>>> 'name' => _x( 'Clients', 'taxonomy general name' ),
>>> 'singular_name' => _x( 'Client', 'taxonomy singular name' ),
>>> 'search_items' => __( 'Search Clients' ),
>>> 'all_items' => __( 'All Clients' ),
>>> 'parent_item' => __( 'Parent Client' ),
>>> 'parent_item_colon' => __( 'Parent Client:' ),
>>> 'edit_item' => __( 'Edit Client' ),
>>> 'update_item' => __( 'Update Client' ),
>>> 'add_new_item' => __( 'Add New Client' ),
>>> 'new_item_name' => __( 'New Client Name' ),
>>> );
>>>
>>> register_taxonomy("clients", array("portfolio_item"),array(
>>> "hierarchical" => true,
>>> "labels" => $labels,
>>> "public" => true,
>>> "show_ui" => true,
>>> "query_var" => "clients",
>>> "rewrite" => array('slug'=>'client'),
>>> ));
>>>
>>> Many of these options will default but I went ahead and listed them
>> all.
>>> Read more here:
>>>
>>> http://codex.wordpress.org/Function_Reference/register_taxonomy
>>>
>>> As for the rest of your question, I'm unclear. Do you want all
>> Portfolio
>>> Items that have *any* clients, or a specific client? For a specific
>> client
>>> i.e. "john-smith" I think this would be what you need (though I
>> haven't run
>>> the code so it may have typos):
>>>
>>> <?php
>>> $portfolio_items = new
>>>
>>
WP_Query('post_type=portfolio_item&taxonomy=clients&term=john-smith&post
>> s_per_page=-1');
>>> if ( $portfolio_items->have_posts() ):
>>> while ( $portfolio_items->have_posts() ) :
>>> $portfolio_items->the_post(); ?>
>>> <h2 id="post-<?php the_ID(); ?>" <?php post_class();
>>> ?>><?php the_title(); ?></h2>
>>> <?php the_content();
>>> endwhile;
>>> endif;
>>>
>>> If you want to get all portfolio items that have *any* clients I've
>>> actually not done that before so I'll have to let someone else
answer.
>>>
>>> HTH.
>>>
>>> -Mike
>>>
>>> ------------------------------
>>>
>>> Message: 2
>>> Date: Mon, 26 Jul 2010 17:08:30 +0530
>>> From: Ashish Saini <ashishsainiashfame at gmail.com>
>>> Subject: [wp-hackers] Querying posts of another WordPress install
>>> To: wp-hackers <wp-hackers at lists.automattic.com>
>>> Message-ID:
>>> <AANLkTi=CHq9bUukSa19MgJVSUU1CuQYfzUj6RBvmy3NS at mail.gmail.com>
>>> Content-Type: text/plain; charset=ISO-8859-1
>>>
>>> Hi,
>>>
>>> Is there any way that I can query posts from another WordPress
install
>>> residing in the same database? I know it can be done via SQL queries
>> but is
>>> there any workaround hacking my way along with API?
>>>
>>> Thanks & Regards
>>> Ashish Saini aka Ashfame
>>> (Deserve Before You Desire)
>>> Homepage : http://www.ashfame.com | Blog : http://blog.ashfame.com |
>>> Twitter
>>> : http://twitter.com/ashfame
>>>
>>>
>>> ------------------------------
>>>
>>> Message: 3
>>> Date: Mon, 26 Jul 2010 17:12:22 +0530
>>> From: Ashish Saini <ashishsainiashfame at gmail.com>
>>> Subject: Re: [wp-hackers] Querying posts of another WordPress
install
>>> To: wp-hackers <wp-hackers at lists.automattic.com>
>>> Message-ID:
>>> <AANLkTimmte-eFUkmk2w3KsaZpWkHCKtD=pxU4OnPj0XA at mail.gmail.com>
>>> Content-Type: text/plain; charset=ISO-8859-1
>>>
>>> I think this can be done with the help of setup_postdata() by
>> populating
>>> the
>>> fields as explained here -
>>>
>>
http://codex.wordpress.org/Displaying_Posts_Using_a_Custom_Select_Query
>>>
>>> Right? And is this the best approach?
>>>
>>> Thanks & Regards
>>> Ashish Saini aka Ashfame
>>> (Deserve Before You Desire)
>>> Homepage : http://www.ashfame.com | Blog : http://blog.ashfame.com |
>>> Twitter
>>> : http://twitter.com/ashfame
>>>
>>>
>>> On Mon, Jul 26, 2010 at 5:08 PM, Ashish Saini
>>> <ashishsainiashfame at gmail.com>wrote:
>>>
>>>> Hi,
>>>>
>>>> Is there any way that I can query posts from another WordPress
>> install
>>>> residing in the same database? I know it can be done via SQL
queries
>> but
>>> is
>>>> there any workaround hacking my way along with API?
>>>>
>>>> Thanks & Regards
>>>> Ashish Saini aka Ashfame
>>>> (Deserve Before You Desire)
>>>> Homepage : http://www.ashfame.com | Blog : http://blog.ashfame.com
|
>>>> Twitter : http://twitter.com/ashfame
>>>>
>>>
>>>
>>> ------------------------------
>>>
>>> Message: 4
>>> Date: Mon, 26 Jul 2010 07:56:17 -0400
>>> From: Aaron Jorbin <aaron at jorb.in>
>>> Subject: Re: [wp-hackers] Querying posts of another WordPress
install
>>> To: wp-hackers at lists.automattic.com
>>> Message-ID:
>>> <AANLkTin6x+4NT6E6bxR=1Xq43D6txPhT0et2xnK_45Nt at mail.gmail.com>
>>> Content-Type: text/plain; charset=ISO-8859-1
>>>
>>> Is this using Multisite? If so, you can use switch_to_blog -
>>> http://codex.wordpress.org/WPMU_Functions/switch_to_blog and it's
>>> counterpart restore_current_blog -
>>> http://codex.wordpress.org/WPMU_Functions/restore_current_blog to
move
>>> around use the api.
>>>
>>>
>>>
>>> http://aaron.jorb.in
>>> twitter: twitter.com/aaronjorbin
>>>
>>>
>>> On Mon, Jul 26, 2010 at 7:42 AM, Ashish Saini
>>> <ashishsainiashfame at gmail.com>wrote:
>>>
>>>> I think this can be done with the help of setup_postdata() by
>> populating
>>>> the
>>>> fields as explained here -
>>>>
>>
http://codex.wordpress.org/Displaying_Posts_Using_a_Custom_Select_Query
>>>>
>>>> Right? And is this the best approach?
>>>>
>>>> Thanks & Regards
>>>> Ashish Saini aka Ashfame
>>>> (Deserve Before You Desire)
>>>> Homepage : http://www.ashfame.com | Blog : http://blog.ashfame.com
|
>>>> Twitter
>>>> : http://twitter.com/ashfame
>>>>
>>>>
>>>> On Mon, Jul 26, 2010 at 5:08 PM, Ashish Saini
>>>> <ashishsainiashfame at gmail.com>wrote:
>>>>
>>>>> Hi,
>>>>>
>>>>> Is there any way that I can query posts from another WordPress
>> install
>>>>> residing in the same database? I know it can be done via SQL
>> queries
>>> but
>>>> is
>>>>> there any workaround hacking my way along with API?
>>>>>
>>>>> Thanks & Regards
>>>>> Ashish Saini aka Ashfame
>>>>> (Deserve Before You Desire)
>>>>> Homepage : http://www.ashfame.com | Blog : http://blog.ashfame.com
>> |
>>>>> Twitter : http://twitter.com/ashfame
>>>>>
>>>> _______________________________________________
>>>> wp-hackers mailing list
>>>> wp-hackers at lists.automattic.com
>>>> http://lists.automattic.com/mailman/listinfo/wp-hackers
>>>>
>>>
>>>
>>> ------------------------------
>>>
>>> _______________________________________________
>>> wp-hackers mailing list
>>> wp-hackers at lists.automattic.com
>>> http://lists.automattic.com/mailman/listinfo/wp-hackers
>>>
>>>
>>> End of wp-hackers Digest, Vol 66, Issue 101
>>> *******************************************
>>>
>>
>>
>>
>> --
>> Thank you,
>>
>> Jared Williams
>> Web/Graphic Designer
>> Tweeaks.com | New2WP.com
>> _______________________________________________
>> wp-hackers mailing list
>> wp-hackers at lists.automattic.com
>> http://lists.automattic.com/mailman/listinfo/wp-hackers
>> _______________________________________________
>> wp-hackers mailing list
>> wp-hackers at lists.automattic.com
>> http://lists.automattic.com/mailman/listinfo/wp-hackers
>
_______________________________________________
wp-hackers mailing list
wp-hackers at lists.automattic.com
http://lists.automattic.com/mailman/listinfo/wp-hackers
More information about the wp-hackers
mailing list