get_edit_post_link () funktioniert nicht wie erwartet, wenn die ID im Plugin übergeben wurde

In meinem Plugin habe ich den folgenden Code. Es wird eine Frage von einer custom_post gestellt. Ich verarbeite es hier, damit weitere Updates von AJAX / JSON durchgeführt werden können und die Seite nur für eine Art von Datenquelle konfiguriert werden muss.

$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); } 

Alles funktioniert gut außer dem get_edit_post_link – hier ist 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 ) 

https://codex.wordpress.org/Function_Reference/edit_post_link schlägt vor, dass wir eine ID weitergeben können, damit ich nicht sehe, warum das Feld leer ist.

Solutions Collecting From Web of "get_edit_post_link () funktioniert nicht wie erwartet, wenn die ID im Plugin übergeben wurde"

Laut der Quelle der function get_edit_post_link() kann dies unter folgenden Bedingungen passieren:

  • es gibt keinen solchen Posten;
  • es gibt keinen solchen Beitragstyp;
  • Sie haben nicht genügend Berechtigungen, um den Beitrag zu bearbeiten.
  • _edit_link wurde während der Post-Typ-Registrierung geändert.

Die ersten beiden sind nicht der Fall, da die ID verfügbar ist. Der vierte ist eine schlechte Übung: nicht für den allgemeinen Gebrauch – Core-Entwickler empfehlen, dass Sie dies nicht verwenden, wenn Sie Ihren eigenen Post-Typ registrieren .

In diesem Fall hat der Benutzer nicht genügend Berechtigungen. Laut dem Kommentar des OP unter der Frage, war er ausgeloggt worden, was die gleiche Sache ist.

Dies kann einer der Zeiten sein, wenn bestimmte functionen als Teil der Schleife besser funktionieren. Obwohl Sie eine Schleife verwenden, verwenden Sie nicht die vollständige WP-Schleifenfunktionalität.

Versuchen Sie, 'posts_per_page'=> 1 zu Ihren $args hinzuzufügen 'posts_per_page'=> 1 um nur den einen Beitrag zu erhalten, und ersetzen Sie dann $questionpost = $observations->posts[0]; mit dem fehlenden Schleifenkonstrukt, dh: while($observations->have_posts()) : $observations->the_post(); (nicht zu vergessen natürlich das Ende der Schließung endwhile; natürlich). Dies erlaubt Ihnen dann, die normalen In-Loop-functionen (zB get_the_ID() , get_the_title() , usw.) zu benutzen und versuchen, get_edit_post_link() zu get_edit_post_link() ohne die ID an sie zu übergeben.