使用操作the_content时不加载内容

时间:2014-01-13 作者:jnbdz

当我使用add\\u操作(“the\\u content”。。。

页面内容无法加载。我正在尝试的内容也会出现在页面中的各种位置。为什么?

有没有办法强迫它只出现在我的帖子下面?

function __construct()
{
    add_action( \'wp_footer\', array(&$this, \'loadRatingsJs\') );
    add_action( \'wp_ajax_valnetincGetRatings\', array(&$this, \'getRatings\' ) );
    add_action( \'wp_ajax_nopriv_valnetincGetRatings\', array(&$this, \'getRatings\' ) );
    //add_action( \'the_excerpt\', array(&$this, \'getRatings\' ) );
    add_filter( \'the_content\', array(&$this, \'getRatings\' ) );
}

public function getRatings($content)
{
    //echo $postID;
    if(function_exists(\'the_ratings\')) {
        /*if(is_null($postID))
        {
            the_ratings();
        } else {
            the_ratings(\'div\', $postID);
        }*/
        $rating = the_ratings();
        return $content.$rating;
    }
}

2 个回复
SO网友:s_ha_dum

the_content 不是一个动作,而是一个过滤器。您应该连接一个字符串并返回它。听起来你是echo直接复制内容。

即:

// wrong
function test_content($content) {
  echo \'this is wrong\';
}
add_filter(\'the_content\',\'test_content\');

// right
function test_content($content) {
  return \'this is right \'.$content;
}
add_filter(\'the_content\',\'test_content\');

SO网友:Chip Bennett

一个潜在的问题是,如果条件失败,则不会返回任何内容:

public function getRatings($content)
{
    //echo $postID;
    if(function_exists(\'the_ratings\')) {
        /*if(is_null($postID))
        {
            the_ratings();
        } else {
            the_ratings(\'div\', $postID);
        }*/
        $rating = the_ratings();
        return $content.$rating;
    }
}
要简化:

public function getRatings($content)
{
    // Conditional
    if(function_exists(\'the_ratings\')) {
        // Do stuff
        // Return modified content
        return $content.$rating;
    }
}
问题是:如果the_ratings() 函数不存在。您需要考虑这种情况:

public function getRatings($content)
{
    // Conditional
    if(function_exists(\'the_ratings\')) {
        // Do stuff
        // Return modified content
        return $content.$rating;
    }
    // Condition is false;
    // Just return the original content
    return $content;
}
一种更简单的方法(可能)是在条件外部返回,而只在条件内部修改:

public function getRatings($content)
{
    // Conditional
    if(function_exists(\'the_ratings\')) {
        // Do stuff
        // Modify content
        $content .= $rating;
    }
    // Return content, modified or unmodified
    return $content;
}

结束

相关推荐

Custom Post Row Actions

我偶然发现this question 在写这个问题的时候。我有一个问题是关于这个问题的。我发现你用的是get_delete_post_link 筛选为我的操作创建一个新的url(或一个类似的函数——在任何情况下,我都会将该函数与布尔值一起使用)。唯一的问题是,I don\'t know how to capture the event now. 考虑到我在谷歌上找不到很多关于行后操作的例子,我将不胜感激-/public function _wp_filter_get_delete_post_link( $