使用 functions.php 中的函数创建一个 Wordpress 简码

Create a Wordpress Shortcode with functions in functions.php

我尝试创建的短代码应该 return 下面描述的 1 个匈牙利语单词,这应该每个月都会更改。当在页面或 post 中使用短代码时,代码已放入 functions.php 和 return 中。任何帮助将非常感激。当使用 echo honapnev($honap);.

作为简单的 php 和 html 时,它确实有效
    $honap = date("n");
function honapnev_shortcode( $ho ) {

  if ($ho==1) {
        return "Januári";
    }
  elseif ($ho==2) {
        return "Februári";
    }
  elseif ($ho==3) {
        return "Márciusi";
    }
  elseif ($ho==4) {
        return "Áprilisi";
    }
  elseif ($ho==5) {
        return "Májusi";
    }
  elseif ($ho==6) {
        return "Júniusi";
    }
  elseif ($ho==7) {
        return "Júliusi";
    }
  elseif ($ho==8) {
        return "Augusztusi";
    }
  elseif ($ho==9) {
        return "Szeptemberi";
    }
  elseif ($ho==10) {
        return "Októberi";
    }
  elseif ($ho==11) {
        return "Novemberi";
    }
  elseif ($ho==12) {
        return "Decemberi";
    }
}
add_shortcode( 'honapnev', 'honapnev_shortcode' );

当我删除行时 add_shortcode( 'honapnev', 'honapnev_shortcode' ); 括号中的简码出现在页面上...

function honapnev_shortcode($atts)
{        
    switch (date("n"))
    {
        case 1:
            {
                $month="Januári";
                break;
            }
        case 2:
            {
                $month="Februári";
                break;
            }
        case 3:
            {
                $month="Márciusi";
                break;
            }
        case 4:
            {
                $month="Áprilisi";
                break;
            }
        case 5:
            {
                $month="Májusi";
                break;
            }
        case 6:
            {
                $month="Júniusi";
                break;
            }
        case 7:
            {
                $month="Júliusi";
                break;
            }
        case 8:
            {
                $month="Augusztusi";
                break;
            }
        case 9:
            {
                $month="Szeptemberi";
                break;
            }
        case 10:
            {
                $month="Októberi";
                break;
            }
        case 11:
            {
                $month="Novemberi";
                break;
            }
        case 12:
            {
                $month="Decemberi";
                break;
            }
            default:
            {
                $month="Januári";
                break;
            }
    }
    return $month;
}

add_shortcode('honapnev', 'honapnev_shortcode');

function honapnev_shortcode($atts)
{        
   $months=array("Januári", "Februári", "Márciusi", "Áprilisi", "Májusi","Júniusi", "Júliusi", "Augusztusi","Szeptemberi", "Októberi", "Novemberi", "Decemberi");
   return $months[date("n")-1];
}

add_shortcode('honapnev', 'honapnev_shortcode');

你需要先解析你的函数中的shortcode属性,另外,elseif或switch语句可以替换为一个short function。

function honapnev_shortcode($atts)
{
    /**
     * Get the shortcode attributes default value = 1
     */
    $atts = shortcode_atts(array(
        'ho' => 1,
    ), $atts, 'honapnev');

    $ho = intval($atts['ho']);
    /**
     * Is better use an Array in this case
     */
    $words = ['Januári', 'Februári', 'Márciusi', 'Áprilisi', 'Májusi', 'Júniusi', 'Júliusi', 'Augusztusi', 'Szeptemberi', 'Októberi', 'Novemberi', 'Decemberi'];

    return $words[$ho - 1];

}
add_shortcode('honapnev', 'honapnev_shortcode');

简码

[honapnev]

[honapnev ho="1"]

[honapnev ho="6"]

[honapnev ho="12"]