将帖子的内容插入另一个帖子

时间:2017-08-29 作者:Tobi

我正在编写一个小插件,它可以创建custom post 类型

我创建了一个过滤器copies the content 把这样一个职位换成另一个职位。

因此,我遍历了所有自定义帖子。每一个我都有一个target_type 它的字段值。

将此值与实际值进行比较post_type 已查看帖子的。如果相同,则会追加内容。

My problem is 自定义帖子内容中使用的短代码应在目标帖子的上下文中呈现。

例如:我在自定义帖子中使用了一个短代码,它只返回get_the_title(); 在目标帖子中,显示自定义帖子的标题。

事实上,我希望自定义帖子只是作为稍后呈现内容的容器。

哇,这对我来说真的很难解释。

我希望有人能理解我的问题并能帮助我。

提前感谢您!

以下是过滤器代码:

add_filter(\'the_content\', \'copy_content\');
function copy_content( $content )
{

    $post_type = get_post_type();

    $args = array(
        \'post_type\' => \'custom\',
        \'post_status\' => \'publish\',
        \'posts_per_page\' => -1
    );

    $post_query = new WP_Query($args);
    if($post_query->have_posts() ) {
      while($post_query->have_posts() ) {
        $post_query->the_post();
        $target_type = get_post_meta(get_the_ID(), "target_type")[0];
        if($target_type == $post_type){
            return $content . get_the_content();
        }
      }
    }

  wp_reset_postdata();

  return $content;
}

1 个回复
SO网友:Johansson

在函数中使用return时,函数的其余部分将不会运行。它以某种方式工作exit();die();, 但它不会终止整个脚本,只会结束函数中的特定代码段,并在必要时返回一个值。

您应该将内容保存到字符串中,然后在完成后全部返回。

因此,您的代码应该是这样的:

add_filter(\'the_content\', \'copy_content\');
function copy_content( $content )
{

    $post_type = get_post_type();

    $args = array(
        \'post_type\' => \'custom\',
        \'post_status\' => \'publish\',
        \'posts_per_page\' => -1
    );

    $post_query = new WP_Query($args);
    if($post_query->have_posts() ) {
      // Create an empty string
      $data = \'\';
      while($post_query->have_posts() ) {
        $post_query->the_post();
        $target_type = get_post_meta(get_the_ID(), "target_type")[0];
        if($target_type == $post_type){
            // Append each post\'s content to it
            $data .= get_the_content();
        }
      }
    }

  wp_reset_postdata();
  // Return both content and our custom data altogether
  return $content . $data;
}

结束