get_edit_post_link () no funciona como se esperaba cuando se pasa la identificación en el complemento

2

Así que dentro de mi plugin tengo el siguiente código. Recibe una pregunta de un custom_post. Lo estoy procesando aquí para que AJAX / JSON pueda realizar más actualizaciones y la página solo debe configurarse para un tipo de fuente de datos.

$observations = new WP_Query($args);  
if ( $observations-> have_posts() ) :
    $questionpost = $observations->posts[0];
    $question = array (
        'id' => $questionpost->ID,
        'title' => $questionpost->post_title,
        'name' =>  $questionpost->post_name,
        'excerpt' => $questionpost->post_excerpt,
        'content' => $questionpost->post_content,
        'code' => get_post_meta( $questionpost->ID, 'code', true ),
        'edit_link' => get_edit_post_link($questionpost->ID),
    );
    if ( has_post_thumbnail($questionpost->ID) ) {
        $question['thumbnail'] = get_the_post_thumbnail( $questionpost->ID, 'full', array('class' => 'card-img-top')); 
    } else {
        $question['thumbnail'] = get_template_directory_uri()."/img/no-image.png";
    }
    print_r($question);
}

Todo funciona bien, excepto para get_edit_post_link, aquí está print_r dump:

Array ( [id] => 208 [title] => Main ... pipework. [name] => nr-60 [excerpt] => [content] => The ... external. [code] => NR [edit_link] => [thumbnail] => http://.../img/no-image.png ) 

enlace sugiere que podamos pasar una identificación, así que no veo por qué esto está en blanco.

    
pregunta Davies-Barnard 17.01.2018 - 11:17

2 respuestas

3

Según la función get_edit_post_link() source esto puede suceder en las siguientes condiciones:

  • no hay tal publicación;
  • no hay tal tipo de publicación;
  • no tienes suficientes permisos para editar la publicación;
  • _edit_link se modificó durante el registro del tipo de publicación.

Los dos primeros no son el caso ya que la ID está disponible. La cuarta es una mala práctica: no es para uso general: los desarrolladores principales recomiendan no usa esto al registrar su propio tipo de publicación .

En este caso, el usuario no tiene suficientes permisos. Según el comentario del OP bajo la pregunta, se había desconectado, lo que es lo mismo.

    
respondido por el Max Yudin 17.01.2018 - 12:33
1

Este podría ser uno de esos momentos en que ciertas funciones funcionan mejor como parte del bucle. Aunque está utilizando un bucle, en realidad no está utilizando la funcionalidad de bucle WP completa.

Intente agregar 'posts_per_page'=> 1 a su $args para obtener solo una publicación, y luego reemplace $questionpost = $observations->posts[0]; con la construcción de bucle faltante, es decir: while($observations->have_posts()) : $observations->the_post(); (sin olvidar el endwhile; de cierre, por supuesto). Esto le permitirá utilizar las funciones normales en el bucle (por ejemplo, get_the_ID() , get_the_title() , etc.) e intentar usar get_edit_post_link() sin pasarle el ID.

    
respondido por el Peter HvD 17.01.2018 - 12:15

Lea otras preguntas en las etiquetas