2009-11-20 8 views
1

Je personnalise le blog wordpress et j'ai besoin de faire des widgets personnalisés. Mon PHP est au mieux rouillé. Ce que j'essaie de faire est de concaténer une variable php en une chaîne étant définie comme un élément de tableau. voici le code que j'utilise, ça ne semble pas fonctionner. Tout ce qu'il fait est d'imprimer le répertoire stylesheet en haut de chaque page:Comment concaténer une chaîne dans un élément de tableau PHP?

if (function_exists("register_sidebar")) 
    register_sidebar(array(
     "before_widget" => "<div class=\"rounded_box\"><div class=\"top_curve\"><img src=\"".bloginfo('stylesheet_directory')."/images/top_curve.jpg\" alt=\"Top\" width=\"247\" height=\"9\" /></div><div class=\"middle\">", 
     "after_widget" => "</div><div class=\"bottom_curve\"><img src=\"".bloginfo('stylesheet_directory')."/images/bottom_curve.jpg\" alt=\"Bottom\" /></div></div>", 
     "before_title" => "<h2>", 
     "after_title" => "</h2>", 
    )); 

comme vous pouvez le voir ici, je suis en train de concaténer le bloginfo('stylesheet_directory') dans 2 des éléments. Cela ne fonctionne pas correctement. Il finit juste de l'imprimer en haut de la page avant le doctype.

+0

Je ne suis pas familier avec WordPress, mais à première vue, la classe bloginfo() fait écho aux choses plutôt que de retourner une chaîne. – Powerlord

+0

si c'est le cas, comment pourrais-je le contourner? –

+1

Aaaaah. R. Vous avez raison. Russ, utilisez get_bloginfo ("stylesheet_directory") – Steven

Répondre

3

bloginfo ('stylesheet_directory') fera écho aux répertoire stylesheet. Lorsque vous déclarez le tableau, vous écrivez efficacement à stdout. Voilà pourquoi il affichera en haut de la page. ce que vous cherchez est get_bloginfo.

+0

À droite sur @Gordon. C'est la bonne réponse. –

+0

merci, c'était exactement ça! –

+0

En aparté, un bon exemple de pourquoi les helpers de type 'view' ne devraient pas se répercuter d'eux-mêmes, mais retourner la sortie pour le script appelant à contrôler. –

0

utilisation implode:

string implode (string $glue , array $pieces ) 
string implode (array $pieces) 

inscription des éléments de tableau avec un cordon de colle.

+0

Je n'essaie pas de joindre les éléments du tableau. J'essaye de concatenante le 'bloginfo ('stylesheet_directory')' dans 2 des éléments mais il ne fonctionne pas correctement. –

0

Il semble que vous ayez une virgule à la fin. Ça pourrait être ça. Retirez-le et testez. Je suis également remplacer \ » avec un singe.

MISE À JOUR bloginfo remplacé() avec get_bloginfo().

if (function_exists("register_sidebar")) 
{ 
    $args =array(
    "before_widget" => "<div class='rounded_box'><div class='top_curve'><img src='".get_bloginfo('stylesheet_directory')."/images/top_curve.jpg' alt='Top' width='247' height='9' /></div><div class='middle'>", 
    "after_widget" => "</div><div class='bottom_curve'><img src='".get_bloginfo('stylesheet_directory')."/images/bottom_curve.jpg' alt='Bottom' /></div></div>", 
    "before_title" => "<h2>", 
    "after_title" => "</h2>");' 

    register_sidebar($args); 
} 
+0

cela a le même effet d'imprimer le répertoire de la feuille de style en haut de la page –

+0

Et si vous essayez '$ before_wid =" chaîne 1 ".bloginfo ('stylesheet_directory')." Chaîne 2 ";' Et vous mettez ensuite '" before_widget "=> $ before_wid'? – Steven

0

Je sais que ce n'est pas techniquement la réponse à votre question, mais avez-vous pensé:

if (function_exists("register_sidebar")) 
    $ssheet_dir = bloginfo('stylesheet_directory'); 
    register_sidebar(array(
      "before_widget" => "<div class=\"rounded_box\"><div class=\"top_curve\"><img src=\"$ssheet_dir/images/top_curve.jpg\" alt=\"Top\" width=\"247\" height=\"9\" /></div><div class=\"middle\">", 
      "after_widget" => "</div><div class=\"bottom_curve\"><img src=\"$ssheet_dir/images/bottom_curve.jpg\" alt=\"Bottom\" /></div></div>", 
      "before_title" => "<h2>", 
      "after_title" => "</h2>", 
    )); 

Il serait plus facile et plus rapide - il ne consister à faire appel à la fonction bloginfo une fois.