1

CiviCRM running under Drupal gives the possibility to some users to access a complete menu for managing CiviCRM without giving them access to the settings of the CMS.

It seems this is not possible when CiviCRM is running under WordPress: the administrator of CiviCRM has full access to all the settings of WordPress, which is not an option in our case.

After some painful experiences with Drupal regarding the hassle of the updates, we decided to switch to WordPress, without knowing about this issue.

We are not the only ones concerned by that issue:

We are disposed to write an extension of CiviCRM allowing a user with enough rights to get the full menu of CiviCRM from the user side of the website, but we need some pointers to start somewhere. We are thinking about a static page containing the javascript code to launch the full CiviCRM management menu.

Any help would be appreciated.

2
  • Do you mind to elaborate what are the "painful experiences with Drupal regarding the hassle of the updates". Do you mean updating things like Drupal 7 to 8 or 8 to 9 ? if so what are the issues?
    – salah-1
    Dec 10, 2021 at 15:31
  • @salah-1: I am disappointed there is no upgrade tool for updating Drupal 7 from the GUI. I tried to update manually to Drupal 8 but didn't succeed. I had to write my own scripts for everal maintenance operations. I tried to make the site compatible first with drush then with composer, but some mutual dependencies were difficult to solve. At a certain moment, I was fed up and recorded the ease to maintain WordPress websites and decided to switch to that platform. Dec 11, 2021 at 23:19

1 Answer 1

1

Personally speaking, I think your proposed plugin goes against the separation of front-end and back-end that is a deliberate feature of WordPress. You might be able to do it, but should you?

when CiviCRM is running under WordPress: the administrator of CiviCRM has full access to all the settings of WordPress

This is not true. Please look again at roles and capabilities and what they mean when accessing the WordPress admin. Users can only ever see (and do) what you expose to them via the relevant role and/or capability. The fact that others also misunderstand the architecture of WordPress doesn't seem relevant to me.

FWIW, CiviCRM Admin Utilities has a "CiviCRM Shortcuts" menu that has links to various CiviCRM admin screens depending on a User's CiviCRM permissions. It appears on the front-end (if the theme allows the WordPress top menu to be shown) so you could customise it to suit your needs via the available actions - but the resultant CiviCRM admin screens would always be rendered in the WordPress back-end rather than wrapped in the front-end theme.

If you really really have to hide CiviCRM admin screens from your Users, you could:

  • Use CiviCRM Profiles to build forms for the front-end
  • Use a form builder of some kind to build custom forms that interact with the CiviCRM data that you want your Users to access and/or update.

There are a number of plugins out there that provide this functionality.

2
  • I appreciate your suggestions. I will dig into these. Regarding the separation front-end back-end of WP: giving access to the back-end of CiviCRM without giving access to the back-end of WP makes sense, since WP and CiviCRM use a separate set of tables, and in some case separate databases. The administrator of CiviCRM doesn't need to be the administrator of WP. Dec 10, 2021 at 15:17
  • Technically, all CiviCRM admin pages can be accessed via the front-end "base page". So, for example, try your.site/civicrm/contact/view/?reset=1&cid=<some-id> where <some-id> is the ID of a Contact in your database. This will show the CiviCRM UI for that Contact, though the style and javascript is likely to be messed up. You could try and fix the front-end CSS and JS to make it work as expected, but I still wonder if it's worthwhile! Dec 10, 2021 at 19:07

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.