2011-05-22 4 views
0

J'utilise la fonction wp_list_bookmarks() dans wordpress pour obtenir des liens qui ont été ajoutés dans le backend Wordpress, des choses comme blogroll etc.Les fonctions Wordpress peuvent-elles être modifiées?

Mon problème est que j'ai besoin de la liste pour sortir dans un certain façon que je peux le mettre dans des colonnes, avec environ 5 liens dans chaque colonne.

Par défaut, c'est juste une grande liste. Est-il possible que je puisse utiliser PHP pour modifier la façon dont cette fonction publie les liens afin que j'exécute un compteur, et après 5 liens ferme la liste actuelle et en commence une nouvelle pour la colonne suivante?

J'ai besoin fondamentalement quelque chose comme ceci:

<ul class="column-1"> 
    <li>link1</li> 
    <li>link2</li> 
    <li>link3</li> 
    <li>link4</li> 
    <li>link5</li> 
</ul> 
<ul class="column-2"> 
    <li>link6</li> 
    <li>link7</li> 
    <li>link8</li> 
    <li>link9</li> 
    <li>link10</li> 
</ul> 
// etc... 

Merci à l'avance.

Répondre

1

Vous pouvez utiliser la fonction get_bookmarks() de Wordpress, puis adapter la sortie à votre convenance. Voir ici pour un exemple:

<?php 

$bookmarks = get_bookmarks(array(
      'orderby'  => 'name', 
      'order'   => 'ASC', 
      'category_name' => 'Related Sites' 
        )); 

// Loop through each bookmark and print formatted output 
$column = 1; 
$counter = 1; 

echo "<ul class='column-$column'>"; 
foreach ($bookmarks as $bm) { 
    if ($counter >= 5) 
    { 
     $column++; 
     $counter = 1; // reset the counter 

     echo "</ul><ul class='column-$column'>"; 

    } 
    printf('<li><a class="relatedlink" href="%s">%s</a></li>', $bm->link_url, __($bm->link_name)); 
    $counter++; 
} 
echo "</ul>"; 

?> 

Référence: http://codex.wordpress.org/Template_Tags/get_bookmarks#Examples

+0

le code n'a pas été testé, mais j'espère que vous aurez l'idée de ce que j'essaie de proposer. Donc mes sincères excuses s'il y a des bugs (même si j'ai essayé de faire en sorte que le code soit sans bug) :) – thesocialgeek

+0

Ca a du sens, je vais essayer ce soir et vous faire savoir comment ça se passe. Merci. :) – diggersworld

0

Selon ce Plugin API wordpress:

Outre les crochets (actions et filtres) décrits ci-dessus, une autre façon pour un plug-in pour modifier le comportement de WordPress est de passer outre les fonctions WordPress. En fait, il existe un petit ensemble de fonctions que WordPress a l'intention de redéfinir pour les plugins.

Malheureusement, wp_list_bookmarks n'est pas sur leur liste de fonctions qui sont considérés comme "pluggable".

Peut-être que vous pouvez trouver quelque chose d'autre qui correspond à vos besoins dans l'API?

0

Vous pouvez accrocher dans wp_list_bookmarks() d'un plug-in (que vous devez écrire). Ce plugin peut alors manipuler le code HTML normal qui provient de la fonction wp_list_bookmarks() et renvoyer ce code HTML manipulé pour qu'il soit renvoyé ou renvoyé comme d'habitude.

L'idée est de créer (et activer!) Un plugin simple comme:

<?php 
/* 
Plugin Name: Diggersworld Bookmarks 
Plugin URI: https://stackoverflow.com/questions/6089883/can-wordpress-functions-be-modified 
Description: Example plugin to customise output from wp_list_bookmarks 
Version: 0.0 
*/ 

function diggersworld_list_bookmarks($html) 
{ 
    // Do your transformation here 
    return '<p>Mmm pie.</p>'; 
} 

add_action('wp_list_bookmarks', 'diggersworld_list_bookmarks'); 

?>  

Enregistrer en tant que fichier dans votre dossier plugins, et l'activer à partir du panneau d'administration Wordpress. Vous verrez que là où vos signets ont été placés, le texte Mmm pie. est là à la place. Modifiez cet exemple de plugin pour renvoyer le code HTML souhaité en utilisant la méthode de votre choix.

Puisqu'il s'agit d'un crochet dans la fonction wp_list_bookmarks(), vos modèles doivent appeler normalement wp_list_bookmarks().

Bien sûr, le corps de la fonction plugin pourrait utiliser un code similaire à celui de thesocialgeek's answer.

Questions connexes