Jalara Studio

Im Adminbereich Plugin den Aktionslink Bearbeiten wiederherstellen

#


Wer den mit der WordPress-Version 4.9 entfernten Aktionslink Bearbeiten (engl. action link edit) im Adminbereich Plugins wieder sichtbar machen möchte, kann hierfür die folgende Funktion verwenden, die den Code aus der WordPress-Version 4.8 enthält. Die Funktion wurde anschließend dem Action Hook 'after_plugin_row'1 mitgegeben:

function plugin_edit_action_link( $plugin_file, $plugin_data, $status ){

    if ( ( ! is_multisite() || $screen->in_admin( 'network' ) ) && current_user_can( 'edit_plugins' ) && is_writable( WP_PLUGIN_DIR . '/' . $plugin_file ) ) {

        $edit_action_link = '<a rel="nofollow" href="plugin-editor.php?file=' . $plugin_file . '" class="edit" aria-label="' . esc_attr( sprintf( __( 'Edit %s' ), $plugin_data['Name'] ) ) . '">' . __( 'Edit' ) . '</a>';

        echo '<tr><td class="custom">&nbsp;</td><td colspan="2" class="custom">'. $edit_action_link . '</td></tr>';

    }

}
add_action( 'after_plugin_row', 'plugin_edit_action_link', 10, 3 );

Plugin-Icon hinzufügen

Der Plugin-Reihe kann auch ein Bild mitgegeben werden: Sofern bei der Plugin-Einreichung für das Verzeichnis ein Icon mitgegeben wurde, würde folgender Codeschnipsel das Icon des Plugins vor dem Aktionslink Bearbeiten laden:

function plugin_edit_action_link( $plugin_file, $plugin_data, $status ){

    if ( ( ! is_multisite() || $screen->in_admin( 'network' ) ) && current_user_can( 'edit_plugins' ) && is_writable( WP_PLUGIN_DIR . '/' . $plugin_file ) ) {

        $asset_icon = 'https://ps.w.org/' . $plugin_data['TextDomain'] .'/assets/icon-128x128';

        $img = '<img width="30px" src="' . $asset_icon . '.png" onerror="this.onerror=null;this.src=\'' . $asset_icon . '.jpg\'">';

        $edit_action_link = '<a rel="nofollow" href="plugin-editor.php?file=' . $plugin_file . '" class="edit" aria-label="' . esc_attr( sprintf( __( 'Edit %s' ), $plugin_data['Name'] ) ) . '">' . __( 'Edit' ) . '</a>';

        echo '<tr><td class="custom">'  . $img  . '</td><td colspan="2" class="custom">'. $edit_action_link . '</td></tr>';

    }

}
add_action( 'after_plugin_row', 'plugin_edit_action_link', 10, 3 );

Styles hinzufügen

Damit der Bereich Plugin übersichtlicher ist, kann optional folgendes CSS im Quelltext des Admin-Bereiches hinzugefügt werden:

function add_style_plugin_php(){

    echo '<style>

    .update-message {
        background: transparent;
        border-left: 0;
        margin: 0;
        padding: 0 0 0 4.5em;
    }

    tr.plugin-update-tr {
        background: rgb(255, 248, 236);
    }

    .update-message,
    .plugin-install #the-list td,
    .plugins .active td,
    .plugins .active th,
    .plugins .inactive td,
    .plugins .inactive th,
    .upgrade .plugins td,
    .upgrade .plugins th,
    .plugins .plugin-update-tr .plugin-update {
        box-shadow: none;
    }

    tr:not(.update)+tr td.custom,
    td.plugin-update {
        border-bottom: 1px solid #cdcdcd;
        vertical-align: middle;
    }

    tr.active+tr td.custom:first-child {
        border-left: 4px solid #00a0d2;
    }

    tr.active+tr td.custom {
        background:rgb(247, 252, 254);
    }

    </style>';

}
add_action( 'admin_head-plugins.php', 'add_style_plugin_php' );

Anschließend würde der Bereich Plugins wie folgt aus sehen:

Aktionslink Bearbeiten nur bei eigenen Plugins anzeigen

Möchtest du lediglich einen Bearbeitungslink für deine eigenen Plugins im Bereich angeben, kannst du den Filter Hook 'plugin_action_links_' . plugin_basename( __FILE__ )'2 verwenden:

function add_plugin_action_links( $actions ) {

    if ( ( ! is_multisite() || $screen->in_admin( 'network' ) ) && current_user_can( 'edit_plugins' ) && is_writable( WP_PLUGIN_DIR . '/' . $plugin_file ) ) {

        $actions['edit'] = '<a rel="nofollow" href="plugin-editor.php?file=' . urlencode( plugin_basename( __FILE__ ) ) . '" class="edit" aria-label="' . esc_attr( sprintf( __( 'Edit %s' ), $plugin_data['Name'] ) ) . '">' . __( 'Edit' ) . '</a>'; 

    }

    return $actions;

}
add_filter( 'plugin_action_links_' . plugin_basename( __FILE__ ), 'add_plugin_action_link', 10, 3 );

Credits