单个帖子的窗口小部件区域(自定义帖子类型)?

时间:2018-05-28 作者:TJ152

我已经设置了自定义帖子类型并删除了内容编辑器。我想在其位置放置一个小部件区域,当您在前端查看帖子时显示小部件,但小部件区域需要特定于每个帖子。

这可能吗?

1 个回复
SO网友:cjbj

假设你的主题还有the_content 要填充该区域,可以使用the_content 要填充的筛选器为。因为小部件通常会回显其输出,所以还需要缓冲输出。像这样:

add_filter (\'the_content\',\'wpse304648_widget_content\');
function wpse304648_widget_content ($content) {
  if (get_post_type == \'your_cpt_name\') {
    ob_start ();
    .. execute widget
    $content = ob_get_contents();
    ob_end_clean();
    }
  return $content;
  }
现在,问题是如何在这个函数中执行小部件。您正在谈论为每个帖子创建一个单独的小部件区域。这会使您的管理小部件页面变得混乱,但这是可能的。在您的functions.php 您可以循环浏览所有自定义帖子和register a sidebar 以通常的方式。然后在您的小部件管理员中为每个侧栏定义一组小部件。如果您使用“您的cpt名称ID”注册侧栏,您可以这样轻松地调用它们:

dynamic_sidebar ( \'your-cpt-name-\'. get_the_ID());
这似乎更符合逻辑build your own widget 根据帖子加载内容。在这种情况下,您只需定义一个侧栏。

结束

相关推荐

如何从GET_POSTS()检索值?

我只是试图从get\\u posts中检索“title\\u name”的值,并得到错误“不能将WP\\u post类型的对象用作数组…”我没有使用have\\u posts/The\\u posts的原因是我想反向显示标题:$arr = get_posts(); $arr = array_reverse($arr); foreach ($arr as $post) { echo $post[\'post_name\']; echo \"<br/>