Como concorde uma string em um elemento de matriz PHP?
-
21-09-2019 - |
Pergunta
Estou personalizando o WordPress Blog e preciso fazer widgets de barra lateral personalizados. Meu PHP está enferrujado, na melhor das hipóteses. O que estou tentando fazer é concatenar uma variável PHP em uma string sendo definida como um elemento de matriz. Aqui está o código que estou usando, ele não parece funcionar. Tudo o que faz é imprimir o diretório da folha de estilo no topo de todas as páginas:
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>",
));
Então, como você pode ver aqui, estou tentando concatenar o bloginfo('stylesheet_directory')
em 2 dos elementos. Isso não funciona corretamente. Ele acaba imprimindo -o no topo da página antes do doctype
.
Solução
bloginfo
('Stylesheet_directory') ecoarão o diretório da folha de estilo. Quando você declara a matriz, está efetivamente escrevendo para o stdout. É por isso que ele será exibido no topo da página. O que você está procurando é get_bloginfo
.
Outras dicas
Usar implodir:
string implode ( string $glue , array $pieces )
string implode ( array $pieces )
Junte -se a elementos da matriz com uma corda de cola.
Parece que você tem uma vírgula no final. Pode ser isso. Remova e teste. Eu também substituo "por um Singe '.
ATUALIZARsubstituiu o blogInfo () por 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);
}
Eu sei que isso não é tecnicamente A resposta para sua pergunta, mas você considerou:
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>",
));
Seria mais fácil e rápido - envolveria apenas a chamada da função BlogInfo uma vez.