• Resolved rocheauxfees

    (@rocheauxfees)


    Hi there,

    I have a WordPress-System, running version 5.4.2 and the plugin “Notification” (v. 7.). I have added the following code to my functions.php

    do_action( 'notification/init' ); /** To load the plugin - without this line there will be a fatal error caused by not-finding the class */
    
    /**
     * Custom trigger class - Defining the class
     */
    class CustomTrigger extends \BracketSpace\Notification\Abstracts\Trigger {
    
    	/**
    	 * Constructor
    	 */
    	public function __construct() {
    
    		// 1. Slug, can be prefixed with your plugin name.
    		// 2. Title, should be translatable.
    		parent::__construct(
    			'myplugin/custom_trigger',
    			__( 'Custom Trigger title', 'textdomain' )
    		);
    
    		// 1. Action hook.
    		// 2. (optional) Action priority, default: 10.
    		// 3. (optional) Action args, default: 1.
    		// It's the same as add_action( 'any_action_hook', 'callback', 10, 2 ) with
    		// only difference - the callback is always action() method (see below).
    		$this->add_action( 'any_action_hook', 10, 2 );
    
    		// 1. Trigger group, should be translatable.
    		// This is optional, Group is displayed in the Trigger select.
    		$this->set_group( __( 'My Triggers', 'textdomain' ) );
    
    		// 1. Trigger description, should be translatable.
    		// This is optional, Description is displayed in the Trigger select.
    		$this->set_description(
    			__( 'Fires when a page with "myparam" parameter is visited', 'textdomain' )
    		);
    
    	}
    
    	/**
    	 * Assigns action callback args to object
    	 * Return <code>false</code> if you want to abort the trigger execution
    	 *
    	 * You can use the action method arguments as usually.
    	 *
    	 * @return mixed void or false if no notifications should be sent
    	 */
    	public function action( $param_one, $param_two ) {
    
    		/**
    		 * This is a method callback hooked to the action you've added in the Constructor.
    		 *
    		 * Two important things which are happening here:
    		 * - $this->callback_args is a numeric array containing all the callback parameters
    		 *   if you want to treat them as an array
    		 * - if you want to abort Trigger execution, you must return false here
    		 */
    
    		// If the second parameter ($process in our action) is false then abort, no carriers will be processed.
    		if ( false === $param_two ) {
    			return false;
    		}
    
    		// We can assign any property here, whole object will be accessible in Merge Tag resolver.
    		$this->param_value = $param_one;
    
    	}
    
    	/**
    	 * Registers attached merge tags
    	 *
    	 * @return void
    	 */
    	public function merge_tags() {
    
    		/**
    		 * In this method you can assign any Merge Tags to the trigger.
    		 *
    		 * To see what Merge Tags are available go to Notification plugin's core
    		 * and look in class/Defaults/MergeTag directory.
    		 */
    
    		$this->add_merge_tag( new \BracketSpace\Notification\Defaults\MergeTag\StringTag( [
    			// Slug (required), this will be used as {parametrized_url} value.
    			// Don't translate this.
    			'slug'        => 'parametrized_url',
    			// Name (required), should be translatable.
    			'name'        => __( 'Parametrized URL', 'textdomain' ),
    			// Resolver (required), this can be a closure like below or function name
    			// like: 'parametrized_url_resolver' or array( $this, 'parametrized_url_resolver' ).
    			'resolver'    => function( $trigger ) {
    				// Trigger object is available here,
    				// with all the properties you set in action() method.
    				return add_query_arg( 'source', $trigger->param_value, site_url() );
    			},
    			// Description (optional), should be translatable, default: ''.
    			'description' => __( 'Homepage URL with ?source= param', 'textdomain' ),
    			// Example indicator (optional)
    			// if true, then description will have "Example" label, default: false.
    			'example'     => true,
    		] ) );
    
    	}
    
    }
    
    /** To register the new trigger */
    add_action( 'notification/elements', function() {
        notification_register_trigger( new CustomTrigger() );
    } );'

    When I am doing it like that I’ll get the following error:
    Fatal error: Uncaught Error: Class name must be a valid object or a string in /../wp-content/plugins/notification/notification.php:88. From my point of view there in this file in line 88 there is the check of the version of the plugin.

    What I am doing wrong?

    Thanks for your help.

    Kind regards,
    Julian

    The page I need help with: [log in to see the link]

Viewing 2 replies - 1 through 2 (of 2 total)
Viewing 2 replies - 1 through 2 (of 2 total)

The topic ‘PHP-Error: Class name must be a valid object or a string’ is closed to new replies.