添加用于在帖子内容中显示多个类别ID中的自定义文本实例的函数

时间:2014-09-17 作者:Peter James Williamson

我创建了一个额外的内容文件,并插入了一个类别(以及与该类别相关的)的自定义文本,以便在属于该类别的所有帖子中(随机)显示,一切正常

<?php    
add_filter(\'the_content\', \'custom_category_text\');  
function custom_category_text($content) {
    global $post;  

    $office = array( "Pellentesque arcu nisi, pellentesque nec gravida quis.", "Pellentesque arcu nisi." );
        $office_random  = array_rand($office, 2);

    $office1 = array( "Pellentesque arcu nisi, pellentesque nec gravida quis.", "Pellentesque arcu nisi." );
        $office1_random = array_rand($office1, 2); 

    $custom_category_text = \'<p> \' . $office[$office_random[0]] . \' \' . $office1[$office1_random[0]] . \'</p>\';

    // Category ID = 1
    if (in_category(\'1\')) {
        $content = $content . $custom_category_text;
    }
    return $content;
}
?>
在上面的代码中,我的类别是office,我用$office和$office1(用于自定义文本的两段)来标识自定义文本,以便我记住我在做什么。

我有两个类别,现在想插入与第二个类别相关的额外随机自定义文本,以便自定义文本的每个实例都显示在由其类别标识的所有帖子中这是下面的修订代码,但类别ID 2的自定义文本根本不显示。

<?php
add_filter(\'the_content\', \'custom_category_text\');
function custom_category_text($content) {
    global $post;  

    $office = array( "Pellentesque arcu nisi, pellentesque nec gravida quis.", "Pellentesque arcu nisi." );
        $office_random  = array_rand($office, 2);

    $office1 = array( "Pellentesque arcu nisi, pellentesque nec gravida quis.", "Pellentesque arcu nisi." );
        $office1_random = array_rand($office1, 2); 

    $home = array( "Pellentesque arcu nisi, pellentesque nec gravida quis.", "Pellentesque arcu nisi."  );
        $home_random  = array_rand($home, 2);

    $home1 = array( "Pellentesque arcu nisi, pellentesque nec gravida quis.", "Pellentesque arcu nisi." );
        $home1_random = array_rand($home1, 2); 

    $custom_category_text = \'<p> \' . $office[$office_random[0]] . \' \' . $office1[$office1_random[0]] . \'</p>\';

    // Category ID = 1
    if (in_category(\'1\')) {
        $content = $content . $custom_category_text;
    }
    return $content;   

    $custom_category_text = \'<p> \' . $home[$home_random[0]] . \' \' . $home1[$home1_random[0]] . \'</p>\';
    // Category ID = 2
    if (in_category(\'2\')) {
        $content = $content . $custom_category_text;
    }
    return $content;
}
?>
这就是我的问题,我希望有人能帮我解决这个问题-第二类的自定义文本根本不显示。

多谢斯佩特

1 个回复
最合适的回答,由SO网友:Pieter Goosen 整理而成

这实际上看起来不像Wordpress的问题,但遗憾的是缺乏PHP技能。您的问题在于这段代码

$custom_category_text = \'<p> \' . $office[$office_random[0]] . \' \' . $office1[$office1_random[0]] . \'</p>\';

// Category ID = 1
if (in_category(\'1\')) {
    $content = $content . $custom_category_text;
}
return $content;   

$custom_category_text = \'<p> \' . $home[$home_random[0]] . \' \' . $home1[$home1_random[0]] . \'</p>\';
// Category ID = 2
if (in_category(\'2\')) {
    $content = $content . $custom_category_text;
}
return $content;
类别2的代码永远不会工作,因为您已经返回了变量,并且正在为的两个实例设置两个不同的值$custom_category_text 也您可以通过正确使用if else 陈述你可以试试这样的

if (in_category(\'1\')) { // Category ID = 1
    $custom_category_text = \'<p> \' . $office[$office_random[0]] . \' \' . $office1[$office1_random[0]] . \'</p>\';
    $content = $content . $custom_category_text;
}elseif(in_category(\'2\')) { // Category ID = 2
    $custom_category_text = \'<p> \' . $home[$home_random[0]] . \' \' . $home1[$home1_random[0]] . \'</p>\';
    $content = $content . $custom_category_text;
}

return $content;
只需将我答案顶部的原始代码替换为

结束

相关推荐

theme functions (hooks)

WordPress已经提出了这个问题,但没有答案。我只是想在这个论坛上试试,如果有人知道的话,因为我也有同样的问题。要使用jquery滑块编辑我的主题,如何转到该脚本?,显示“$主题->挂钩(\'content\\u before\');”在content div标记中。有人能帮忙吗?我的主题索引。php包含以下内容<div id=\"main\"> <?php $theme->hook(\'main_before\'); ?> &#x