it-swarm.com.de

Keine Links für benutzerdefinierten Beitragstyp bearbeiten/löschen?

Ich habe einen benutzerdefinierten Beitragstyp für "Testimonials" erstellt und die Anzeige der Bearbeitungsbeiträge mit benutzerdefinierten Spalten für diesen Beitragstyp neu angeordnet. Alles funktioniert wie erwartet, mit Ausnahme der Tatsache, dass beim Bewegen des Mauszeigers über einen dieser benutzerdefinierten Beiträge die Liste der "Aktionslinks", die normalerweise darunter angezeigt werden, damit Sie diesen Beitrag bearbeiten/löschen können, ist nicht vorhanden ...

Hier ist ein Screenshot von dem, was ich meine: enter image description here

Hier ist der gesamte zugehörige Code:

function wpg_edit_testimonials_columns($columns) {
  $columns = array(
    'cb' => '<input type="checkbox" />',
    'testimonial_author' => __('Author', 'quotable'),
    'testimonial_text' => __('Testimonial', 'quotable'),
    'attribution_link' => __('Attribution Link', 'quotable'),
    'date' => __('Date Added', 'quotable')
  );
  return $columns;
}

function wpg_manage_testimonials_columns($column, $post_id) {
  global $post;
  $custom = get_post_custom($post->ID);
  $testimonial_author_name = $custom['testimonial_author_name'][0];
  $testimonial_author_link = $custom['testimonial_author_link'][0];

  switch($column) {

    case 'testimonial_author':
      echo $testimonial_author_name;
    break;

    case 'testimonial_text':
      echo $post->post_content;
    break;

    case 'attribution_link':
      echo $testimonial_author_link;
    break;

    default :
      break;
  }
}
add_filter('manage_edit-testimonials_columns', 'wpg_edit_testimonials_columns');
add_action('manage_testimonials_posts_custom_column', 'wpg_manage_testimonials_columns', 10, 2);

Ich vermute nur, dass es vielleicht etwas damit zu tun hat, dass die Spalte "title" nicht verwendet wird? Ich habe keine Notwendigkeit gesehen, die Titelspalte zu verwenden, da der Beitragstyp nicht einmal die Verwendung von "Titeln" unterstützt, da dies nur ein Testimonial ist.

BEARBEITEN:

Ok, ich habe bestätigt, dass dies tatsächlich darauf zurückzuführen ist, dass die Titelspalte nicht verwendet wird. Ich habe "title" zur Liste der Spalten im Array hinzugefügt und die Links wurden angezeigt Da Titel in diesem Beitragstyp nicht unterstützt werden, wird der Titel für alle Testimonials als "Auto Draft" aufgeführt.

WIEDER BEARBEITEN:

Unter Berücksichtigung der Ratschläge von @helenhousandi habe ich meine eigenen Links gerollt ... aber jetzt stoße ich auf ein völlig neues Problem. Der Lösch-/Papierkorb-Link verwendet ein Nonce, das ich hinzugefügt habe ... aber ich vermisse anscheinend irgendwo einen Schritt, weil er die Aktion beim Klicken nicht tatsächlich abschließt.

Stattdessen erhalte ich eine Fehlermeldung zu WordPress: enter image description here

Hier ist der bearbeitete Teil meines Codes:

$wpg_row_actions  = '<div class="row-actions"><span class="edit"><a title="'.__('Edit this item', 'quotable').'" href="'.get_admin_url().'post.php?post='.$post->ID.'&amp;action=edit">Edit</a> | </span>';
$wpg_row_actions .= '<span class="inline hide-if-no-js"><a title="'.__('Edit this item inline', 'quotable').'" class="editinline" href="#">Quick&nbsp;Edit</a> | </span>';
$wpg_row_actions .= '<span class="trash"><a href="'.wp_nonce_url(get_admin_url().'post.php?post='.$post->ID.'&amp;action=trash', 'delete-post_'.$post->ID).'" title="'.__('Move this item to the Trash', 'quotable').'" class="submitdelete">Trash</a></span>';


switch($column) {
  case 'testimonial_author':
    echo $testimonial_author_name.$wpg_row_actions;
break;
3
Nero_DCLXVI

Ok, es ist vielleicht nicht die effizienteste Methode ... aber ich habe eine Lösung gefunden. Am Ende musste ich eine benutzerdefinierte Funktion schreiben, um das Hinzufügen der Zeilenaktionen für jeden Beitrag zu erledigen. So stellte sich heraus:

function wpg_row_actions() {
  global $post;
  if($post->post_type == 'page') {
    if(!current_user_can('edit_page')) {
      return;
    }
  }
  else {
    if(!current_user_can('edit_post')) {
      return;
    }
  }
  if($post->post_status == 'trash') {
    $actionLinks  = '<div class="row-actions"><span class="untrash"><a title="'.__('Restore this item', 'quotable').'" href="'.wp_nonce_url(get_admin_url().'post.php?post='.$post->ID.'&amp;action=untrash', 'untrash-'.$post->post_type.'_'.$post->ID).'">'.__('Restore', 'quotable').'</a> | </span>';
    $actionLinks .= '<span class="trash"><a href="'.wp_nonce_url(get_admin_url().'post.php?post='.$post->ID.'&amp;action=delete', 'delete-'.$post->post_type.'_'.$post->ID).'" title="'.__('Delete this item permanently', 'quotable').'" class="submitdelete">'.__('Delete Permanently', 'quotable').'</a></span>';
  }
  else {
    $actionLinks  = '<div class="row-actions"><span class="edit"><a title="'.__('Edit this item', 'quotable').'" href="'.get_admin_url().'post.php?post='.$post->ID.'&amp;action=edit">'.__('Edit', 'quotable').'</a> | </span>';
    $actionLinks .= '<span class="inline hide-if-no-js"><a title="'.__('Edit this item inline', 'quotable').'" class="editinline" href="#">'.__('Quick Edit', 'quotable').'</a> | </span>';
    $actionLinks .= '<span class="trash"><a href="'.wp_nonce_url(get_admin_url().'post.php?post='.$post->ID.'&amp;action=trash', 'trash-'.$post->post_type.'_'.$post->ID).'" title="'.__('Move this item to the Trash', 'quotable').'" class="submitdelete">'._x('Trash', 'verb (ie. trash this post)', 'quotable').'</a></span>';
  }
  return $actionLinks;
}


function wpg_edit_testimonials_columns($columns) {
  $columns = array(
    'cb' => '<input type="checkbox" />',
    'testimonial_author' => __('Author', 'quotable'),
    'testimonial_text' => __('Testimonial', 'quotable'),
    'attribution_link' => __('Attribution Link', 'quotable'),
    'date' => __('Date Added', 'quotable')
  );
  return $columns;
}

function wpg_manage_testimonials_columns($column, $post_id) {
  global $post;
  $custom = get_post_custom($post->ID);
  $testimonial_author_name = $custom['testimonial_author_name'][0];
  $testimonial_author_link = $custom['testimonial_author_link'][0];

  $wpg_row_actions  = wpg_row_actions();


  switch($column) {
    case 'testimonial_author':
      echo $testimonial_author_name.$wpg_row_actions;
    break;

    case 'testimonial_text':
      echo $post->post_content;
    break;

    case 'attribution_link':
      echo $testimonial_author_link;
    break;

    default :
      break;
  }
}
add_filter('manage_edit-testimonials_columns', 'wpg_edit_testimonials_columns');
add_action('manage_testimonials_posts_custom_column', 'wpg_manage_testimonials_columns', 10, 2);

Die Funktion prüft, welche Version der Zeilenaktionen hinzugefügt werden muss, je nachdem, ob Sie die verworfenen oder die regulären Posts anzeigen. Hoffentlich erspart dies jemandem später Stunden der Frustration.

Es scheint jedoch, dass ich auf ein völlig neues Problem gestoßen bin. Die benutzerdefinierten Felddaten für jeden Beitrag in diesem benutzerdefinierten Beitragstyp werden gelöscht, wenn ich einen von ihnen "wegwerfe" ... aber das ist eine völlig neue Frage .

2
Nero_DCLXVI

Richtig, ohne die Titelspalte können die Zeilenaktionen nicht angezeigt werden. Ich habe dies noch nicht versucht, aber werfen Sie einen Blick auf die Methode row_actions() in der Klasse WP_List_Table. Sie können es möglicherweise nicht direkt aufrufen, aber es sollte Ihnen zeigen, wie diese Links aufgebaut sind, damit Sie sie bei Bedarf selbst rollen können.

2
helenhousandi

Ich wollte nur den Bearbeiten-Button wieder haben, da viele andere Dinge entweder über die Massenaktionen oder innerhalb des eigentlichen Posts erledigt werden können, also habe ich einfach die URL der WordPress-Site und die Post-ID abgerufen und meinen eigenen Bearbeiten-Link erstellt.

$postid = get_the_ID();
$weburl = get_bloginfo('url');
$_cmb_ = get_post_custom($post->ID);
$linktext = $_cmb_["_cmb_link_text"][0];
$linkurl = $_cmb_["_cmb_link_url"][0];

Und dann in der Spalte Ausgabe

case "link_text":
echo '<b>'.$linktext.'</b><br> <a href="'.$weburl.'/wp-admin/post.php?post='.$postid.'&action=edit" title="Edit">Edit</a><br/>';
break;

Hoffe das hilft Leuten, die nach einer einfachen Antwort und nur nach dem Bearbeitungslink suchen.

1
Adam