Par défaut, lorsque je clique sur un élément de la bibliothèque multimédia, la page Détails de la pièce jointe me parvient, par exemple. .../wp-admin/upload.php?item=65
.
Que devrais-je modifier pour qu'il passe directement à la page "Modifier les détails"? Par exemple. .../wp-admin/post.php?post=65&action=edit
Je pensais que ce serait aussi simple que de changer l’orienté du href - mais il ne semble pas y avoir de href! Je suppose que le lien est généré d'une manière différente?
De /wp-includes/script-loader.php
:
$scripts->add( 'media-grid', "/wp-includes/js/media-grid$suffix.js", array( 'media-editor' ), false, 1 );
De wp-admin/upload.php
:
wp_enqueue_script( 'media-grid' );
wp_enqueue_script( 'media' );
wp_localize_script( 'media-grid', '_wpMediaGridSettings', array(
'adminUrl' => parse_url( self_admin_url(), PHP_URL_PATH ),
) );
Nous pouvons donc essayer de désenregistrer le fichier media-grid.js
initial et charger notre propre version. Cela peut être fait via un plugin:
<?php
/**
* Plugin Name: Change Media Grid link
* Plugin URI: http://wordpress.stackexchange.com/q/168981/17305
*/
add_action( 'admin_enqueue_scripts', 'loadmyscriptinstead_168981' );
function loadmyscriptinstead_168981 (){
wp_deregister_script( 'media-grid' );
wp_register_script( 'media-grid', plugin_dir_url( __FILE__ ) . 'media-grid.js', array( 'media-editor' ), false, 1 );
wp_localize_script( 'media-grid', '_wpMediaGridSettings', array(
'adminUrl' => parse_url( self_admin_url(), PHP_URL_PATH ),
) );
}
Le plugin va maintenant charger une version modifiée du fichier media-grid.js
qui se trouve dans le dossier du plugin.
Disclaimer: Je n'ai aucune expérience en Backbone, ce qui suit est juste un PoC.
Cela fait le travail mais charge le modal avant de naviguer vers la page d'édition. Quelqu'un avec des compétences de Backbone peut trouver une solution plus propre.
Changer la ligne 490 de:
// Update browser url when navigating media details
if ( this.model ) {
this.gridRouter.navigate( this.gridRouter.baseUrl( '?item=' + this.model.id ) );
}
à:
// Update browser url when navigating media details
if ( this.model ) {
this.gridRouter.navigate( this.gridRouter.baseUrl( '?item=' + this.model.id ) );
var currentLocation = location.href;
//replace upload.php by post.php
var newRoute = currentLocation.replace('upload.php', 'post.php');
//replace item ?item= by ?post=
newRoute = newRoute.replace('?item=', '?post=');
newRoute += '&action=edit';
window.location = newRoute;
}
Le lien que vous souhaitez modifier est généré via Javascript dans le fichier /wp-includes/js/media-grid.js
(normalement la version modifiée est chargée: /wp-includes/js/media-grid.min.js
). À la ligne 314 (dans Wordpress 4.0.1):
313: routes: {
314: 'upload.php?item=:slug': 'showItem',
315: 'upload.php?search=:query': 'search'
316: },
Vous pouvez essayer de le modifier pour qu'il soit:
313: routes: {
314: 'post.php?action=edit&post=:slug': 'showItem',
315: 'upload.php?search=:query': 'search'
316: },
Je n'ai cependant pas essayé cela moi-même. @Jeppe a raison de dire que cette modification est problématique, car les mises à jour écraseront toutes les modifications apportées aux fichiers .js.
Vous allez changer le back-end wordpress, ces modifications seront perdues lors de la mise à jour.
Je vous suggère d’appuyer sur ce bouton à la place: http://i.imgur.com/5Ce3MzH.png devrait ressembler)
Cela vous donne une vue détaillée et tous les liens de cette vue mènent à la page "Plus de détails".
J'espère que cela pourrait aider!