2017-01-03 3 views
0

Я пытаюсь создать короткий код для контактов в WP. Все работает отлично, не загружая сайт WordPress.Wordpress Shortcode Issus v2

enter image description here

Когда я скопировать [CONTACT_FORM] в страницу или сообщение и Preview на страницу печатает только текст. Я правильно сделал код.

<?php 

class Settings { 
     // Conact Form shortcode 

    public function allb_contact_form($atts, $content = null ) { 
      //[contact_form] 
      //get the attribute_escape 
      $atts = shortcode_atts(
      array(), 
      $atts, 
      'contact_form' 
     ); 
      //return HTML 
      ob_start(); 
      include '/lib/inc/thmeplates/contact-form.php'; 
      return ob_get_clean(); 

     add_shortcode('contact_form', 'allb_contact_form'); 
    } 

} new Settings(); 

ответ

1

Ваш вызов add_shortcode() должен обращаться к содержащемуся классу. Поэтому, если add_shortcode() был вызван извне класса, который вам нужно сделать.

class MyPlugin {  
    public static function baztag_func($atts, $content = "") {   
     return "content = $content";  
    } 
} 
add_shortcode('baztag', array('MyPlugin', 'baztag_func')); 

Этот пример из https://codex.wordpress.org/Function_Reference/add_shortcode

Если вызывается из класса вы относятся к классу внутри себя, как так:

add_shortcode('baztag', array($this , 'baztag_func')); 

Кроме того, вы не можете добавить шорткод из того же функция, которая выводит короткий код. Итак, попробуйте следующее:

<?php 

class Settings { 
     // Conact Form shortcode 

    public function __construct(){ 
     add_shortcode('contact_form', array($this , 'allb_contact_form')); 
    } 

    public function allb_contact_form($atts, $content = null ) { 
      //[contact_form] 
      //get the attribute_escape 
      $atts = shortcode_atts(
      array(), 
      $atts, 
      'contact_form' 
     ); 
      //return HTML 
      ob_start(); 
      include '/lib/inc/thmeplates/contact-form.php'; 
      return ob_get_clean();    
    } 

} new Settings(); 
+0

Я хочу, чтобы wp codex читал, но все еще не распечатывал форму. –

+0

Когда я добавляю add_shortcode из класса, появляются сообщения об ошибках. Обратите внимание: do_shortcode_tag был вызван неправильно. Попытка разобрать короткий код без действительного обратного вызова: contact_form Более подробную информацию см. В разделе «Отладка в WordPress». (Это сообщение было добавлено в версии 4.3.0.) В /Users/brandonpowell/sites/valet/wordpress-development/web/wp/wp-includes/functions.php в строке 4091 –

+0

@BrandonPowell Я добавил более подробную информацию, которая должна решить вашу проблему –