Support » Plugins » „activate_plugin“ oder „install_activate_plugin“

  • Gelöst Wolfgang C.

    (@wolfgangac)


    Hallo,

    Welche function muss ich bei einem selbstgeschriebenen (einfachen) Plugin nehmen, damit ich bei „akvieren“ des Plugins die „einstellungsseite“ aufrufe.

    z.b.: `$url= <a href=admin_url( options-general.php?page=mn_menu_slug ) >;

    das wäre zu einfach und klappt auch nicht:

    function activate_plugin ($plugin, string $redirect = '') {
       $url= '<a  href="' . admin_url( 'options-general.php?page=mn_menu_slug' ) . '">';
            return $redirect;
        }
    

    Bin der Englischen Sprache auch nicht mächtig und muss jedesmal einen Übersetzer drüberlaufen lassen, wenn ich irgendeine Idee gefunden habe.
    Komme aber irgendwie nicht weiter 🙁

    Danke im vorraus für Lösungsansätze.
    Wolfgang

    Moderationshinweis: Bitte für Code den Formatierungsbutton im Beitragseditor des Forums verwenden. Danke.

    • Dieses Thema wurde geändert vor 3 Jahren, 11 Monaten von Wolfgang C.. Grund: url wurde nicht komplett angezeigt"
    • Dieses Thema wurde geändert vor 3 Jahren, 11 Monaten von Wolfgang C..
    • Dieses Thema wurde geändert vor 3 Jahren, 11 Monaten von Bego Mario Garde.
Ansicht von 9 Antworten - 1 bis 9 (von insgesamt 9)
  • register_activation_hook(__FILE__, 'mein_plugin_aktivieren');
    
    function mein_plugin_aktivieren() {    
    
        // TODO: Was sonst so bei Plugin-Aktivierung ggf. eingerichtet werden muss.    
    
        wp_redirect(admin_url('options-general.php?page=myplugin_settings'));
       
    }

    (Quelle: https://wordpress.stackexchange.com/a/42841/129212)

    Thread-Starter Wolfgang C.

    (@wolfgangac)

    danke für Ihre Antwort,
    leider funktioniert das nicht.

    Bei dem Beispiel unten müßte dann eigentlich die Einstellungsseite geöffnet werden!

    <? php
    /**
     * Plugin Name: Test
     * ....
     * 
     */
    
    // * * *
    
    register_activation_hook(__FILE__, 'test_activate');
    
    function test_activate() {
    
        // TODO: Was sonst so bei Plugin-Aktivierung ggf. eingerichtet werden muss.    
    
        wp_redirect(admin_url('options-general.php'));
       
    }
    • Diese Antwort wurde geändert vor 3 Jahren, 11 Monaten von Bego Mario Garde. Grund: Code formatiert

    Da fehlt noch was. Probier’s mal so:

    register_activation_hook( __FILE__, 'test_activate' );
    
    function test_activate() {
    
    	// TODO: Was sonst so bei Plugin-Aktivierung ggf. eingerichtet werden muss.
    
    	if ( wp_redirect( admin_url( 'options-reading.php' ) ) ) {
    		exit;
    	}
    }
    Thread-Starter Wolfgang C.

    (@wolfgangac)

    Danke für die rasche Antwort,
    an sich funktioniert das Script so. Super!

    Nur wenn ich das in mein Plugin Einbaue, kommt die Meldung:
    „Du bist leider nicht berechtigt, auf diese Seite zuzugreifen.“
    Schade, denn eigentlich sollte das Plugin doch schon aktiviert sein,
    um die Einstellungen aufzurufen.

    Nachtrag: habe gemerkt, das das Plugin zwar startet, aber wieder deaktiviert ist.
    Vermutlich wegen dem Exit 🙁

    • Diese Antwort wurde geändert vor 3 Jahren, 11 Monaten von Wolfgang C..

    Das exit; bricht dir Funktion nach der Weiterleitung ab. Vgl. wp_redirect().

    Mit der Berechtigung hat das nichts zu tun. Die Fehlermeldung kommt eigentlich, wenn du keine Berechtigung hast, auf die Einstellungen zuzugreifen. Vielleicht stimmt die Berechtigung für die Optionsseite nicht, die du angelegt hast. Wie lautet da der Code? Kannst du die Optionsseite direkt aufrufen?

    Wie lautet denn jetzt deine komplette Funktion, die du verwendest? Bei mir hat das Code-Beispiel tadellos funktioniert.

    Thread-Starter Wolfgang C.

    (@wolfgangac)

    Hier nochmal (fast) der ganze Code:
    Wenn ich das EXIT am Ende aktiviere, bleibt das Plugin NICHT AKTIV!!!
    Alternativ könnte ich mir vorstellen, das man auf der Plugin Seite nach Aktivieren auf „Einstellungen“ klicken könnte, um dort hinzugelangen. (steht dann neben „deaktivieren“)
    Aber wie müßte ich das bewerkstelligen!

    /* Settings API */
    function mn_show_options_page() {
    	?>    
    	<div class="wrap">
    		<h2>Einstellen der E-Mail Adresse:</h2>
    		<form action="options.php" method="post">
           	    <?php settings_fields('mn_group'); ?>
    			<?php do_settings_sections('mn_menu_slug'); ?>			 			 
    			<input name="Submit" type="submit" value="Speichern !" class="button" />
    		</form>
    	</div>
    	<?php
    }
       
    function mn_add_options_page() {
    	add_options_page('Mail Nachricht Plugin', 'Mail Nachricht', 'manage_options', 'mn_menu_slug', 'mn_show_options_page');
    }
       
    function mn_show_inputfield() {
    	$current_number = get_option( 'e_mail' );  // alt: quotenumber
    	// E-mail Adresse auslesen / Admin: admin_email
    	$admin_email = get_option( 'e_mail' );
    	echo "<input name='e_mail' type='text' value='" . $admin_email . "' />";
    }
    
    function mn_show_section() {
    	echo "<p> Eingeben der E-Mail Adresse, die Benachrichtigt werden soll, wenn jemand eine bestimme Seite besucht. <br>
    		Auf jeweiliger Seite folgenden ShortCut verwenden: &nbsp; [e-mail-nachricht] <br> </p>";
    }
    add_action('admin_init', 'mn_admin_init');
       
    function mn_admin_init(){
    	add_settings_section(
    		'mn_section',
    		'Hinweis',
    		'mn_show_section',
    		'mn_menu_slug'		
    	);	
    
    	add_settings_field( 
    		'e_mail',
    		'E-Mail bitte Eintragen: ',
    		'mn_show_inputfield',
    		'mn_menu_slug',
    		'mn_section'
    		);	
    	register_setting( 'mn_group', 'e_mail', 'mn_validate_option' );
    }
    
    function mn_validate_option( $input ) {
    	if(preg_match('/@/', $input)) {
    		return $input; 
    	}
    	else {
    			add_settings_error(
    			'e_mail',
    			'mn_nonumber',
    			'Keine E-Mail!',
    			'error'
    		);
    		$input='0';
    	}
    }
    
    add_action('admin_menu', 'mn_add_options_page');
    
    register_activation_hook(__FILE__, 'mn_activate');
    
    function mn_activate() {    
    
        // TODO: Was sonst so bei Plugin-Aktivierung ggf. eingerichtet werden muss.    
        
        if ( wp_redirect(admin_url('options-general.php?page=mn_menu_slug'))) {
    	//	exit;      // -> Plugin bleibt NICHT AKTIVIERT!
       }
    }
    Thread-Starter Wolfgang C.

    (@wolfgangac)

    Hallo,

    wie schon erwähnt, würde es mir auch reichen, einen Link zu den Einstellungen auf der Plugin-Seite unter dem Namen zu haben, neben Deaktivieren.
    bsp:

    PLUGIN-NAME
    Einstellungen | Deaktivieren

    Wolfgang

    Hallo,
    wahrscheinlich hast du die FAQ nicht (vollständig?) gelesen: Bumping ist unerwünscht, siehe B, 2.)
    Bezogen auf dein Plugin: Evtl. ist es günstig, wenn du die Frage hier stellst.
    Ansonsten habe ich in solchen Fällen auch einfach mal in den Quellcode eines (einfachen) Plugins geschaut. Damit kommt man in der Regel schon weiter.
    Viele Grüße
    Hans-Gerd

    Thread-Starter Wolfgang C.

    (@wolfgangac)

    nach einiger Suche (in Quellcodes von einfachen Plugins) und vielem Testen habe ich die Lösung gefunden.

    Danke für den Hinweis.

Ansicht von 9 Antworten - 1 bis 9 (von insgesamt 9)
  • Das Thema „„activate_plugin“ oder „install_activate_plugin““ ist für neue Antworten geschlossen.