WordPress可重复使用的内容块

时间:2011-09-25 作者:memical

我使用一种自定义的帖子类型,允许站点编辑器向站点信息框中添加大量内容块。

现在,我想让编辑器可以选择哪些框出现在哪些页面上。

因此,如果我定义了第1页和第2页,是否有一种方法允许用户选择在第1页上显示信息框a和b,在第2页上显示信息框m和n?

谢谢

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

两种方式之一:

添加短代码,以便有人可以访问[content-block id="12"] 他们想去哪里就去哪里。这里有一个非常简单的示例,没有很多错误检查。

<?php
add_action( \'init\', \'wpse29418_add_shortcode\' );
function wpse29418_add_shortcode()
{
    add_shortcode( \'content-block\', \'wpse29418_shortcode_cb\' );
}

function wpse29418_shortcode_cb( $atts )
{
    $atts = shortcode_atts(
                array(
                    \'id\' => 0
                ),
                $atts
            );
    // then use get_post to fetch the post content and spit out.
    $p = get_post( $atts[\'id\'] );
    return $p->post_content;
}
或者,您可以在后端创建一个非常大的选项页面,允许用户将内容块分配给页面。然后钩住the_content 并放置信息框。

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

    // get the option that stores the data.
    $opts = get_option( \'wspe29418_opts\' );

    // check to see if the post has a content block assigned.
    if( isset( $opts[$post->ID] ) )
    {
        //do stuff here
    }
    return $content;
}
第二种方法的缺点是,您只能将内容块放在原始帖子内容之前或之后,或者将该帖子的内容全部替换。

短代码对于您的最终用户来说是最灵活的。

结束

相关推荐

如何从WP-Admin菜单中删除工具菜单项

其中是函数。php是存储和构建的?我想从所有用户(如管理员和其他用户)的mysite中删除名为“工具”的菜单?我请求你帮我解决这个问题。给我一个最好的解决方案,比如wordpress的外行,这样我就能很快理解事情。