Remove "further information" fields from Wordpress profiles - wordpress

I have been trying for a while to remove the "further information" section from the user profile field in wp. Every-time i go in to edit a users information it validates these input and marks them as required.
I have tried this approach to see if its something within this array:
add_filter( 'user_contactmethods', 'update_contact_methods',10,1);
function update_contact_methods( $contactmethods ) {
print_r($contactmethods);
return $contactmethods;
}
This returns an empty array.
I have also found a few references to jQuery. But removing the element manually from the page through chrome dev tools still triggers the validation.
Any-thoughts on this would be appreciated.

So it turns out it was events manager pro, under Admin -> Events -> Forms Editor -> User Fields.
A bit annoying but works fine once you find it.

Related

Why would WooCommerce Product Attributes disappear on save

I have a WooCommerce store that has products with attributes that are associated with variations. When I save products, the attributes disappear (and therefore the associated variations do, too). When I re-add the attributes and save the product again, the variations come back as they were. (Note that this means attributes don’t always disappear - only when they’re not manually added before saving. )
No errors are logged.
I'm looking for some insight as to why this would happen.
I had the same issue since I use Ozisti theme for my site, too.
The workaround was to do NOT USE "Save attributes" button on product page. To save attributes changes USE "Update" (product page - on the top/right of the page).
The problem has been solved with Ozisti ThemeREX support team. They sent me new files:
wp-content/plugins/trx_addons/components/api/woocommerce/woocommerce-extended-attributes.php
wp-content/plugins/trx_addons/includes/plugin.wp.php
and now it works fine.
Regards, Jacek
I think I had a similar problem.
WordPress 5.1.1
WooCommerce 3.5.7
Ozitsi 1.0.2 Theme by ThemeRex (here was the problem)
Solution summary: Add attribute, add options, press SAVE ATTRIBUTES (attribute row folds) -> UNFOLD IT immediately - if you don't see options inserted a second ago into the Comboselect field read on.
In my case plugin ThemeREX Add-ons (shipped with Ozisti theme) was the issue. It added extra attribute types, so I could turn variations between dropdown select, image, color and button types.
After few hours of debugging I noticed that when attribute was set to one of the new types, UPDATING PRODUCT did erase all added attributes -> and by extension variations.
After ADDING ATTRIBUTES again (without SAVE ATTRIBUTES button - just adding attributes and UPDATING product) all was back in place.
Notice: when you SAVE ATTRIBUTES the row with options closes, the variations become available. But when I opened the attribute row after all AJAX saving was done it turned out that there were no OPTIONS placed in this Wordpress combo select of attribute I just edited.
So on UPDATING PRODUCT WooCommerce saved empty attribute options into DB.
This might not be perfect solution but I solved this by modifying WooCommerce's meta-boxes-product.js
I commented out line 465 and added another line to close the row:
$( '.product_attributes' ).html( response.data.html );
$( '.product_attributes .woocommerce_attribute.open .handlediv' ).trigger('click');
I didn't trace everything to the roots but makinkg it work for this single project is good enough for me at this point.
You probably use other plugins then me, but maybe they do something similar to my case.
So try to SAVE ATTRIBUTES and then immediately open attribute row again and check if selected options are inserted.. if not.. try my solution.
This Happen to me This Year. I was debugging my store for 3 days.
Solution:
I load a css file on Wordpress back office with these lines:
.save_attributes, .save-variation-changes {
display:none !important;
}
This makes WooCommerce Hide 2 buttons.
Save Attribute and Save Variation. So clients will be forced to use the update button in the product page. I'm still not sure if this is a Woocommerce bug or other plugin but for some reason, if I pressed one of these 2 buttons I would lose all my variations.
I have similiar solution with #Maciej Dejewski using Woocommerce v3.6.5.
On file /plugins/woocommerce/assets/js/admin/meta-boxes-product.js or /plugins/woocommerce/assets/js/admin/meta-boxes-product.min.js (depends on your admin page calling the javascript - you can check it via inspect element)
But instead adding line
$( '.product_attributes .woocommerce_attribute.open .handlediv' ).trigger('click');
Just commented out this
$( '.product_attributes' ).html( response.data.html );
Working fine for me
Here's the screenshot
Hope this would help!
After debugging for a hour, it turns out that my variations only disappear when not each attribute is selected. However, some of my product's attributes have between 10 and 150 entries..so that is the downside when using this method.

Problems Customising WooCommerce Checkout Page

I'm having major problems customising the checkout page on a WooCommerce site for a client.
They have asked me to move a heap of fields around and, for the most part, I've got it done but the login form is causing me no end of grief.
They have asked that I create something similar to the checkout at www.adairs.com.au and would like the login form to be part of the "Billing Fields" section, and only displayed when a customer clicks the "Existing Member" tab.
I've got everything moved around but when clicking on the "Existing Member" tab to display the login form, and then logging in I get errors saying "Billing First Name", "Billing Last Name" and "Billing Address" are required.
Digging into it, it seems that when I call do_action( 'woocommerce_before_checkout_form', $checkout ) it is creating all the necessary form fields but it is not wrapping it in a form, so there is no data being posted.
I've tried moving the hook around to different parts of both the form-checkout.php and the form-billing.php files but get the same result.
When I call the same hook in the payment.php file, or leave it as it was originally coded the form is created as it should be, but is not rendered to the section of the checkout I am hoping for.
I can't for the life of me figure out why the form is created some times when I call the hook and not others.
I hope this makes sense. Any help would be greatly appreciated.
Thanks in advance,
Don
Sounds like all the "moving around" is breaking the logic. I would look into WooCommerce plugins that allow you to customize the checkout. There are lots of them
Another possibility... if you want the login form "only displayed when a customer clicks the Existing Member tab" why not leave the form where it is -- code wise -- and use JS/JQ to show/hide the actual form inputs. Look at this woo demo theme and click "Returning customer? Click here to login" for one idea.

Ensure a Rules Link only shows in a set type within a Panel Page (Drupal)

I've created a Rules Link (in a View) which shows in a users dashboard using Drupal v.7.27 as CMS for a number of (similar) projects using the same functionality. The Rules Link is set to 'trigger' a rule when the user clicks "Post Content" (the Rules Link). The Rules link works fine and fires the trigger which then follows the simple conditions I've set and only because I've created Variant Panel pages for each User Type, the Rules Link only shows on the ones I've set the Panels Page Access conditions (ie Role: Content Manager).
However, I've noticed that as I'm also using the Support Ticket Module, then "Post Content" Rules Link is also showing on the top of the list of a users Support Tickets list (only for testing here, but it's shows my test comments from both user and Admin user) AND* it also shows on a link on all other Node types.
Clearly I don't want the Rules Link to show at the top or bottom of any other content type other than a Node (ie on the Post New Content Panel Page). At the moment is set within the Rules "Edit Bundle" section to show across 'none' as there is no option to force it to show ONLY on my Dashboard Panel. I'm also using the 'Render' Rules option and tried every option but to no avail after a few hours.
I've had to set the option to 'Nodes' in the Entity type which the Rules Link is attached to (because my Article data is a Node within the Panel Page) and it says quote:
'Bundles to which the link should be attached to. If left empty, the link is not restricted for any bundles' under the Bundles section.'
Furthermore, within the Views entity created (used to set the 'Rules Link' into any Node), there is no option that I can find which enforces the Rules Link to only be limited to a particular node, which in my case is a custom Page Panel. Maybe I lack current Drupal knowledge or simply have over looked an issue.
I know I need to learn PHP (yes, currently working through CodeAcademy!) but in order to get the thing working functionally, can anyone advise on what is going wrong and why the Rules Link is showing n other Node types and for a PHP novice like me at this stage, could I simply put some PHP in somewhere that would ensure the Rules Link only shows on a set Content Panel on my custom Panel Page.
I hope I have been clear enough and help at this stage is most gratefully received. Thanks in advance.
EDIT:
Actually the Rules Link is showing on all other Nodes (see above*). I've noticed that Bundles might be the key here? I've todate not used Bundles if that helps anyone?
RESOLVED
I found the source of the problem.
The answer is to ensure that the "Render Entity" is un-ticked in the option box:
"Show link when entity is rendered
If checked,the link is shown when viewing an entity to which the bundle and the visibility conditions apply. Only applies to displayed entity types and if no addition variables were added."
I hope that helps any future readers.

How to modify the Node Edit or Insert Form in Drupal

I am having trouble finding sources of information or example code for a creating a custom module (or any means) to edit the node edit/insert pages.
I am trying to create a Flickr Integration for a node. The Flickr API is not an issue and i can resolve those, it's the Drupal API issues i could use some help or resources of information on.
Here is what i am trying to achive.
User attempts to add or edit a node
User inserts a keyword into a field and presses a button (Get Photos)
Flickr API returns and displays a few images
User clicks on an image and the URL of the image is then added to an input field
on node save or node update a field such as $node->flickrImage[0][value] is updated with the URL selected in 4.
the variable is the available when ever the node is rendered.
I'm not quite sure how to achieve this - I simply need some example code of modifying the node edit/insert pages and I think I can work the rest out.
Please Help!
Thanks,
Shadi
It looks for me, that you can write own CCK field type, so that you can add this to desired content type and process user's input & work with flickr API.
this way, it's easier to manage this field and control it, plus it will be automatically added to node edit/create forms, node loads, etc.
This article might help http://www.lullabot.com/articles/creating-custom-cck-fields
Second way, is to use hook_form_alter
function module_form_alter(&$form, &$form_state, $form_id) {
if ($form_id == 'product_node_form') {
//do smth
}
}
In this case, form_id you want to change, will be {content_type}_node_form.
there you can add your field, and process it on
hook_nodeapi
Here is a link for node edit form alter solution ..
http://drupal.org/node/101092

Require anonymous user to register to add content-type

How can I create a form that requires anonymous viewers to register in order to view it?
Right now, I've created a content-type (Submit Plan) which is a primary link available to everyone (anonymous + authenticated). I've restricted 'view' user permissions to anonymous users but they can still see the 'Title' input (I don't want that).
I'd like it so that when an anonymous user clicks on 'Adding a Plan' primary link (the Submit Plan content-type), it goes to the page and says:
"You must register for an account" OR
Redirects them to the registration page asking them to register to submit a plan.
I've been searching for a module or maybe some code to use but have come up short on this topic. Any help would be appreciated. Thanks!
If you're going to be redirecting users to the registration page, I'd strongly consider using something like logintoboggan to make the registration > node-creation process smooth. Otherwise, registration is a multi-step process and I'd imagine it being easy for users to lose their way back to the Add a Plan form in the process.
For the "show links or show the form" direction, there are at least two ways of approaching that: 1) create a custom page where you "import" the add_plan form (or show the links). 2) modify the node/add/plan page itself, either through themeing or the fapi (the forms api).
Here's a promising looking post for the first method: http://drupal.org/node/357895.
Here's a place to start with FAPI http://api.drupal.org/api/drupal/developer--topics--forms_api.html/6
Here's a post about theming the node form: http://11heavens.com/theming-the-node-form-in-Drupal-6
Without having tried this, I'd probably lean toward method one.
Update: just had another thought: you could also add the plan form to the registration form so they'd fill them out in one shot. I'm not sure of how to do that in general, but the node profile would work if they're only ever going to make one plan, and if not, you can look at how that's put together.
This can be done a few ways.
One, in your menu output, you can change the link to Submit Plan like this:
<?php
global $user;
if ($user->uid == 0) {
print 'Add a Plan';
} else {
print 'Add a Plan'l;
}
?>
The above code looks to see if the user object has a UID. 0 is anonymous, so that will print the link that sends them to register. Otherwise it will take them to the node add form for Submit Plan content type. This also assumes you control your own menu output. You can also override it in a similar manner by using a theme function.
There are a few ways you can do this, so start there and let me know what you think.

Resources