这段PHP代码有效吗?

这段PHP代码有效吗?,php,wordpress,performance,switch-statement,Php,Wordpress,Performance,Switch Statement,这似乎是一个常见的问题,但有各种不同的答案,所以这里来。我正在帮助别人建立一个wordpress网站,我做了一个切换语句来检查用户在哪个类别页面上显示图片和描述。我还编写了一个非常简单的函数来查看类别是否有帖子,以便显示消息 为了更好地解释代码: 顶部的这段代码使用了一些Wordpress函数和对象(据我所知)来获取当前页面的类别Slug: $cat = get_category( get_query_var( 'cat' ) ); $cat_id = $cat->cat_ID;

这似乎是一个常见的问题,但有各种不同的答案,所以这里来。我正在帮助别人建立一个wordpress网站,我做了一个切换语句来检查用户在哪个类别页面上显示图片和描述。我还编写了一个非常简单的函数来查看类别是否有帖子,以便显示消息

为了更好地解释代码: 顶部的这段代码使用了一些Wordpress函数和对象(据我所知)来获取当前页面的类别Slug:

$cat = get_category( get_query_var( 'cat' ) );
    $cat_id = $cat->cat_ID;
    $cat_name = $cat->name;
    $cat_slug = $cat->slug;
我将所有图片重命名为与类别slug相同的名称,以便对所有语句重用相同的变量

下一段代码将查看页面是否有帖子:

function add_page_title_header( ){
        function check_if_posts(){
            if(!have_posts()){
                echo '<span id="stillworking">There currently isn\'t any content for this category, but there will be soon. For now try another!</span>';
            }
        }
函数添加页面标题标题(){
函数检查\u if\u posts(){
如果(!have_posts()){
echo“目前没有此类别的任何内容,但很快就会有。现在请尝试其他内容!”;
}
}
代码的其余部分(嵌入下面的switch语句)使用它从页面获得的类别slug来输入图片,然后输入硬编码的描述(通过这种方式解释后,我意识到,通过再次使用相同的变量,我不需要为每个变量都使用switch语句,我将在下面的答案中对此进行说明)

$cat=get_category(get_query_var('cat');
$cat\u id=$cat->cat\u id;
$cat_name=$cat->name;
$cat_slug=$cat->slug;
开关($cat_slug){
“超级食肉动物”案例:
回声';
echo“一个由隐秘生物主演的木偶剧”;
检查_if_posts();
打破
案例“利益事项”:
回声';
呼应“各种有趣的事情”;
检查_if_posts();
打破
案例“蒂姆和詹姆斯”:
回声';
echo“网站创建者Tim和James的社论文章”;
检查_if_posts();
打破
案例“漫画的锡时代”:
回声';
echo“使用免版税漫画书艺术的网络漫画”;
检查_if_posts();
打破
“电锯播客”案例:
回声';
echo“网站创建者蒂姆和詹姆斯的播客”;
检查_if_posts();
打破
案例“songink”:
回声';
呼应“以歌曲为灵感的短篇小说”;
检查_if_posts();
打破
“外卖”案例:
回声';
echo“本周要做的一件简单易懂的事情”;
检查_if_posts();
打破
“电锯游戏”案例:
回声';
echo“玩、评论和发明各种游戏”;
检查_if_posts();
打破
“电锯广播剧院”案例:
回声';
echo“一个虚假的、老套的广播节目,里面充斥着假动作。”;
检查_if_posts();
打破
案例“规范不正确”:
回声';
echo“我们可爱的朋友Jason的帖子”;
检查_if_posts();
打破
“电锯术语”案例:
回声';
呼应“语言和文字的乐趣”;
检查_if_posts();
打破
案例“炸鸡棒极了”:
回声';
呼应“扭曲的食品评论”;
检查_if_posts();
打破
“收到传输”案例:
回声';
回显“每天来回的视频对话”;
检查_if_posts();
打破
“链接汉堡”案例:
回声';
回声“一组链接可在一次会议中享受”;
检查_if_posts();
打破
“电锯审查”案例:
回声';
echo“网站创作者的各种评论”;
检查_if_posts();
打破
“五花八门的阴谋”一案:
回声';
echo“对于似乎不适合其他任何地方的帖子,这是一个包罗万象的分类。”;
检查_if_posts();
打破
违约:
echo“这太尴尬了,你不应该看到这个页面!”;
}
}
添加过滤器(“主题页面标题”、“添加页面标题标题”);
如果你看到任何明显的错误或记忆犹新的事情,请告诉我。我还计划在网站全部完成后利用浏览器缓存,我编写的功能是否会产生问题?通常在发布帖子时,它会重置某些缓存元素,但此函数是否仅在清除缓存后再次运行?有没有办法避免这种情况

我在过去无数次使用过这个网站,但这是我的第一个问题,所以万岁


通过访问并单击左侧的任何类别,您可以在(尽管是beta版)操作中看到它。一旦设计完成,其他优化将发挥作用,但我现在只关心PHP的这一部分。

如果您可以像加载其他字段一样从数据库加载描述,那将是最简单的。否则,如果您需要硬编码描述,并且您的输出除了描述文本之外总是相同的,那么更简单的方法是使用一个数组存储描述文本,然后不复制相同的输出代码

例如

$descriptions=数组(
“超级食肉动物”=>“由神秘生物主演的木偶剧。”,
“有趣的事情”=>“各种有趣的事情。”,
‘tim and james’=>“网站创建者tim and james发表的社论。”
);
回声';
回显“”。htmlspecialchars($descriptions[$cat_slug]);
检查_if_posts();

难道你不能通过描述代码的功能而不是提供100行意大利面代码来更好地解决这个问题吗。。?我不是想冒犯你。。如果你真的需要帮助,只是一个建议,让别人很容易帮助你。。。。所有案例块的唯一区别是实际描述,因此将描述粘贴在由
$cat_slug
索引的数组中,只需使用isset进行测试,然后从数组中获取描述,这样您就只有一组ech
$cat = get_category( get_query_var( 'cat' ) );
$cat_id = $cat->cat_ID;
$cat_name = $cat->name;
$cat_slug = $cat->slug;
switch ($cat_slug) {
    case 'ultracarnivorous':
        echo '<span id="titlecenter"><img src="'. home_url() . '/images/big/' . $cat_slug . '.png"></span>';
        echo '<span id="catdescription">A puppet show starring cryptids.</span>';
        check_if_posts();
        break;
    case 'things-of-interest':
        echo '<span id="titlecenter"><img src="'. home_url() . '/images/big/' . $cat_slug . '.png"></span>';
        echo '<span id="catdescription">Interesting things of all kinds.</span>';
        check_if_posts();
        break;
    case 'tim-and-james':
        echo '<span id="titlecenter"><img src="'. home_url() . '/images/big/' . $cat_slug . '.png"></span>';
        echo '<span id="catdescription">Editorial posts by Tim and James, the website\'s creators.</span>';
        check_if_posts();
        break;
    case 'the-tin-age-of-comics':
        echo '<span id="titlecenter"><img src="'. home_url() . '/images/big/' . $cat_slug . '.png"></span>';
        echo '<span id="catdescription">A web comic using royalty free comic book art.</span>';
        check_if_posts();
        break;
    case 'chainsaw-podcast':
        echo '<span id="titlecenter"><img src="'. home_url() . '/images/big/' . $cat_slug . '.png"></span>';
        echo '<span id="catdescription">A podcast by Tim and James, the website\'s creators.</span>';
        check_if_posts();
        break;
    case 'songink':
        echo '<span id="titlecenter"><img src="'. home_url() . '/images/big/' . $cat_slug . '.png"></span>';
        echo '<span id="catdescription">Short stories inspired by songs.</span>';
        check_if_posts();
        break;
    case 'takeaways':
        echo '<span id="titlecenter"><img src="'. home_url() . '/images/big/' . $cat_slug . '.png"></span>';
        echo '<span id="catdescription">A short, accessible thing to do this week.</span>';
        check_if_posts();
        break;
    case 'chainsaw-gaming':
        echo '<span id="titlecenter"><img src="'. home_url() . '/images/big/' . $cat_slug . '.png"></span>';
        echo '<span id="catdescription">Playing, reviewing and inventing games of all kinds.</span>';
        check_if_posts();
        break;
    case 'chainsaw-radio-theatre':
        echo '<span id="titlecenter"><img src="'. home_url() . '/images/big/' . $cat_slug . '.png"></span>';
        echo '<span id="catdescription">A fake, old-timey radio show full of factoids.</span>';
        check_if_posts();
        break;
    case 'canonically-incorrect':
        echo '<span id="titlecenter"><img src="'. home_url() . '/images/big/' . $cat_slug . '.png"></span>';
        echo '<span id="catdescription">Posts by our lovable friend, Jason.</span>';
        check_if_posts();
        break;
    case 'chainsaw-phraseology':
        echo '<span id="titlecenter"><img src="'. home_url() . '/images/big/' . $cat_slug . '.png"></span>';
        echo '<span id="catdescription">Fun with words and language.</span>';
        check_if_posts();
        break;
    case 'chicken-fried-awesome':
        echo '<span id="titlecenter"><img src="'. home_url() . '/images/big/' . $cat_slug . '.png"></span>';
        echo '<span id="catdescription">Food reviews with a twist.</span>';
        check_if_posts();
        break;
    case 'transmission-received':
        echo '<span id="titlecenter"><img src="'. home_url() . '/images/big/' . $cat_slug . '.png"></span>';
        echo '<span id="catdescription">A daily, back and forth video conversation.</span>';
        check_if_posts();
    break;
    case 'link-burger':
        echo '<span id="titlecenter"><img src="'. home_url() . '/images/big/' . $cat_slug . '.png"></span>';
        echo '<span id="catdescription">A group of links to enjoy in one sitting.</span>';
        check_if_posts();
        break;
    case 'chainsaw-reviews':
        echo '<span id="titlecenter"><img src="'. home_url() . '/images/big/' . $cat_slug . '.png"></span>';
        echo '<span id="catdescription">Reviews of all kinds by the website\'s creators.</span>';
        check_if_posts();
        break;
    case 'multifarious-machinations':
        echo '<span id="titlecenter"><img src="'. home_url() . '/images/big/' . $cat_slug . '.png"></span>';
        echo '<span id="catdescription">A catch-all category for posts that don\'t seem to fit anywhere else.</span>';
        check_if_posts();
        break;



    default:
    echo "This is awkward, you shouldn't be seeing this page!";
}
    }

    add_filter( 'thematic_page_title', 'add_page_title_header' );
$descriptions = array(
   'ultracarnivorous'   =>  "A puppet show starring cryptids.",
   'things-of-interest' =>  "Interesting things of all kinds.",
   'tim-and-james'      =>  "Editorial posts by Tim and James, the website's creators."
);
echo '<span id="titlecenter"><img src="'. home_url() . '/images/big/' . $cat_slug . '.png"></span>';
echo '<span id="catdescription">' . htmlspecialchars($descriptions[$cat_slug]) . '</span>';
check_if_posts();