web-dev-qa-db-ja.com

プラグインにidを渡すとget_edit_post_link()が正しく動作しない

だから私のプラグインの中に私は次のコードがあります。 custom_postから質問を受けます。 AJAX/JSONによる更なる更新が可能になるようにここでそれを処理しています、そしてページは1つのタイプのデータソースのために設定される必要があるだけです。

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

Get_edit_post_link以外はすべてうまくいきます - 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 IDを渡すことができるので、これが空白の理由がわかりません。

2
Davies-Barnard

get_edit_post_link()関数 source によると、これは以下の状況で起こります。

  • そのような記事はありません。
  • そのような投稿タイプはありません。
  • 投稿を編集するための十分な権限がありません。
  • 投稿タイプの登録中に_edit_linkが変更されました。

最初の2つは、IDが使用可能であるため当てはまりません。 4つ目は悪い習慣です: 一般的な用途には使用できません - コア開発者 推奨 自分の投稿タイプを登録するときにはこれを使用しない .

この場合、ユーザーに十分な権限がありません。問題のOPのコメントによると、彼はログアウトされていましたが、これは同じことです。

3
Max Yudin

これは、特定の機能がループの一部としてより適切に機能する場合の1つです。ループを使用していますが、実際には完全なWPループ機能を使用しているわけではありません。

'posts_per_page'=> 1$argsに追加して1つの投稿を取得してから、$questionpost = $observations->posts[0];を欠落しているループ構造、つまりwhile($observations->have_posts()) : $observations->the_post();(終了endwhile; もちろん)。これにより、通常のループ内関数(たとえば、get_the_ID()get_the_title()など)を使用し、IDを渡さずにget_edit_post_link()を使用してみることができます。

1
Peter HvD