Support » Plugin: Subscribe2 » [Plugin: Subscribe2] Editing Opt-in Field

  • Hello! Thanks for making an awesome plugin! Having been wrestling with The Loop recently, I can understand the difficulty involved…

    I have a feature request: to be able to edit the name of field that hooks into code to choose if a given subscriber / registrant is included on that site’s mailing list or not.

    Failing that, to be able to change the label of said field, and even add additional choices of input for that field.

    Some background information to my request:

    I use another plugin to completely overhaul my registration page, by request of my client.

    I actually like the format just the way it is (link to follow).

    Unfortunately, with my setup as it is, I have to manually edit the list of Subscribers to change their opt-out preference (i.e. if they receive any mail from us at all) with each new addition to the list of subscribers. This is really not efficient, as I’m sure you can tell!

    If I could change the name of the field; or make sure the correct hook uses my current custom (multi-choice) field; that users interact with wherever they add their e-mail address; I would be rather pleased!

    I have no idea which of the above would be easiest…

    I am quite prepared to do some testing (offline please, with an app’ like XAMPP) or fork your work and install an edited version for my client. Either choice is fine with me.

    The site is at, please let me know your thoughts…

Viewing 10 replies - 1 through 10 (of 10 total)
  • @grubbyseismic,

    Sorry but you’ve completely lost me.

    Which field are you talking about? Which hook? For when emails are being sent or for when someone registers?

    I don’t understand what you are trying to accomplish on your site or where Subscribe2 is missing the mark.

    I was wondering if I was making sense or not! My apologies…

    Allow me to explain!

    In the case of Subscribe2, there is a feature that allows the registrant (I’m not certain this applies to subscribers also) the option to exclude their address from the mailing list, managed by your marvellous plugin, as they “sign up”.

    To sum up:
    They have still registered, but won’t receive any messages from a list managed by S2, with the above option checked. They have “opted out” of the mailing list.

    My wish is to be able to alter the code of S2, so the text (“the label”) that appears adjacent to this option (the opt-in / opt-out option) can be changed.

    Preferably, I would like S2 to allow me more choice for filling this part of the registration form with, so I can in turn give my users more choice as they sign up! For example, I would really, really like it to appear as:

    Would you like your newsletter to arrive:
    1) Weekly
    2) Not at all

    (I think a set of “radio buttons” would be applicable here.)

    If you see the form I have in place already, you will see there is a very similar option in place to the above.
    Unfortunately, and currently, this only adds a note to the bottom of the admin’s-only e-mail that arrives with every new registration; it doesn’t actually remove a user from the list.

    I am still very much available to do some testing, contribute some code, or both; to change this.

    Here is a link directly to the registration form itself I have used in this example:


    Okay, I’m with you now.

    Subscribe2 already has a hook into the registration process. Look under the “Auto Subscribe” heading in Settings->Subscribe2.

    You can choose to deploy a checkbox or to automatically subscribe new users. It seems like the checkbox is a closer fit for what you want.

    Currently, there isn’t a way to change this to radio buttons without a code change but you could change the text by using the translation options in WordPress. Set your language string in wp-config.php to say ‘en_GB’ and then create a translation of just the affected string into the text you would rather have. Compile an mo file and upload it to the Subscribe2 folder and the string will be switched.

    This approach is probably easier than making code level changes as it will persist through plugin updates.

    I didn’t know you’d made ready i8ln options! Well done!

    I appreciate the thought of translated strings; I will offer the client this as an alternative.

    If I could officially make the above (i.e. having the choice to change the markup from a single checkbox to radio buttons on the reg’ form) a feature request for the next version, that would be marvellous.

    If I have to fill out a form, please let me know where it is!


    I was wondering about the radio versus checkbox side of things.

    While it’s easy enough to change the form by implementing a filter so you could write your own plugin to change the way the output is displayed the bugger hurdle is the processing of the form variables.

    Currently, the plugin is looking for a checkbox result. Changing to a radio result would need some elegant code to handle the resulting input. I’ll need to have a think about how I could do that – if at all.

    That you’re willing to have a look is great!

    I think I’m going to examine your code too, I don’t think I’ll do any major experimentation, mostly in case I break something.
    Even then I could just reinstall it!

    Thinking aloud (of sorts): as the code is looking for a checkbox (to see if there’s a need to remove someone from the list?) I assume that means it’s looking for a particular HTML form input?

    If that is the case, you could make the type of that input a variable?

    Testing for a given string that equals the type of the input can take a “switch” (this is meant to be pseudocode BTW):

    switch ($input_type)
         case ("checkbox")
              $given_input = checkbox_to_remove_user;
              if $given_input = checked
              then run remove_user_function();
         case ("radio")
              $given_input = radio_to_remove_user;
              if $given_input = remover_option && $given_option = selected
              then run remove_user_function();

    Using this methodology means the code can be updated more easily than many lines of if / elseif / elseif / etc conditions; you could easily add other input types at a later date…

    As I said, I still need to examine your code, so I don’t know if some PHP like the above would fit in, but it shows the logic I would follow, were I making it.


    I’ve been having a look at this and it will require a complete re-think and re-write of the register() function to make it work.

    At the moment, this function is hooked into the creation of new users. In order to do what you are asking I’ll need a new function to handle different inputs from the form and that probably needs to be pluggable in some way. Then this new function will need to call a re-written register function.

    I think it will also need a re-think of the upgrade function as this makes heavy use of the register function.

    So, in summary this is not a small job. I’ll keep looking at it though and see what I can figure out.

    Awesome! Thank you…


    I’m still checking out the functions and I’ve run into some issues with ensuring that the code will work on WordPress Multisite.

    In the meantime can you try this: In the Subscribe2.php file look for the register_form() function. It has a section like this:

    if ( 'wpreg' == $this->subscribe2_options['autosub'] ) {
    	echo "<p>\r\n<label>";
    	echo __('Check here to Subscribe to email notifications for new posts', 'subscribe2') . ":<br />\r\n";
    	echo "<input type=\"checkbox\" name=\"reg_subscribe\"";
    	if ( 'yes' == $this->subscribe2_options['wpregdef'] ) {
    		echo " checked=\"checked\"";
    	echo " /></label>\r\n";
    	echo "</p>\r\n";

    Replace that with something like:

    if ( 'wpreg' == $this->subscribe2_options['autosub'] ) {
    	echo "<p>\r\n<label>";
    	echo __('Check here to Subscribe to email notifications for new posts', 'subscribe2') . ":<br />\r\n";
    	echo "<input type=\"radio\" name=\"subscribe\" value=\"yes\"";
    	if ( 'yes' == $this->subscribe2_options['wpregdef'] ) {
    		echo " checked=\"checked\"";
    	echo " /> Subscribe me!&nbsp;&nbsp;";
    	echo "<input type=\"radio\" name=\"subscribe\" value=\"no\"";
    	if ( 'yes' != $this->subscribe2_options['wpregdef'] ) {
    		echo " checked=\"checked\"";
    	echo " /> DO NOT subscribe me!</label>\r\n";
    	echo "</p>\r\n";

    Then make sure you use the Subscribe2 setting to insert the form and you should be good to go.

    That’s brilliant! Thanks! I’ll give it a go over the weekend!

    Good luck with the MU / MS thing: I don’t envy you…

Viewing 10 replies - 1 through 10 (of 10 total)
  • The topic ‘[Plugin: Subscribe2] Editing Opt-in Field’ is closed to new replies.