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. Commented 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 you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.