在列出自定义帖子时,如何填充列?

时间:2014-11-03 作者:dave dave

我已经创建了一个自定义帖子类型。我想自定义用户在浏览此类帖子时看到的内容。

我添加了一列,其中包含以下函数:

function stb_replace_title($columns)
{
    unset($columns[\'title\']) ;
    $columns[\'testimonials\']  = _(\'testimonials\');
      return array(
          \'cb\' => \'<input type="checkbox" />\',
          \'testimonials\'  => __(\'Testimonial\'),
          \'dates\' => __(\'Date\')
    );
}
add_filter(\'manage_stb_posts_columns\', \'stb_replace_title\') ;
此函数用于向帖子列表中添加“推荐”列。

为了测试“推荐”列的数量,我创建了以下函数:

function stb_output_cols( $column, $post_id )
{

    switch($column) {
    case \'testimonials\' :
        echo "got here"  ;
        break ;
    }   

}
add_action(  \'manage_stb_custom_column\', \'stb_output_cols\') ;
我按照codex的例子创建了这个,但它不会改变列的内容。

那么,我如何实际填充“推荐”列的列内容呢?

1 个回复
SO网友:iyrin

确保钩子知道接受两个参数,如codex示例所示。1

add_action( \'manage_stb_custom_column\', \'stb_output_cols\', 10, 2);

请参见$accepted_args2 WP codex函数参考中的参数。请注意,此参数前面的“10”是默认优先级,但您必须包含它,以便操作知道“2”是接受的参数数。

$accepted\\u args(int)(可选)挂钩函数接受的参数数。在WordPress 1.5.1+中,挂钩函数可以接受在运行匹配的do\\u action()或apply\\u filters()调用时设置的额外参数。例如,操作comment\\u id\\u not\\u found将传递任何钩住请求注释id的函数。默认值:1

我相信你stb_replace_title 返回前需要将新数组数据与$列合并,以便将这些值传递给stb_output_cols 稍后运行。否则,它将完全取代原来的$columns数组,savvy?3

function stb_replace_title($columns)
{
    unset($columns[\'title\']) ;
    $columns[\'testimonials\']  = _(\'testimonials\');
    // Merge, don\'t replace, the $columns array.
    return array_merge($columns,
      array(\'cb\' => \'<input type="checkbox" />\',
      \'testimonials\'  => __(\'Testimonial\'),
      \'dates\' => __(\'Date\')
      )
    );
}
要将内容发布到页面,请使用适当的WordPress函数获取术语、元数据或任何您想要的内容,并在您使用的回调函数中回显数据manage_{$post_type}_posts_columns. 在您的例子中,回调函数是stb_output_cols.

此(修改后的)示例4 codex将获得分类术语“book\\u author”和post meta“publisher”,并为给定的$post\\u id回显各自的值。通过上述步骤,$post\\u id应该已经传递给您的函数。

switch ( $column ) {
// Gets and echoes the value for term \'book_author\' to the $columns[\'book_author\']
case \'book_author\' :
    $terms = get_the_term_list( $post_id , \'book_author\' , \'\' , \',\' , \'\' );
        if ( is_string( $terms ) )
        echo $terms;
    else
        _e( \'Unable to get author(s)\', \'your_text_domain\' );
    break;

// Gets and echoes the the value for post meta key \'publisher\' to $columns[\'publisher\'].
case \'publisher\' :
    echo get_post_meta( $post_id , \'publisher\' , true ); 
    break;
}
当然,这假设您已经将数据添加到数据库中。例如,可以使用函数将给定帖子ID的发布者定义为“HarperCollins”update_post_meta(42, \'publisher\', \'HarperCollins\');.

现在,当post ID 42的大小写“publisher”为true时,publisher列应该显示“HarperCollins”。

这里有很多可能性。熟悉函数参考5 以及模板标记的索引6 用于检索所需的特定数据。

结束

相关推荐