web-dev-qa-db-fra.com

Comment changer l'URL du titre sur l'écran d'édition?

J'ai cherché dans divers endroits et je me bats pour trouver le bon endroit ou les termes utilisés pour ce qui suit.

Je n'utilise que les messages à titre d'exemple.

Lorsque vous affichez toutes les publications dans wp-admin, vous obtenez le titre de celle-ci et les liens Edition, Edition rapide, Corbeille et Aperçu. En utilisant l'action hook post_row_actions, je peux modifier les liens situés sous le titre, mais pas ceux figurant sur le titre lui-même.

Existe-t-il un autre moyen de changer le lien sur le titre de l'article pour ouvrir une autre URL? ou puis-je le changer avec le même crochet?

Je développe un écran de gestion de contenu front-end et je souhaite pointer tous les liens de modification sur le site Web.

Merci beaucoup :)

1
Kobus Beets

Utilisez get_edit_post_link filter .

add_filter('get_edit_post_link', 'get_edit_post_link_178416', 99, 3);

function get_edit_post_link_178416($link, $post_id, $context) {
    $scr = get_current_screen();

    if ($scr->id == 'edit-post' && $context == 'display') {
        return 'http://google.com';
    } else {
        return $link;
    }
}

Vous pouvez voir qu'il est utilisé ici

7
mjakic

Je développe un écran de gestion de contenu front-end et je souhaite pointer tous les liens de modification sur le site Web.

Si vous souhaitez pointer tous les liens de montage sur le FE, vous devez choisir la solution de filtrage get_edit_post_link (voir la réponse de Marko). Cela couvrira tous les cas où le noyau ou un plugin appelle get_edit_post_link() .

Mais si vous souhaitez mettre en place une gestion de contenu frontale "correcte", vous devez aller au-delà. J'ai vu des plug-ins contourner l'API et coder en dur le calcul du post-modification de l'URL. De plus, il est toujours possible qu'un utilisateur saisisse l'URL de l'administrateur et atterrisse sur l'écran d'édition post-administrateur par défaut.

Donc, je pense que vous devriez rediriger l'URL post edit par défaut vers votre frontend:

add_action(
    'admin_init',
    function()
        {
        global $pagenow;
        if($pagenow=='post.php'
          && isset($_GET['action']) && $_GET['action']=='edit'
          && isset($_GET['post']))
            {
            $post_id=$_GET['post'];
            // calculate $fe_edit_screen using $post_id
            wp_redirect($fe_edit_screen);
            exit;
            }
        },
    1
    );

De cette façon, tout le monde sera redirigé vers votre interface, peu importe la façon dont ils ont fini par accéder à l'écran d'édition. De plus, vous pouvez ajouter davantage de vérifications, au cas où vous souhaiteriez, par exemple, rediriger uniquement les utilisateurs disposant (ou non) de fonctionnalités spécifiques, ou uniquement certains types de publication, etc.

1
geomagas