0

I tried to create a my own function call Test from a simple plugin php file (list categories Plugin) , but when I called it. It showed error ” Fatal error: Uncaught Error: Call to undefined function… “

<?php
/* 
Plugin Name: List Categories
*/
class ListCategories{
   static function list_categories($atts, $content = null) {
    $atts = shortcode_atts(
      array(
        'show_option_all'    => '',
        'orderby'            => 'name',
        'order'              => 'ASC',
        'style'              => 'list',
        'show_count'         => 0,
        'hide_empty'         => 1,
        'use_desc_for_title' => 1,
        'child_of'           => 0,
        'feed'               => '',
        'feed_type'          => '',
        'feed_image'         => '',
        'exclude'            => '',
        'exclude_tree'       => '',
        'include'            => '',
        'hierarchical'       => 1,
        'title_li'           => __( 'Categories' ),
        'show_option_none'   => __( 'No categories' ),
        'number'             => null,
        'echo'               => 1,
        'depth'              => 0,
        'current_category'   => 0,
        'pad_counts'         => 0,
        'taxonomy'           => 'category',
        'walker'             => null
      ), $atts
    );

    test();
    ob_start();
    wp_list_categories($atts);
    $output = ob_get_contents();       
    ob_end_clean();    
    return $output; 
  }

  function test(){
    //Do something
  }
}

add_shortcode( 'categories', array('ListCategories', 'list_categories') );

Why I couldnt call the function? I tried update Wordpress but it still didnt work. Thanks!

1
  • Check the syntax.
    – Max Yudin
    Mar 6, 2019 at 9:21

1 Answer 1

0

In your code there’s this part:

test();
ob_start();
wp_list_categories($atts);
$output = ob_get_contents();  

But I really doubt that global function called test exists on your page.

There is a function called test in your class, but it’s not static (so you can’t call it from static context unless you change it to static function test(){...}), and you should call it with self::test();

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.