1 つのオプションがエコー アウトされた次の関数を考えてみましょう。
function dynamic_options() {
$getheadercolor = get_header_textcolor();
$options_social = get_option('sandbox_theme_social_options');
$wrapper_background_color = get_option('wrapper_background_color');
if($getheadercolor !='blank'){
echo '<style type="text/css">';
}
if($getheadercolor !='blank') {
echo "\n"."#header a{
color:#$getheadercolor;
}";
}//End If $getheadercolor
if($getheadercolor !='blank'){
echo "\n".'</style>';
}
}// End Dynamic options
このようなものをヘッダーに出力します(問題なく動作し、希望どおりに動作します)
<style type="text/css">
#header a{
color:#30409b;
}
</style>
ここで問題があります。この関数にはオプションが 1 つだけではなく、多数のオプション(20 ~ 30 個のオプション) があります。要点を説明するために、今のところ、関数には5 つのオプションがあるとしましょう。したがって、次のようになります。
function dynamic_options() {
$getheadercolor = get_header_textcolor();
$options_social = get_option('sandbox_theme_social_options');
$wrapper_background_color = get_option('wrapper_background_color');
//My main "problem" is an IF Statement below because it will look like a mess
//With 20 options or more and with all those OR inside it...
if($getheadercolor !='blank' || $sitecolor !='' || $textcolor !=''
|| $backgroundcolor !='' || $menucolor !=''){
echo '<style type="text/css">';
}
if($getheadercolor !='blank') {
echo "\n"."#header a{
color:#$getheadercolor;
}";
}//End If $getheadercolor
if($sitecolor !='blank') {
echo "\n"."#wrapper{
background-color:#$sitecolor;
}";
}//End If $sitecolor
if($textcolor !='blank') {
echo "\n".".entry p{
color:#$textcolor;
}";
}//End If $textcolor
if($backgroundcolor !='blank') {
echo "\n"."body{
background-color:#$backgroundcolor;
}";
}//End If $backgroundcolor
if($menucolor !='blank') {
echo "\n".".nav{
background-color:#$menucolor;
}";
}//End If $menucolor
//So to even close my style tag i need a bunch of those statments
if($getheadercolor !='blank' || $sitecolor !='' || $textcolor !=''
|| $backgroundcolor !='' || $menucolor !=''){
echo "\n".'</style>';
}
したがって、上記の関数は機能しますが、この部分if($getheadercolor !='blank' || $sitecolor !='' || $textcolor !=''
|| $backgroundcolor !='' || $menucolor !='')
は私には間違っているようです。この IF ステートメントには20
を超えるオプションがあるため、コードが遅くなり、非効率的になるのではないかと心配しています。私のPHP Forceは強力ではありません...私の唯一の(理想的ではない)解決策は、次のように2つのIFステートメントを単純に省略することです:
function dynamic_options() {
$getheadercolor = get_header_textcolor();
$options_social = get_option('sandbox_theme_social_options');
$wrapper_background_color = get_option('wrapper_background_color');
echo '<style type="text/css">';
if($getheadercolor !='blank') {
echo "\n"."#header a{
color:#$getheadercolor;
}";
}//End If $getheadercolor
if($sitecolor !='blank') {
echo "\n"."#wrapper{
background-color:#$sitecolor;
}";
}//End If $sitecolor
if($textcolor !='blank') {
echo "\n".".entry p{
color:#$textcolor;
}";
}//End If $textcolor
if($backgroundcolor !='blank') {
echo "\n"."body{
background-color:#$backgroundcolor;
}";
}//End If $backgroundcolor
if($menucolor !='blank') {
echo "\n".".nav{
background-color:#$menucolor;
}";
}//End If $menucolor
echo "\n".'</style>';
}// End Dynamic options
これらの IF ステートメントを使用しないコードも機能しますが、問題は、オプションがない場合、関数がヘッダー内に空のCSS スタイル タグをエコーすることです。これは望ましくありません。
この関数をよりうまく機能させるための例やアドバイスを誰かに教えてもらえますか?
PS私は自分自身をPHPの初心者だと考えているので、誰かが私に素晴らしく明確なアドバイスや例を教えてくれれば、それは大歓迎です! ありがとうございました!!! <style type="text/css"></style>