$conf, $runtime; function_exists('chdir') AND chdir(APP_PATH); $r = 'mysql' == $conf['cache']['type'] ? website_set('runtime', $runtime) : cache_set('runtime', $runtime); } function runtime_truncate() { global $conf; 'mysql' == $conf['cache']['type'] ? website_set('runtime', '') : cache_delete('runtime'); } register_shutdown_function('runtime_save'); ?>plugin development - Can't echo get_delete_post_link|Programmer puzzle solving
最新消息:Welcome to the puzzle paradise for programmers! Here, a well-designed puzzle awaits you. From code logic puzzles to algorithmic challenges, each level is closely centered on the programmer's expertise and skills. Whether you're a novice programmer or an experienced tech guru, you'll find your own challenges on this site. In the process of solving puzzles, you can not only exercise your thinking skills, but also deepen your understanding and application of programming knowledge. Come to start this puzzle journey full of wisdom and challenges, with many programmers to compete with each other and show your programming wisdom! Translated with DeepL.com (free version)

plugin development - Can't echo get_delete_post_link

matteradmin10PV0评论

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>

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>
Share Improve this question edited May 14, 2013 at 2:46 deimos asked May 14, 2013 at 2:22 deimosdeimos 609 bronze badges
Add a comment  | 

2 Answers 2

Reset to default 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. ';
}

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.

Post a comment

comment list (0)

  1. No comments so far