2015-07-03 3 views
1

У меня в настоящее время возникает проблема с получением идентификатора настраиваемого типа сообщений из вложенного короткого кода. Я не уверен, что это возможно.WordPress: Получить идентификатор настраиваемого типа сообщений в вложенных коротких кодах

Дополнительная информация описать мой сценарий:

  • Я создал «Activity» ТАМОЖЕННЫЙ ПОСТ тип
  • я создал шорткод под названием «деятельность», которая отображает содержимое обычая деятельности типа, основанный на его ID отправить, это может быть набор с использованием атрибутами шорткода
  • Я создал шорткод под названием «текстовое поле», который отображает текстовое поле в пределах типа acitivty таможенного поста

Проблема, с которой я сталкиваюсь, заключается в том, что я пытаюсь получить «идентификатор действия» из короткого кода Textarea, но я не могу понять, как это сделать.

Пожалуйста, смотрите диаграмму, чтобы лучше описать мою ситуацию по этой ссылке:

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 SHORTCODE:

function display_textarea($atts){ 

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

    return $html; 

} 

Идея состояла в том, чтобы сделать текстовое поле шорткод как можно более простым, а именно: [текстовое поле]

Я был бы признателен за любую помощь в этом вопросе.

Спасибо!

+0

Каждый шорткод работает независимо друг от друга. Вам необходимо передать идентификатор в текстовый код. – Nilambar

+0

@ Ниламбар Спасибо за ваш ответ. Чтобы придерживаться моей первоначальной цели, чтобы сделать код [textarea] простым для пользователей. Я изучаю способ динамического добавления идентификатора активности в качестве атрибута в shortcode textarea в Post Save. В настоящее время я смотрю: [сохранить сообщение] (http://codex.wordpress.org/Plugin_API/Action_Reference/save_post) и [получить регулярное выражение для короткого кода] (http://codex.wordpress.org/Function_Reference/get_shortcode_regex). Надеюсь, я смогу заставить его работать. :) –

+0

Вам нужен текущий идентификатор сообщения в коротком коде? –

ответ

1

попробовать это в вашем методе display_activity, если он работает для вас ..

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

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

о, ничего себе, я думаю, что он работает! Я буду проверять его на следующей неделе, но я думаю, что это было трюк! :) –

+0

рад, что он работает для вас! –

Смежные вопросы