bgame-hunter / wordpress-custom-content-type-manager

Automatically exported from code.google.com/p/wordpress-custom-content-type-manager
0 stars 0 forks source link

request_filter causing strange behavior: two posts with same title (in different categories and post-types) show up where they should only be one #360

Closed GoogleCodeExporter closed 8 years ago

GoogleCodeExporter commented 8 years ago
What steps will reproduce the problem? (Be specific enough so that someone
else can make the plugin fail for themselves. Remember: if the issue can't
be fixed if it can't be reproduced!)
See here:
http://alpha.primal-palate.com/blog/spaghetti-with-red-wine-sauce/

Note that instead of just one post, there are two:
http://alpha.primal-palate.com/blog/spaghetti-with-red-wine-sauce/  (a 
"regular" post-type in the "blog" category)
http://alpha.primal-palate.com/recipe/spaghetti-with-red-wine-sauce/  (a custom 
"recipe" post-type in various categories, but not in the blog category).

Perhaps I need a better/more specified permalink structure?

Does the problem continue if you disable all other plugins? (Conflicts
between plugins are easily the #1 cause of errors, so it's important to
isolate the issue):
Yes, I tried disabling all plugins, no change.

The fix is to comment out the add_filter(request, CCTM::request_filter).
I saw the comments in the code about how that function is hard to get right.
And I saw the comments in the listed bug reports about how commenting out that 
line fixes various bugs for other people, "if they don't need this 
functionality".  I am not sure if I need this functionality or not.

What does the request_filter do for me?  And if this is a useful thing to turn 
off, perhaps there could be a checkbox in the admin to turn it off, so this 
change will work across upgrades?

I am a PHP developer, and happy to help/work with you to figure out what is 
going on with this.

Please copy and paste the system information that appears in a yellow
textarea when you click on "Report a Bug" on any CCTM admin screen (this
includes the version of the
plugin, the version of PHP, the version of MySQL, a list of other active
plugins etc.):
*SYSTEM INFO* 
------------------------ 
Plugin Version: 0.9.5.11-pl
WordPress Version: 3.3.1
PHP Version: 5.3.10-1
MySQL Version: 5.1.61-2-log
Server OS: Linux
------------------------ 
ACTIVE PLUGINS: 
 * HTML in Category Descriptions v.1.1 []
 * Content Slide Plugin v.1.4.2 [http://www.snilesh.com/resources/wordpress/wordpress-plugins/wordpress-content-slide-plugin/]
 * GD Star Rating v.1.9.16 [http://www.gdstarrating.com/]
 * Jon Daley Event Calendar / Scheduler v.2.3.1 []
 * Jon Daley ReciPress v.1.9.1 []
 * Magazine Columns v.1.0.4 [http://bavotasan.com/downloads/magazine-columns-wordpress-plugin/]
 * My Calendar v.1.10.12 [http://www.joedolson.com/articles/my-calendar/]
 * Relevanssi Dashboard v.0.0.1 [http://gingerbreaddesign.co.uk/wordpress/plugins/relevanssi-dashboard-widget.php]
 * Relevanssi v.2.9.14 [http://www.relevanssi.com/]
 * Share and Follow v.1.80.3 [http://share-and-follow.com/wordpress-plugin/]
 * Fast Secure Contact Form v.3.1.5.1 [http://www.FastSecureContactForm.com/]
 * Email Login v.4.2.2 [http://dentedreality.com.au/projects/wp-plugin-email-login/]
 * WP Post Sorting v.1.2 [http://www.reflectionmedia.ro/2008/12/wp-post-sorting-plugin/]
 * Youtube Sidebar Widget v.1.1.8 [http://wordpress.org/extend/plugins/youtube-sidebar-widget/]
------------------------ 
CURRENT THEME: Paleo v.1.0 

Original issue reported on code.google.com by jonda...@gmail.com on 29 Mar 2012 at 10:55

GoogleCodeExporter commented 8 years ago
Hrm.  This appears to be a bug in wordpress rather than in your code.

After the request_filter is called, my query (object $q) in get_posts() looks 
like this:
Array
(
    [page] => 
    [name] => spaghetti-with-red-wine-sauce
    [category_name] => blog
    [post_type] => Array
        (
            [0] => post
            [1] => page
            [2] => recipe
            [3] => ingredient
        )
...

But, if I print out the SQL generated towards the bottom of that function, I 
get:
SELECT posts.* FROM posts WHERE 1=1 AND posts.post_name = 
'spaghetti-with-red-wine-sauce' AND posts.post_type IN ('post', 'page', 
'recipe', 'ingredient') ORDER BY posts.post_date DESC 

The category parameter wasn't added at all.  Perhaps wordpress doesn't support 
the permalink structure:  /%categoryname%/%postname%/ which I would have 
thought was a pretty common request.  This permalink structure works, but the 
category parameter is ignored.

Original comment by jonda...@gmail.com on 2 Apr 2012 at 3:39

GoogleCodeExporter commented 8 years ago
You may want to by-pass the request_filter() function inside of 
includes/CCTM.php (line 2123 or so), e.g.

public static function request_filter( $query ) {
    return $query;
}

And see if that affects the behavior -- that'd ensure that you are turning off 
the CCTM's modification on that filter.

The WP architecture here is really poor: a LOT of plugins try to tie into that 
filter, and the SQL query is not a great place to control behavior imo.

Original comment by ever...@fireproofsocks.com on 2 Apr 2012 at 3:50

GoogleCodeExporter commented 8 years ago
Ah, I see.  Wordpress does ignore the category names, and so enforces a unique 
slug per content-type, which also resolves the problem.

Perhaps this is related to:

http://code.google.com/p/wordpress-custom-content-type-manager/issues/detail?id=
10

Though my setup has a separate category per content-type, so I only need to be 
able to differentiate between categories, though differentiating between 
content-types would fix the problem for me as well.

And I'll include the magic words - I have a paying customer, so I could throw 
some money your way if you could help me out on this.

I'll keep digging through your code to see if I can figure out how to fix it on 
my own...

Original comment by jonda...@gmail.com on 2 Apr 2012 at 3:52

GoogleCodeExporter commented 8 years ago
I've also noticed some weird WP behavior between categories and post-types 
(sorta like "don't cross the beams").... seems like WP is a teenager who hasn't 
quite figured out its identity here... post-types and categories are 2 very 
different ways of organizing content.

If you would like to contract me for some work on this, then contact me via the 
email here: http://fireproofsocks.com/contact/

Original comment by ever...@fireproofsocks.com on 2 Apr 2012 at 3:58

GoogleCodeExporter commented 8 years ago
For those of you following along with the home game...

I talked with Everett and we extolled the virtues of global variables and the 
like...  :)

Everett explained some of WP's core to me, and I'm now looking to solve it in a 
quicky, hacky way, since the alternative is a long, hacky way.

One thing of note:
I request  /blog/spaghetti, which should uniquely point to a post, and 
is_single() is true, but the_loop returns multiple posts.

I've now made a single-post.php template and inside the loop I check to see if 
the post_type is actually a "post".  Crazy.

if(get_post_type() != "post")
    continue;

This fixes the immediate problem, though now I have a single-recipe, 
single-ingredient and single-post template, all of which exist only so I can 
check for their post-type.

Interestingly enough, the check in single-post is the only one that is needed, 
and that is due to the CCTM::request_filter function that changes the post_type 
to all public post_types if it isn't already set, and in the single-recipe 
case, the post_type is already specified, and so it isn't overridden by 
request_filter.

Perhaps request_filter should be changed so that it checks if_single() along 
with the rest of the if() checks?  That is similar to the bug fixes for 111 and 
112, though I tried that and is_single is false, so probably it hasn't been set 
yet, since the query hasn't been run.

Still poking around...

Original comment by jonda...@gmail.com on 2 Apr 2012 at 6:50

GoogleCodeExporter commented 8 years ago
So, here's the hack I've settled on for now.

I have just single template (single.php).

And my loop looks like this:

$object = get_queried_object();
while(have_posts()){
  the_post();

  if($object && $object->post_type != get_post_type())
       continue;

  get_template_part('content', get_post_type());
}

And then I can leave the request_filter as it exists in your released version.

Original comment by jonda...@gmail.com on 2 Apr 2012 at 7:00

GoogleCodeExporter commented 8 years ago
A bizarre "feature" of wordpress is that when using the custom URL permalink 
structure of /%categoryname%/%postname%/ the text between the first two slashes 
can be anything, and the request will still be valid.

I'll type up a bug report for wordpress, and see what they think of that.
I see no reason why:
/tasdaldjalskdjalsd/my-post/ returns the same result as /blog/my-post/

Original comment by jonda...@gmail.com on 2 Apr 2012 at 7:01

GoogleCodeExporter commented 8 years ago
Wow, this is illuminating.  I wonder if this could be solved by using both 
single-post.php and page.php in your theme... that way WP should be doing 
checks based on post-type somewhere upstream, thereby pre-empting the need for 
your manual checking of the post_type.  

The URL part of this is also enlightening... I'm not a fan of WP's mangling of 
URLs, and this is a beautiful case-in-point.  The post_name column has a 
non-unique slug for posts and pages (and custom post-types) and I wonder if the 
only checks WP does here is between posts and pages, and they kind of neglected 
the custom post types.  Perhaps the addition of the various post-type-specific 
theme files will tell...

Original comment by ever...@fireproofsocks.com on 2 Apr 2012 at 7:15

GoogleCodeExporter commented 8 years ago
I don't understand what you are saying in the first paragraph.

I could solve it with a single-post.php, but that would only remove the 
need for the get_queried_object() call, but instead have a 
if(get_post_type() == "post") inside the loop.

Your second paragraph sounds correct to me.  One way to solve it from your 
end would be to add a sanitize_title filter that checks the custom 
post-type titles in addition to the default check on the regular post 
titles and force them to be unique.  But, that results in 
redundantly-unique URLs:

/recipe/spaghetti-2/
/blog/spaghetti/

The main problem is that wordpress is not using the category (or any other 
tag presumably) that is in a custom permalink format.

Basically, wordpress doesn't allow any posts of type "post" to have the 
same slug, but does allow posts of other custom types to be the same.

I made a "test" category, and when I try to add a second post with the 
same title, I get;

/blog/spaghetti/ and /test/spaghetti-2/

so, those URLs work, but are annoying that the "2" is required there.

Original comment by jonda...@gmail.com on 2 Apr 2012 at 7:28

GoogleCodeExporter commented 8 years ago
Check out the holy grail if you haven't already: 
http://codex.wordpress.org/Template_Hierarchy

WordPress routes requests to different theme files, so if you happen to have a 
single-post.php file, then that file would get used to format the post if it 
was in fact a post that was being requested.  I'm operating on the assumption 
that somewhere WP is doing a check on the post-type already, and if you provide 
it with a dedicated theme file, it might avoid the problem of having 2 (or 
more) results show up for a single request.  In other words, instead of you 
having to do a check on the post-type inside your theme file, I'm wondering if 
you can tie into an if-statement that has already been run by WP.  Might be the 
wrong approach entirely, but worth a shot.

I'm just arm-chair philosophizing though... I'd have to reproduce this and 
start coding to properly identify solutions...

Original comment by ever...@fireproofsocks.com on 2 Apr 2012 at 7:43

GoogleCodeExporter commented 8 years ago
Yes, I know about the template hierarchy page, but yes, the check is still 
needed.  ie. I get my recipe post printed out from within single-post.php.

Original comment by jonda...@gmail.com on 2 Apr 2012 at 7:47

GoogleCodeExporter commented 8 years ago
What if you use a single-recipe.php template page?  See the sample templates 
for each post type.

Original comment by ever...@fireproofsocks.com on 2 Apr 2012 at 10:14

GoogleCodeExporter commented 8 years ago
Yeah, I tried that.  The single-recipe.php template page always shows the 
right thing, because in request_filter() you check for a non-blank 
post_type, and so don't add in the other types.

But, for a regular post, when the post_type defaults to blank, 
CCTM::request_filter adds in the other post types, thus causing there to 
be non-unique values for one postname.

Original comment by jonda...@gmail.com on 3 Apr 2012 at 2:45

GoogleCodeExporter commented 8 years ago
ugh.  That is one problematic filter.

Original comment by ever...@fireproofsocks.com on 3 Apr 2012 at 3:10

GoogleCodeExporter commented 8 years ago
I had to do some related work on those filters and now I can't reproduce the 
problem.  If you want to take a look at the dev branch and see if this fixes 
the problem... that'd be helpful.

Note that the vanilla blog post's URL will be something like :
http://alpha.primal-palate.com/spaghetti-with-red-wine-sauce/  (the blog/ bit 
not included).

Original comment by ever...@fireproofsocks.com on 26 Apr 2012 at 5:10

GoogleCodeExporter commented 8 years ago
I'm not sure why you are saying the /blog/ part shouldn't be there?
I use the "custom structure" for permalinks of: /%category%/%postname%/

which I believe is the core reason I'm having trouble with your plugin, that I 
am using custom permalinks with non-unique postnames, since they have different 
content-types, so non-unique postnames is allowed, where wordpress normally 
forces unique postnames.

Original comment by jonda...@gmail.com on 28 Apr 2012 at 1:33

GoogleCodeExporter commented 8 years ago
Ah, I reset my permalink structure.  NOW I've confirmed the wonkiness.  Sorry, 
I've been out of touch and off line dealing with family issues... trying to get 
the iron hot again.

Original comment by ever...@fireproofsocks.com on 29 Apr 2012 at 4:23

GoogleCodeExporter commented 8 years ago
I think I can fix this, but there will be problems any time there's a post-name 
that is identical to a category name.  The request filter comes in looking like 
one of these guys:

        Array ( [page] => '' [name] => my_name [category_name] => my_category_name )
        Array ( [page] => '' [name] => my_name [post_type] => my_post_type )

So the CCTM would have to do the following:

1. Prevent users from creating post-types that duplicate existing category 
names because that would cause problems in this case.
2. Rewrite the request filter so it gives precedence to one over the other in 
the case where permalink structures can trip things up (/%category%/%postname%/ 
in this case, but there are likely other instances).

#1 is easy enough, and I think the easiest approach for #2 is to bail on the 
filter if the 'category_name' node is set.  Otherwise the behavior is that the 
post-type with the name "my_name" is served up even if the 
my_category_name/my_name page is requested.

Original comment by ever...@fireproofsocks.com on 29 Apr 2012 at 3:50

GoogleCodeExporter commented 8 years ago
Ok, I believe the following fix corrects the chaos:

Committed revision 537921.

Original comment by ever...@fireproofsocks.com on 29 Apr 2012 at 4:28

GoogleCodeExporter commented 8 years ago
Hrm - I upgraded to 0.9.5.13-pl, and now /category/XXX doesn't show my custom 
types.

I'm looking into it now - if you have any quick ideas of hacks I can do to make 
it work, that would be great, because the site is now public, and it is broken. 
 :)

Original comment by jonda...@gmail.com on 23 May 2012 at 5:43

GoogleCodeExporter commented 8 years ago
I reverted to 0.9.5.11.  Revision  537921 broke things.

From the comments that are now in the file, it looks like you thought 
request_filter would only be used for feeds and archives?

But, it is also used for categories and maybe others?  My search box has 
hard-coded post and recipes (ie. I never try to search for both at the same 
time), so I wouldn't notice if there was an issue there.

I haven't tested it yet, but my guess is that my site cares about the 
if(!$query) part in the old code, unless $query is set by a URL like: 
/category/adsasdasd

I need to be done for today, but I can help test anything, and I'll look into 
the code at some point to see if I can fix it.  That request_filter function 
(at least the old version) looks fairly complex, in terms of trying not to 
break things when working on one part.

I wonder if a PhpUnit or some other test case system could be used so you would 
be able to easily test lots of cases whenever making a change to that function.

Original comment by jonda...@gmail.com on 23 May 2012 at 6:26

GoogleCodeExporter commented 8 years ago
Sorry this continues to be a problem.  Some behavior changed with the recent 
versions of WP, and the whole architecture of WP here drives me insane.  Yeah, 
unit testing would be awesome here...  I've got my list of tests to write: 
http://code.google.com/p/wordpress-custom-content-type-manager/wiki/PreLaunchChe
ckLists

I'll get CCTM back on front-burner as soon as a couple recent projects are 
done...

Original comment by ever...@fireproofsocks.com on 23 May 2012 at 6:50

GoogleCodeExporter commented 8 years ago
The child category pages fail on 0.9.5.13, e.g.

http://somesite.com/mammal/      <----- works
http://somesite.com/mammal/dog/   <---- no results

Original comment by ever...@fireproofsocks.com on 2 Jun 2012 at 4:08

GoogleCodeExporter commented 8 years ago
This one won't die.  The tags were messed up to.  I added this to the 
includes/CCTM.php request_filter() function line 2203:

        // Handle tag pages
        elseif (isset($query['tag'])) {
            $args = array( 'public' => true, '_builtin' => false );
            $public_post_types = get_post_types( $args );

            // Only posts get archives, not pages, so our first archivable post-type is "post"...
            $search_me_post_types = array('post');

            // check which have 'has_archive' enabled.
            foreach (self::$data['post_type_defs'] as $post_type => $def) {
                if ( isset($def['taxonomies']) && is_array($def['taxonomies']) && in_array('post_tag', $def['taxonomies'])) {
                    $search_me_post_types[] = $post_type;
                }
            }

            $query['post_type'] = $search_me_post_types;        
        }

Original comment by ever...@fireproofsocks.com on 5 Jun 2012 at 8:04

GoogleCodeExporter commented 8 years ago
I upgraded to .15 and I haven't seen anything broken yet.

Original comment by jonda...@gmail.com on 19 Jun 2012 at 11:42

GoogleCodeExporter commented 8 years ago
Hopefully that means this is fixed.  Let me know if there are issues and I'll 
write unit tests for those use cases.

Original comment by ever...@fireproofsocks.com on 19 Jun 2012 at 3:48

GoogleCodeExporter commented 8 years ago
I am on 0.9.6-pl, and I'm now seeing a bug with this again...  fun, fun...

I am not clear on why it is working in one place, and not in another:

These posts work correctly:
http://alpha.primal-palate.com/recipe/spaghetti-with-red-wine-sauce/
http://alpha.primal-palate.com/blog/spaghetti-with-red-wine-sauce/

These posts do not work (the first redirects to the second, rather than staying 
a separate post)
http://alpha.primal-palate.com/blog/basic-mashed-cauliflower/
http://alpha.primal-palate.com/recipe/basic-mashed-cauliflower/

I can't figure out why these two examples are acting differently.

Original comment by jonda...@gmail.com on 4 Jan 2013 at 3:16

GoogleCodeExporter commented 8 years ago
Aha, though I don't know why it matters:

if I change the date of the recipe/basic-mashed-cauliflower to be earlier than 
the blog post, then it works fine.

I guess the posts must be coming out of the database in chronological order, 
and then the filter is applied to distinguish between custom content types.

Original comment by jonda...@gmail.com on 4 Jan 2013 at 3:34

GoogleCodeExporter commented 8 years ago
Current version is 0.9.6.7. If you can update to the most recent version and 
provide steps to reproduce, then I can look at it further.

Original comment by ever...@fireproofsocks.com on 4 Jan 2013 at 3:34

GoogleCodeExporter commented 8 years ago
Ah - I guess the -pl version must be a development version I got from you? 
Unless I made it on my own, the "pl" doesn't sound like me.

I've upgraded.

Same problem:
http://alpha.primal-palate.com/blog/double-dark-chocolate-chip-cookies-with-chop
ped-walnuts/
http://alpha.primal-palate.com/recipe/double-dark-chocolate-chip-cookies-with-ch
opped-walnuts/

Original comment by jonda...@gmail.com on 4 Jan 2013 at 3:43

GoogleCodeExporter commented 8 years ago
pl = public release.  It's one of the strings recognized by PHP's 
version_compare() function, often used to tag a release number.

I still need steps to reproduce.  2 urls does not a bug report make.  I need 
steps to reproduce and you must list the comparison of what you expected to see 
vs. what you actually saw.  See #2 (and  #1) here: 
http://code.google.com/p/wordpress-custom-content-type-manager/wiki/Invalid

You'll probably want to include your definition file as well.

Original comment by ever...@fireproofsocks.com on 4 Jan 2013 at 3:51

GoogleCodeExporter commented 8 years ago
    Hrm - I'm not sure if it does recognize it.  I didn't get a 
notification that a new plugin was waiting until I removed the -pl from 
the version number.

    Sorry - I thought it was pretty similar to the earlier information 
in this bug, so didn't think I needed a longer explanation.

The steps are (assuming my configuration doesn't have anything weird in 
it):

WP Permalink Settings: Custom Structure /%category%/%postname%/ (not sure 
if that is relevant)
CCTM Permalink Setting: Rewrite, /%postname%/ (I've also used 'custom', 
and specified /recipe, etc. in each content type, but I think that might 
be the same thing?  If not, that might be part of the bug; it behaved the 
same way).

Steps:

1. Two posts with the same slug (see 
http://code.google.com/p/wordpress-custom-content-type-manager/issues/detail?id=
360#c17 
which is what was the main issue in you reproducing this last time)

2. One post is content type "post", and one is a "recipe".

3. Make the recipe's post date dated before the post

4. View the URL to the post, see the post.

5. View the URL to the recipe, see the recipe.

(all good so far)

6. Put the date of the recipe after the post.

7. View the URL to the post, and see a 301 redirect to the recipe.  (BUG)

I'd guess it isn't relevant, as you were able to reproduce my problems 
before without it.

{"export_info":{"title":"CCTM 
Site","author":"...@gmail.com","url":"http:\/\/paleo.limedaley.com","template_ur
l":"","description":"This 
site was created in part using the Custom Content Type 
Manager","_timestamp_export":1357302378,"_source_site":"http:\/\/alpha.primal-pa
late.com","_charset":"UTF-8","_language":"en-US","_wp_version":"3.5","_cctm_vers
ion":"0.9.6.7-pl"},"post_type_defs":{"recipe":{"cctm_hierarchical_custom":"","cc
tm_hierarchical_includes_drafts":"","cctm_hierarchical_post_types":[],"supports"
:["title","custom-fields","comments"],"taxonomies":["category"],"post_type":"rec
ipe","labels":{"menu_name":"Recipes","singular_name":"Recipe","add_new":"Add 
New","add_new_item":"Add New Recipe","edit_item":"Edit 
Recipe","new_item":"New Recipe","view_item":"View 
Recipe","search_items":"Search Recipes","not_found":"No recipes 
found","not_found_in_trash":"No recipes found in 
trash","parent_item_colon":"Parent Page"},"description":"All recipes go in 
this 
category.","label":"Recipes","cctm_show_in_menu":"1","cctm_show_in_menu_custom":
"","menu_position":5,"rewrite_with_front":true,"permalink_action":"\/%postname%\
/","rewrite_slug":"\/recipe","query_var":false,"public":true,"show_ui":true,"sho
w_in_nav_menus":true,"publicly_queryable":true,"include_in_search":true,"include
_in_rss":false,"capability_type":"post","can_export":true,"custom_orderby":"post
_title","custom_order":"ASC","use_default_menu_icon":true,"hierarchical":false,"
has_archive":false,"show_in_menu":"","rewrite":true,"is_active":1,"custom_fields
":["introduction","image","difficulty","prep_time","cook_time","num_servings","i
nstructions","notes","tonydbid","advertiser"],"cctm_custom_columns_enabled":0,"o
riginal_post_type_name":"recipe","cctm_enable_right_now":"1"},"ingredient":{"cct
m_hierarchical_custom":"","cctm_hierarchical_includes_drafts":"","cctm_hierarchi
cal_post_types":[],"supports":["title","editor","custom-fields"],"taxonomies":["
category"],"post_type":"ingredient","labels":{"menu_name":"Ingredients","singula
r_name":"Ingredient","add_new":"Add 
New","add_new_item":"Add New Ingredient","edit_item":"Edit 
Ingredient","new_item":"New Ingredient","view_item":"View 
Ingredient","search_items":"Search Ingredients","not_found":"No 
ingredients found","not_found_in_trash":"No ingredients found in 
trash","parent_item_colon":"Parent 
Page"},"description":"","label":"Ingredients","cctm_show_in_menu":"1","cctm_show
_in_menu_custom":"","menu_position":7,"rewrite_with_front":true,"permalink_actio
n":"\/%postname%\/","rewrite_slug":"","query_var":false,"public":true,"show_ui":
true,"show_in_nav_menus":false,"publicly_queryable":true,"include_in_search":tru
e,"include_in_rss":false,"capability_type":"post","can_export":true,"custom_orde
rby":"post_title","custom_order":"ASC","use_default_menu_icon":true,"hierarchica
l":false,"has_archive":false,"show_in_menu":"","rewrite":true,"is_active":1,"cus
tom_fields":["recipe","serving_size","quantity","measure","Calories","Carbs","Fa
t","Protein","provider","nutritional_source","tonydbid","shop_category","adverti
ser"],"cctm_custom_columns_enabled":0,"original_post_type_name":"ingredient"},"p
ost":{"custom_fields":[]},"page":{"custom_fields":[]}},"custom_field_defs":{"ser
ving_size":{"label":"Serving 
Size - won't be used going 
forward.","name":"serving_size","default_value":"","extra":"","class":"","descri
ption":"An 
easy to read version of the Quantity and Measure 
fields.","output_filter":"","hide_from_templates":0,"type":"text"},"quantity":{"
label":"Quantity 
- delete after nutritional information is converted to be in terms of 
shopping 
units","name":"quantity","default_value":"","extra":"","class":"","description":
"How 
many \"Measures\" is a normal 
serving?","output_filter":"","hide_from_templates":0,"type":"text"},"measure":{"
label":"Measure 
- won't be used going 
forward","name":"measure","default_value":"","extra":"","class":"","description"
:"A 
normal serving size\r\n\r\n(Note, if you add any more items to this list, 
the backend code for converting to millileters needs to be modified to 
accomodate the new 
size)","options":["","cup","whole","tsp","Tbsp","oz","lb","ml","pinch","cloves",
"head","gram","fl 
oz","quart","pint","gallon","sprig","pieces","clove","sprigs","bunch"],"values":
["","","","","","","","","","","","","","","","","","","","",""],"display_type":
"dropdown","output_filter":"","hide_from_templates":0,"type":"dropdown"},"provid
er":{"label":"Provider","name":"provider","default_value":"","extra":"","class":
"","description":"Where 
can you purchase this 
ingredient?","output_filter":"","hide_from_templates":0,"type":"text"},"nutritio
nal_source":{"label":"Nutritional 
Info 
Source","name":"nutritional_source","default_value":"","extra":"","class":"","us
e_key_values":"1","options":["Make 
It Paleo","My Fitness Pal","Spark 
People"],"values":["paleo","myfitnesspal","sparkpeople"],"display_type":"dropdow
n","description":"Where 
did you get the nutritional information 
from?","output_filter":"","hide_from_templates":0,"type":"dropdown"},"recipe":{"
label":"Recipe","name":"recipe","button_label":"Choose 
a recipe for this 
\"ingredient\"","search_parameters":"post_type%5B%5D=recipe&taxonomy=&taxonomy_t
erm=&post_parent=&meta_key=&meta_value=","default_value":"","description":"If 
this \"ingredient\" is really another recipe in our database, we can link 
to it directly, rather than typing in the information (again) 
here.","output_filter":"","hide_from_templates":0,"type":"relation"},"tonydbid":
{"label":"Tony's 
Database 
ID","name":"tonydbid","default_value":"","extra":"","class":"","description":"A 
link to Tony's database.  This won't be used as we go forward, but needed 
during the initial 
import.","output_filter":"","hide_from_templates":0,"type":"text"},"difficulty":
{"label":"Difficulty","name":"difficulty","default_value":"","extra":"","class":
"","options":["1","2","3","4","5"],"values":["","","","",""],"display_type":"dro
pdown","description":"How 
difficult is this 
recipe?","output_filter":"","hide_from_templates":0,"type":"dropdown"},"prep_tim
e":{"label":"Preparation 
Time","name":"prep_time","default_value":"","extra":"","class":"","description":
"How 
many minutes does this recipe take to 
prepare?","output_filter":"","hide_from_templates":0,"type":"text"},"cook_time":
{"label":"Cooking 
Time","name":"cook_time","default_value":"","extra":"","class":"","description":
"How 
many minutes does this recipe take to 
cook?","output_filter":"","hide_from_templates":0,"type":"text"},"num_servings":
{"label":"Servings","name":"num_servings","default_value":"","extra":"","class":
"","description":"How 
many servings will this recipe 
make?","output_filter":"","hide_from_templates":0,"type":"text"},"notes":{"label
":"Notes","name":"notes","default_value":"","extra":"cols=\"70\" 
rows=\"8\"","class":"","description":"Any additional notes for the 
cook.","output_filter":"","hide_from_templates":0,"type":"textarea"},"instructio
ns":{"label":"Instructions","name":"instructions","default_value":"","extra":"si
ze=\"70\"","class":"","is_repeatable":"1","description":"Type 
the instructions here, one at a 
time.","output_filter":"to_array","hide_from_templates":0,"type":"text"},"Fat":{
"label":"Fat","name":"Fat","default_value":"","extra":"","class":"","description
":"Number 
of fat grams in a \"unit\" of 
ingredient.","output_filter":"","hide_from_templates":0,"type":"text"},"Carbs":{
"label":"Carbohydrates","name":"Carbs","default_value":"","extra":"","class":"",
"description":"Number 
of carbohydrates in a \"unit\" of 
ingredient.","output_filter":"","hide_from_templates":0,"type":"text"},"Calories
":{"label":"Calories","name":"Calories","default_value":"","extra":"","class":""
,"description":"Number 
of calories in a \"unit\" of ingredient (e.g. ml, gram, 
whole)","output_filter":"","hide_from_templates":0,"type":"text"},"Protein":{"la
bel":"Protein","name":"Protein","default_value":"","extra":"","class":"","descri
ption":"Number 
of grams of protein in a unit of 
ingredient","output_filter":"","hide_from_templates":0,"type":"text"},"introduct
ion":{"label":"Introduction","name":"introduction","default_value":"","extra":"c
ols=\"70\" 
rows=\"8\"","class":"","description":"Anything typed here will go at the 
top of the 
recipe.","output_filter":"","hide_from_templates":0,"type":"textarea"},"image":{
"label":"Image","name":"image","button_label":"Choose 
an 
image","search_parameters":"post_mime_type=image&search_term=&search_columns=&ma
tch_rule=contains&post_parent=","default_value":"","is_repeatable":"1","descript
ion":"<a 
href=\"\/wp-admin\/media-new.php\">Upload images using the regular 
uploader<\/a>, and then include them using this image 
picker.","output_filter":"to_array","hide_from_templates":0,"type":"image"},"sho
p_category":{"label":"Shopping 
List 
Category","name":"shop_category","default_value":"","extra":"","class":"","descr
iption":"","options":["Fruits","Vegetables","Fresh 
Herbs","Meat","Nuts and Seeds","Oils and 
Fats","Spices","Baking","Other","Dairy"],"values":["","","","","","","","","",""
],"display_type":"dropdown","output_filter":"","hide_from_templates":0,"type":"d
ropdown"},"advertiser":{"label":"Advertiser 
ID","name":"advertiser","default_value":"3","extra":"","class":"","description":
"Pick 
which advertisers' logo should appear in the 
post.","use_key_values":"1","options":["No advertiser","US Wellness 
Meats","Make It Paleo","30 Day 
eBook"],"values":["0","1","2","3"],"display_type":"dropdown","output_filter":"",
"hide_from_templates":0,"type":"dropdown"}}}

*SYSTEM INFO* 
------------------------
Plugin Version: 0.9.6.7-pl
WordPress Version: 3.5
PHP Version: 5.3.10-1
MySQL Version: 5.5.28-1
Server OS: Linux
------------------------
ACTIVE PLUGINS:
  * HTML in Category Descriptions v.1.2.1 [http://wordpress.org/extend/plugins/allow-html-in-category-descriptions/developers/]
  * Content Slide Plugin v.1.4.2 [http://www.snilesh.com/resources/wordpress/wordpress-plugins/wordpress-content-slide-plugin/]
  * Jon Daley Favorite Posts v.1.5.6+ []
  * Jon Daley Notes v.1.0 []
  * Jon Daley ReciPress v.1.9.1 []
  * Jon Daley Slideshow v.1.0 []
  * Jon Daley Track Deletions v.1.0 []
  * Magazine Columns v.1.0.6 [http://bavotasan.com/downloads/magazine-columns-wordpress-plugin/]
  * Members v.0.2.2 [http://justintadlock.com/archives/2009/09/17/members-wordpress-plugin]
  * My Calendar v.2.1.3 [http://www.joedolson.com/articles/my-calendar/]
  * Peter's Login Redirect v.2.6.1 [http://www.theblog.ca/wplogin-redirect]
  * Post Ratings v.2.4 [http://digitalnature.eu/forum/plugins/post-ratings/]
  * QuestFore Header Login v.1.0 [http://www.questfore.com]
  * Relevanssi Dashboard v.0.0.1 [http://gingerbreaddesign.co.uk/wordpress/plugins/relevanssi-dashboard-widget.php]
  * Relevanssi v.3.1.3 [http://www.relevanssi.com/]
  * Share and Follow v.1.80.3 [http://share-and-follow.com/wordpress-plugin/]
  * Fast Secure Contact Form v.3.1.6 [http://www.FastSecureContactForm.com/]
  * Simple:Press v.5.2.2 [http://simple-press.com]
  * Email Login v.4.3.5 [http://dentedreality.com.au/projects/wp-plugin-email-login/]
  * WP Post Sorting v.1.2 [http://www.reflectionmedia.ro/2008/12/wp-post-sorting-plugin/]
  * Youtube Sidebar Widget v.1.3.2 [http://wordpress.org/extend/plugins/youtube-sidebar-widget/]

Original comment by jonda...@gmail.com on 4 Jan 2013 at 12:39

GoogleCodeExporter commented 8 years ago
Thanks -- it wasn't clear that the steps were the same.  Will look at this ASAP.

Original comment by ever...@fireproofsocks.com on 4 Jan 2013 at 4:43

GoogleCodeExporter commented 8 years ago
Hi Everett,

Just checking in to see if you've figured out anything.  Your plugin is used 
for a paying customer of mine, so we can send some money your way if that 
helps.  :)

Original comment by jonda...@gmail.com on 17 Jan 2013 at 6:19

GoogleCodeExporter commented 8 years ago
Hi, no I haven't dug into this further.  Yes, paying gigs dictate my calendar.  
I fear this might be a spot where WP's integration fails... prev. when I looked 
at this, the db query was something incomplete, like "SELECT * FROM wp_posts 
WHERE url="matches/multiple/posts"  -- I'm paraphrasing, but it's a real 
problem if a UNIQUE resource identifier (URI) is not in fact unique.  From what 
I remember WP just returned the first row from the result set.  Don't know if 
there's a way around that without some digging.

Original comment by ever...@fireproofsocks.com on 17 Jan 2013 at 7:20

GoogleCodeExporter commented 8 years ago
I sent a message via your google profile - did you get it?

Original comment by jonda...@gmail.com on 21 Jan 2013 at 4:24

GoogleCodeExporter commented 8 years ago
No, I didn't see it.  My email is listed @ http://fireproofsocks.com/contact/

Original comment by ever...@fireproofsocks.com on 21 Jan 2013 at 6:06

GoogleCodeExporter commented 8 years ago
Ok, interesting... print_r($query) in the CCTM::request_filter()

On the blog/chocolate-chip-cookies/ page:

Array ( [page] => [name] => chocolate-chip-cookies [category_name] => blog )

On the recipes/chocolate-chip-cookies/ page:

Array ( [page] => [name] => chocolate-chip-cookies [post_type] => recipe )

And finally, on an actual category page e.g. /category/recipes/

Array ( [category_name] => recipes )

Original comment by ever...@fireproofsocks.com on 22 Jan 2013 at 10:29

GoogleCodeExporter commented 8 years ago
Committed revision 657513.

Original comment by ever...@fireproofsocks.com on 23 Jan 2013 at 5:47

GoogleCodeExporter commented 8 years ago
Thanks very much!

Original comment by jonda...@gmail.com on 23 Jan 2013 at 6:47