web-dev-qa-db-fra.com

Ajout de liens (spécifiques au blog) à la page d'administration "Mes sites"

La page d’administration Mes sites ne contient que des liens vers les tableaux de bord et les pages de production des sites, qui ont une valeur limitée. J'essaie de trouver un moyen d'ajouter des liens plus utiles comme New Post , brouillons et Commentaires afin de faire de la page un emplacement pratique pour l’administration centrale (de cette manière, je n’ai pas à utiliser une page que j’ai pavée avec IFrames pour cela).

Évidemment, je vais devoir écrire un plugin, mais j’ai du mal à trouver de bons exemples de modification des pages d’administrateur, en particulier de cette manière (ajouter des informations spécifiques à un blog à plusieurs éléments d’une page d’administrateur). La chose la plus proche que j'ai pu trouver était juste ici; une question sur le tri des éléments, mais la solution acceptée ajoute simplement un filtre pour trier la liste des blogs et ne résout pas le problème.

Le fichier /wp-admin/my-sites.php crée la liste de blogs sur la page Mes sites avec le code suivant:

foreach ( $row as $user_blog ) {
    $s = $i == 3 ? '' : 'border-right: 1px solid #ccc;';
    echo "<td valign='top' style='$s'>";
    echo "<h3>{$user_blog->blogname}</h3>";

    /* CREATE LINKS HERE: */
    echo "<p>" . apply_filters( 'myblogs_blog_actions', "<a href='" . esc_url( get_home_url( $user_blog->userblog_id ) ). "'>" . __( 'Visit' ) . "</a> | <a href='" . esc_url( get_admin_url( $user_blog->userblog_id ) ) . "'>" . __( 'Dashboard' ) . "</a>", $user_blog ) . "</p>";

    echo apply_filters( 'myblogs_options', '', $user_blog );
    echo "</td>";
    $i++;
}

Il y a deux problèmes:

  1. Je ne trouve aucune information sur l'enchaînement d'une modification au filtre myblogs_blog_actions. Le mieux que je puisse faire est d’ajouter du texte au HTML contenant les liens, mais sans informations sur le blog en cours de traitement, je ne peux pas fournir de liens spécifiques au blog, du moins pas sans avoir au préalable analysé les liens déjà fournis, ce qui semble erroné. façon de faire cela.

  2. Je ne trouve aucune information sur une fonction qui renvoie l'URL des pages de commentaires, post-nouvelles ou brouillons (ou autres administrateurs). Évidemment, je pourrais ajouter une chaîne codée en dur à l’URL racine du blog (par exemple, post-new.php), mais cela semble bien kludgy; il existe sûrement un moyen intégré pour les obtenir.

J'ai créé un plugin de test qui peut modifier les liens, mais il n'a aucun moyen d'accéder à l'ID du blog pour fournir des liens spécifiques au blog car aucun paramètre supplémentaire n'est fourni. Je suppose que je pourrais analyser les liens existants dans la chaîne transmise au filtre, mais cela est aussi inélégant que possible:

add_filter('myblogs_blog_actions', 'my_sites_links');
function my_sites_links($links, $a, $b, $c) {
return                 "\n"
  . var_dump($links) . "\n"
  . var_dump($a)     . "\n"
  . var_dump($b)     . "\n"
  . var_dump($c)     . "\n";

Quelqu'un a-t-il des suggestions pour y parvenir?

1
Synetech
function my_sites_links($links, $a, $b, $c) {
global $user_blog; 
$user_blog->userblog_id;
}
1
phpdew