2

I am using custom post_type and inside the loop I echo get_delete_post_link but there is nothing echoing.

<?php 
$wpquery = new WP_Query('post_type=myposts');
  if( $wpquery->have_posts() ) {
     while ($wpquery->have_posts()) : $wpquery->the_post();

        $id = get_the_ID();
        //just a test to see can I get post IDs and I get them
        echo $id; ?>

        <a href="<?php echo get_delete_post_link($id); ?>">Delete</a>
        <?php endwhile; }
          wp_reset_query();?>

This is the output

<a href="">Delete</a>
3

Is the user logged in and is allowed to delete posts of this post type? There are three checks inside the get_delete_post_link function before anything starts happening:

if ( !$post = get_post( $id ) )
    return;

$post_type_object = get_post_type_object( $post->post_type );
if ( !$post_type_object )
    return;

if ( !current_user_can( $post_type_object->cap->delete_post, $post->ID ) )
    return;

I'm wild-guessing it's the third check that's failing in your case. You can paste them into your code and replace return; with debugging code to see what's going on:

if ( !$post = get_post( $id ) ) {
    echo 'could not get post. ';
} else {
    echo 'got post. ';
}

$post_type_object = get_post_type_object( $post->post_type );
if ( !$post_type_object ){
    echo 'could not get post object. ';
} else {
    echo 'got post object. ';
}

if ( !current_user_can( $post_type_object->cap->delete_post, $post->ID ) ){
    echo 'user does not have proper capability. ';
} else {
    echo 'user is ok to delete this post. ';
}
|improve this answer|||||
  • First check failed, second and third passed, BUT I forgot that I didn't use register_post_type function yet. After implementing it, get_delete_post_link echoes just fine. Funny thing is that now all three checks fail :) ty – deimos May 15 '13 at 1:21
1

All I can see that might cause this is the check for delete permissions.

if ( !current_user_can( $post_type_object->cap->delete_post, $post->ID ) )
     return;

If your user doesn't have delete permissions for the post the function returns nothing.

There could also be a filter on get_delete_post_link.

|improve this answer|||||

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.