WordPress:获取嵌套短代码中自定义帖子类型的ID

时间:2015-07-03 02:44:43

标签: php wordpress nested shortcode

我目前无法从嵌套的短代码中获取自定义帖子类型的ID。我不确定这是否可行。

描述我的场景的更多信息:

  • 我创建了一个“活动”自定义帖子类型
  • 我创建了一个名为“activity”的短代码,显示了 活动自定义帖子类型的内容基于其ID,这可以是 使用短代码属性设置
  • 我创建了一个名为“textarea”的短代码,它显示了一个textarea 在一个活跃的自定义帖子类型

我遇到的问题是我正在尝试从Textarea短代码中获取“活动ID”,但我无法想办法做到这一点。

请通过此链接查看图表以更好地描述我的情况:

https://www.dropbox.com/s/a9bgyjdq9m92qpg/WP-Support---Get-ID-within-Nested-Shortcodes.png?dl=0

活动短代码:

function display_activity($atts, $content = null){

        $a = shortcode_atts( array(
            'id' => null,
        ), $atts ) ;

        if (!is_null($a['id'])){

            $activityId = intval($a['id']);

            if (is_int($activityId) && $activityId > 0){

                $activityObj = get_post($activityId);
                $theTitle = sanitize_post_field( 'post_title', $activityObj->post_title, $activityId, 'display' );
                $theContent = apply_filters('the_content', $activityObj->post_content);

                $html = "<div id='sbusuws-activity-" . $activityId . "' class='sbusuws-activity'>";

                $html .= "<h3 class='sbusuws-activity-title'>" . $theTitle . "</h3>";

                $html .= "<div class='sbusuws-activity-content'>";
                $html .= do_shortcode($theContent);
                $html .= "</div>";

                $html .= "</div>";

                return $html;

            }

        }

    }

Textarea短代码:

function display_textarea($atts){

$activityId = ""; // <--- This is the problem
    $textareaId = $activityId . "-sbusuws-activity-textarea";
    $html = "<textarea id='" . $textareaId . "' rows='5' cols='20'>";

    return $html;

}
  

这个想法是让textarea短码尽可能简单,即:[textarea]

我很感激这个问题的任何帮助。

谢谢!

1 个答案:

答案 0 :(得分:1)

如果适用于你的display_activity方法,请尝试此操作..

$theContent = str_replace('[textarea]','[textarea id="'.$activityId.'"]', $theContent); 

$html .= "<div class='sbusuws-activity-content'>";
$html .= do_shortcode($theContent);
$html .= "</div>";