基于以前的类别选择创建帖子时更改默认内容

时间:2012-11-06 作者:speedypancake

我正在开发一个系统,强制用户(不熟悉wp)在创建新帖子之前选择一个类别,然后添加一些适当的html布局样式来帮助他们。

如果选择类别“x”,则以下代码有效。如何对其进行调整以应对两种不同类别的情况?

所需人员代码:

如果新帖子属于X类:添加此html现有代码-如果类别为“X”,则在新帖子中插入一些html:

// This function will only be called when creating an empty post,
// via `get_default_post_to_edit()`, called in post-new.php
function wpse14403_wp_insert_post( $post_id )
{
    wp_set_post_categories( $post_id, $_REQUEST[\'category_id\'] );
}

add_filter( \'default_content\', \'wpa70073_default_products_content\' );

function wpa70073_default_products_content( $content ) {

    // change this to your desired category ID
    $products_category_id = 4;

    if( 
        isset( $_REQUEST[\'category_id\'][0] )
        && $products_category_id == $_REQUEST[\'category_id\'][0] 
        )
        return \'some html styling\';
}
更新:尝试将此添加到结尾,但不起作用。。。

// change this to your desired category ID

$products_category_id = 4;................

    if( 
        isset( $_REQUEST[\'category_id\'][0] )
        && $products_category_id == $_REQUEST[\'category_id\'][0] 
        )
        return \'Some html styling\';

    if ( $products_category_id = \'6\' ) {
        return \'Some alternative html styling\';
    } else {
        return \'Some default html styling\';
    }
}
还尝试按照下面建议的cpt线程编辑代码,但同样没有成功:(

add_filter( \'default_content\', \'wpa70073_default_products_content\' );
function wpa70073_default_products_content( $content ) {
    switch($content->category){
        // change this to your desired category ID
        case\'4\':
            $content=\'cat 4 content\';
            break;
        case\'6\':
            $content=\'news content\';
            break;
        default:
            $content=\'default content\';
            break;
    }
    return $content;
}

2 个回复
最合适的回答,由SO网友:brasofilo 整理而成

您应该已链接到原始Q&;A从一开始
另一段来自@JanFabry的精彩代码,顺便说一句:)

Force category choice before creating new post?

完全使用他回答中提供的代码,这就是如何制作过滤器default_content 工作:

add_filter( \'default_content\', \'wpse_71772_default_content\', 10, 2 );

function wpse_71772_default_content( $content, $post ) 
{
    if( !isset( $_REQUEST[\'category_id\'] ) )
        return $content;

    switch( $_REQUEST[\'category_id\'][0] ){
        // change this to your desired category ID
        case\'1\':
            $content=\'cat 4 content\';
            break;
        case\'3\':
            $content=\'news content\';
            break;
        default:
            $content=\'default content\';
            break;
    }
    return $content;
}

SO网友:Steve

考虑到过滤器的性质,“过滤”输出不是比将其写入数据库更好吗?

从现在开始两年后,在你生成了数千个不同类别的项目后,改变你的方法将是一个巨大的痛苦。但是过滤输出就像更改一两行代码一样简单。

这是一个非常类似的问题的链接Default or Preset Content for Custom Post Types

结束

相关推荐

如何访问调用Apply_Filters()的函数中的变量?

我试图根据调用的函数中的变量是否apply_filters() 等于特定值。该变量不会传递给apply_filters() 参数。这或许可以解释我的意思:// function in wordpress core function get_var_b() { // generating $var_a $var_a = \"a\"; // some code ... $var_b = apply_filters(\'get_var_b\