是否将默认内容添加到特定类别的帖子?

时间:2012-10-22 作者:speedypancake

更新/问题澄清:如何从此线程修改以下代码:Force category choice before creating new post? 哪个网站提供了一个下拉菜单来选择一个类别,然后再创建一篇新的帖子,将一些默认的html内容添加到一个特定的类别???

add_filter( \'load-post-new.php\', \'wpse14403_load_post_new\' );
function wpse14403_load_post_new()
{
$post_type = \'post\';
if ( isset( $_REQUEST[\'post_type\'] ) ) {
    $post_type = $_REQUEST[\'post_type\'];
}
// Only do this for posts
if ( \'post\' != $post_type ) {
    return;
}
if ( array_key_exists( \'category_id\', $_REQUEST ) ) {
    add_action( \'wp_insert_post\', \'wpse14403_wp_insert_post\' );
    return;
}
// Show intermediate screen
extract( $GLOBALS );
$post_type_object = get_post_type_object( $post_type );
$title = $post_type_object->labels->add_new_item;
include( ABSPATH . \'wp-admin/admin-header.php\' );
$dropdown = wp_dropdown_categories( array(
    \'name\' => \'category_id[]\',
    \'hide_empty\' => false,
    \'echo\' => false,
) );
$category_label = __( \'Category:\' );
$continue_label = __( \'Continue\' );
echo <<<HTML
<div class="wrap">
<h2>{$title}</h2>
<form method="get">
    <table class="form-table">
        <tbody>
            <tr valign="top">
                <th scope="row">{$category_label}</th>
                <td>{$dropdown}</td>
            </tr>
            <tr>
                   <td></td>
                   <th><input name="continue" type="submit" class="button- primary"            value="{$continue_label}" /></th>
           </tbody>
        </table>
       <input type="hidden" name="post_type" value="{$post_type}" />
   </form>
</div>
     HTML;
    include( ABSPATH . \'wp-admin/admin-footer.php\' );
   exit();
}
// 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\'] );
}
原始问题:我在一个电子商务网站工作;我想自动添加一些特定类别(如产品)中帖子的默认内容。

我找到了一种方法,可以在所有帖子中添加一些默认内容,但无法将其限制为一个类别。

在此期间,我最终使用了自定义的帖子类型,但要说服像最近的帖子和帖子滑块这样的小部件使用它们是一件很麻烦的事。

欢迎提出任何想法-谢谢

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

使用您发布的代码,可以在$_REQUEST, 你可以对照你的products 中的类别default_content 如果存在匹配项,则过滤并添加内容:

add_filter( \'default_content\', \'wpa70073_default_products_content\' );
function wpa70073_default_products_content( $content ) {

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

    if( isset( $_REQUEST[\'category_id\'][0] )
    && $products_category_id == $_REQUEST[\'category_id\'][0] )
        return "<div>some default product content</div>";
}

SO网友:Mridul Aggarwal

根据类别在内容编辑器中显示某些默认内容是NOT 可能的让我解释一下

当您单击添加新按钮时,wordpress会在内存中创建一个默认对象来填充它显示给您的表单,该对象的id为0。现在,当您点击“保存”按钮时,wordpress会获取您输入的数据&;在数据库中创建记录。因此,对于新帖子,该帖子在数据库中不存在;因此,它与任何类别都没有关联。这使得无法区分类别和;不属于该类别。

您所能做的最好是在页面上添加一个javascript,用于侦听类别onchange事件&;然后更改该字段的文本,但由于TinyMCE在iFrame中工作,因此内容也无法更改&;javascript无权访问它

结束

相关推荐