• Resolved tmuikku

    (@tmuikku)


    Hi,

    I’m trying to upload image (as admin) to a custom taxonomy term, but the upload manager says “You don’t have permission to attach files to this post.”.

    I can set image from the media library though (Already uploaded).

    I see the post_id POST attribute has the value of tt_id when uploading the image. No tt_id atribute set. Propably the system doesn’t find a post with this ID and returns the error?

    I don’t have time to debug this right now so maybe someone else has?:D I’ll post solution here later if noone has solved this yet.

    https://www.ads-software.com/plugins/taxonomy-images/

Viewing 12 replies - 1 through 12 (of 12 total)
  • I’m having a very similar issue here. What’s weird is that the plugin allows me to upload the first image (say for example, the first category or custom taxonomy I’m assigning an image), but after that I’m getting the “You don’t have permission to attach files to this post” error.

    Tim

    (@timwakeling-1)

    I’m getting this problem too and have been troubleshooting, but not succeeded in diagnosing the issue yet.

    I decided to make the error message echo the post_id it was using, because the error is being generated by this code in wp-admin/includes/ajax-actions.php, and I know for sure that my user has the edit_post permission, so the other parameter must be at fault:

    $post_id = $_REQUEST['post_id'];
    		if ( ! current_user_can( 'edit_post', $post_id ) ) {
    			echo wp_json_encode( array(
    				'success' => false,
    				'data'    => array(
    					'message'  => __( "You don't have permission to attach files to this post. Post ID: " . $post_id ),
    					'filename' => $_FILES['async-upload']['name'],
    				)
    			) );
    
    			wp_die();
    		}

    I don’t know what the post_id is supposed to be, but I’d guess it’s meant to be the ID of the taxonomy term we’re trying to add to. When the error occurs, it’s coming out as a slightly different number. For example if I edit term with ID 164 and get the error, I find post_id is 165. If I edit a term with ID 261, post_id is 264.

    In the term_taxonomy table of the database, I see that term_taxonomy_id 165 is associated with term_id 164, and term_taxonomy_id 264 is associated with term_id 261. So is it possible that the plugin is somehow putting the term_taxonomy_id into the post_id variable when it should be putting in the term_id?

    Tim

    This same error. Personally, I use an older version of the plugin. Also, I advise you to go to an older version. If you do not have it, I can send. Author plugin bit rushed with the new version, in which a lot of mistakes.

    Plugin Author Ben Huson

    (@husobj)

    I’m currently working on a fix for this.

    I would encourage you to follow this support ticket:
    https://github.com/benhuson/Taxonomy-Images/issues/28

    …and try out the development version mentioned here if you are able, providing any feedback if it helps resolve your issue (or not:
    https://github.com/benhuson/Taxonomy-Images/issues/28#issuecomment-173008591

    Many thanks

    Ben

    Plugin Author Ben Huson

    (@husobj)

    Hopefully this is fixed in version 0.9.3

    Please post your feedback if it is/isn’t fixed in this version for you.

    Tim

    (@timwakeling-1)

    Thank you Ben!

    However, unfortunately I’m not quite able to test, because now when I try to upload, I just get the beginning of the uploading progress bar and the upload appears to stop there.

    Uploads still work normally in the Media Library itself; it’s only when I try to do it from the taxonomy that it fails.

    Sorry I know this is annoying for you!

    Tim

    Plugin Author Ben Huson

    (@husobj)

    Hi Tim,

    Weird, I’m not getting any errors when testing. Can you try clearing your browser cache, just in case some older JavaScript is caching?

    What version of WordPress do you have installed?

    Ben

    Tim

    (@timwakeling-1)

    Using WordPress 4.4.1, but on a multi-site. Not sure if that’s relevant, but it may be because of course the uploads folder is in a different place on multi-sites…

    I ran in to this issue, and noticed it was caused due to an uppercase character in my wp_term_taxonomy.taxonomy column. The plugin I used to create the custom taxonomy did not sanitize the name and an oversight on my part lead to the incorrect case. I had entered “Products” instead of “products”.

    On line 490 of taxonomy-image.php the get_taxonomy() function returns false since you passed in the result of sanitize_title_with_dashes().

    I have now corrected my bad taxonomy name through the other plugin, and everything works great. I will advise the other plugin author to correct this issue on their end, though that’s only one case which may conflict with your plugin.

    Plugin Author Ben Huson

    (@husobj)

    @inetpeter I can replicate and confirm the Uppercase characters issue – that will be fixed in the next release ??

    Plugin Author Ben Huson

    (@husobj)

    If version 0.9.4 hasn’t fixed this issue, please open a new support thread. Thank you. ??

    Found a solution!
    I was trying to allow users to setup a personal page and upload an image to display there. I kept getting the dreaded “You don’t have permission to attach files to this post”.

    The message itself comes from wp_ajax_upload_attachment() in /wp-admin/includes/ajax-actions.php, even though the user is working on the front-page, not the dashboard, because the plugin I’m using (Advanced Custom Fields — recommended!) makes use of wordpress library routines (thankfully it restricts access to library). The error occurs if current_user_can() fails to give permission.
    (You can prove the message is in this routine by changing the message statement to something else.)

    In turn, current_user_can() calls $current_user->has_cap() to get current capabilities.

    has_cap() offers a nice filter that we can make use of, but it kept failing anyway. The reason was that it first calls map_meta_cap() which builds a large array of possible capabilities for this instance. If any one of those possible capabilities is left ’empty’ then has_cap returns false.

    That means any custom filter that is determined to give permission must loop through the array and set everything true.

    Here’s a sample filter function that works for me:

    // allow users to add images to their home page
    function allow_own_attachments( $user_caps, $req_caps, $args, $UserObj ) {
    if ( empty($args[2]) ) {
    return $user_caps; // nothing to check
    }
    $post = get_post( $args[2] ); // post_id was passed here
    if ( $post->post_author == $UserObj->ID ) { // this is my post
    foreach ( (array) $req_caps as $cap ) {
    if ( empty( $user_caps[ $cap ] ) )
    $user_caps[ $cap ] = true;
    }
    }
    $user_caps[‘edit_post’] = true; // tested by wp_ajax_upload_attachment()
    return $user_caps;
    }
    add_filter( ‘user_has_cap’, ‘allow_own_attachments’, 10, 4 );
    // end

    hope that helps someone

Viewing 12 replies - 1 through 12 (of 12 total)
  • The topic ‘You don't have permission to attach files to this post.’ is closed to new replies.