Can't use Google Calendar

I am having a problems with Google Calendar and posted some questions on a forum that deals with a similar problem. This is the error I am getting: Warning: Cannot modify header information - headers already sent by (output started at /home/etfm/ in /home/etfm/ on line 876. And this is the URL of the forum I have followed all the instructions and my settings are correct, it will be great if you can have a look at my Google Calendar settings and see what's wrong.

Thank you.

  • randush
    • Design Lord, Child of Thor

    Hello Hakan,

    It is a Google apps email address, @mydomain, not @gmail address. Does that make a difference?

    When I create a new calendar and I try to share it with a specific person, even though I select "Make changes to events" under "Permission Settings", the "permission Settings" convert to "See only free/busy (hide details)" when I click "Create Calendar"

    I actually read the work around using the primary calendar and followed the stems described in the forum. It did not work and then I tried using it with a new calendar for that purpose, still did not work.

    Thank you.

    A s

  • Hakan
    • The Incredible Smush

    But the above is a primary calendar. Isn't that right?

    In any case "Make changes to events" should be set and it should not be a primary calendar.

    Google apps email address, @mydomain

    So is this a business account? You cannot use business accounts.

    Note for Google Business Account users: GCal API usage is not free of charge for business accounts. You should first contact Google sales department to make it available or use an individual account instead.

  • randush
    • Design Lord, Child of Thor


    I have created a new Google account for this purpose and set Gcal in A+ seetings, was still getting the same error at first but after a few clicks on "Test Connection", I got it to work.

    Please take a look at my other questions.

    Thank you.

  • randush
    • Design Lord, Child of Thor

    Thank you. I just need a centralized location where I can see all of our upcoming appointments, of all of service providers, preferably a list and calendar view.

    I have had inquiries from customers who would like to book multiple services, rather than make several reservations for several services. Is it possible? Any way to make multi-service reservations easier?

    I am using a responsive theme and the only page on my website that is not displayed properly on mobile devices in the appointments page. Any way to correct that?

    I would like to edit the notification message that is sent to us when an appointment is made, well to the top part of the message above the copy of the message sent to the customer. I could not find where I could edit those settings on WordPress admin panel but I found the code inside a php file (I think it was appointments.php. The problem is if I would make changes here, I would have to implement those changes again each time I update the plugin. Any ideas? Having the IP of the customer included in the notification emails would also be good.

  • Hakan
    • The Incredible Smush


    We are working on a "ticket" system here. It means each topic is handled as a separate case (because you selected so). You opened several different topics for several issues and somebody is already working for your other issues.

    Please continue from your original topics for each issue. If I am asked, I will be glad to write there.

    I am marking this topic as resolved as I see that there is no problem for "Can't use Google Calendar" case any more.


  • randush
    • Design Lord, Child of Thor


    I am very well aware of the ticket system employed here, if you will look at those tickets/forums/conversations you will notice that some questions go unanswered sometimes while some are just abandoned after one reply. Those issues still exist for us. I was asking for your help because I wanted you to help with my other issues while we still have an ongoing correspondence. What I feared would happen happened; my other questions just lay there waiting for a solution that no one will try to find unless I start a new forum again and hopefully grab someone's attention for a short while.

    I kindly ask that you look at those links I sent you before and see if there anything you can help with.

    Thank you very much for your help, I really appreciate it.

  • Jack Kitterhing
    • Code Norris

    Hiya @randush

    I hope you are well today, sorry about the extreme delay on this thread.

    After reading what the excellent @Imperative Ideas posted, speaking with the lead developer and checking this issue myself. It appears that you can now indeed use this with the Google Apps email account with the Gcal feature.

    Please do let us know if this isn't working for you, so we can further investigate the issue, again sorry about the delay, the lead developer on this plugin now @Vladislav is also aware of this thread.

    Again, sorry for the delay, your patience is greatly appreciated.

    Thank you for being a WPMU DEV member!

    Kind Regards

  • Imperative Ideas
    • HummingBird

    It works fine man, you just have to set the permissions in your account control panel.

    log off, clear your cookies, log back in, and follow the directions as posted in the app. It took about 10min for my new settings to catch up once I figured out I had to permission not just internal calendars but also secondary ones.

  • Imperative Ideas
    • HummingBird

    I've got a few unusual things going on here:

    Including running a calendar for my client, who doesn't use Google apps, in such a way that he and his employees AND the site can all use it. Not to mention the fact I built most of the appointment page layout into my front page template and eliminated all of the irritating table-based code.

    Hakan was talented as hell but his code was a freaking mess. I can't wait to see what Vlad does with it.

  • pxwm
    • WP Core Meltdown

    Hi @Imperative Ideas,

    Just checked your appointments page and looks really nice.

    However I was more interested in your refresh times when you select a service/service provider then click for available times.
    You refresh rate is approx 2 secs when displaying two monthly calendars which for our client would be ideal.

    Currently we are having to use a single weekly calendar to achieve approx 4 secs refresh with auto-refresh set to on.

    If we revert to a single monthly calendar our refresh rates go up to approx 14 secs and I assume if we set to display two monthly calendars then the refresh time would be double.

    With advice from this forum we set the php memory to 256MB but doesn't make any difference.
    It appears to be the time it takes to refresh the monthly calendar that is causing the delays but obviously may still be a problem with our shared reseller server and I'm currently progressing this.

    However if you are willing to share I would be interested to know what kind of server you are hosting the site on?

    Is it a reseller type shared service or vps or dedicated server?


  • randush
    • Design Lord, Child of Thor


    Pretty nifty Appointments widget. I like the mini-menu on the front page which takes you to the appointments page. I like what you did there and would be interested in doing something similar on my website. My menu of services needs to be wide because the services names are long and long because I have many services. Off topic but I would be interested if you have a solution for me.

  • Imperative Ideas
    • HummingBird

    First, @pxwm

    Sorry about the delay, it was around 2am in California when I was replying to you. Since you seem pretty tech savvy, I'd suggest installing a copy of xdebug on your PHP server then running the profiler result through kcachegrind

    I'll link you to a Win-compiled version of kcachegrind ( if you don't have that level of access to a Linux box. Basically, it'll tell you how many times each function is called and what the processing time is on it so that you can see the exact bottleneck.

    I'm actually running a my sites off of a developer account at I would rate them as way above average, especially in the sub-30 dollar range, but I've had my share of issues with their growing pains. For example, I had to go to a dedicated IP (a good idea either way, really) because they went through a de-population phase to improve performance and my account had its IP changed 5 times in 3 weeks. I was furious. On the other hand, the servers are fast and they don't impose throttles just because you dare to actually use the resources.

    For a recent client I used another solution.

    @aecnu owns a company called that has excellent site speed and he's quite willing to go the extra mile to make things work right. Given the fact he's one of the senior staffers at WPMUDev, you'll find that the apps here run without any problems on his network. I would recommend contacting Joe and having him clone your entire site to his network just to see the speed difference.

  • Imperative Ideas
    • HummingBird

    Hey @randush

    That widget was fairly manual. I didn't want to develop a dynamic widget when @Vladislav is busy re-working the entire A+ plugin and changes are imminent.

    I created file called panel-book.php

     * This template controls the flyout appointments menu on the front page
     * As a matter of time & budget constraints, it is not fully dynamic, although
     * it would not be difficult to upgrade in the future. In short, this means that
     * new items must have values that match what the application generates and those
     * values must be manually set.
    <div class="sidepanel">
        <h3>Book An Appointment</h3>
        <p>While we are always pleased to have walk-in traffic, many of our customers prefer the kind of dedicated service provided by a private appointment. Should this be your preference, please use the following form to begin the booking process.</p>
        <p class="important">You must select both a service and a consultant to proceed</p>
        <div class="apptselect">
            <form name="bookpanel" action="<?php echo site_url(); ?>" method="get">
                <select name="app_service_id" id="service_id" tabindex="1" required>
                    <option value="">-- Select A Service --</option>
                    <optgroup label="I need to buy clothes">
                        <option value="1">Shop: for a Suit</option>
                        <option value="2">Shop: for a Wedding</option>
                        <option value="3">Shop: for a Formal event</option>
                    <optgroup label="I need something tailored">
                        <option value="4">Tailor: a Suit</option>
                        <option value="5">Tailor: a Shirt</option>
                    <optgroup label="I need something repaired">
                        <option value="7">Repair: Formal Wear</option>
                <select name="app_provider_id" id="employee_id" tabindex="2" required>
                    <option value="">-- Select A Consultant --</option>
                        <option value="<?php echo rand(2, 3) ?>">I have no preference</option>
                        <option value="2">David Yahid</option>
                        <option value="3">Stephen Parrington</option>
                <input type="hidden" name="page_id" value="82">
            <input type="submit" value="Check Availability" class="button small bookit">
    <a class="trigger" href="#">Appointments</a>

    I call that in footer.php using:
    <?php get_template_part('library/inc/panel', 'book') // Get the booking panel ?>

    It's really important to note this line:
    <input type="hidden" name="page_id" value="82">

    Because WP works off of index.php on all files, you need to pass it the booking page value in a hidden variable.

    Then attach a bunch of CSS:

    /* Sliding Panel: Book Appointment */
    .sidepanel {
        position: absolute;
        top: 150px;
        left: 0;
        display: none;
        background: rgba(0,0,0,.85);
        border-top:1px solid #111111;
        border-right:1px solid #111111;
        border-bottom:1px solid #111111;
        -webkit-border-top-right-radius: 20px;
        -webkit-border-bottom-right-radius: 20px;
        -moz-border-radius-topright: 20px;
        -moz-border-radius-bottomright: 20px;
        border-top-right-radius: 20px;
        border-bottom-right-radius: 20px;
        width: 600px;
        height: auto;
        padding: 30px 30px 30px 190px;
        z-index: 18;
        overflow: inherit !important; /* This stays until we figure out what is writing in an element level style */
    .sidepanel h3 {
        color: rgb(255,255,255);
        font-variant: small-caps;
        font-size: 22px;
        letter-spacing: 1px;
        margin: 15px 0px 17px 0px;
    .sidepanel p{
        margin: 0 0 15px 0;
        padding: 0;
        font-size: 13px;
        color: #cccccc;
    .sidepanel > a, .sidepanel > a:visited{
        margin: 0;
        padding: 0;
        color: #9FC54E;
        text-decoration: none;
    .sidepanel > a:hover, .sidepanel > a:visited:hover{
        margin: 0;
        padding: 0;
        color: #ffffff;
        text-decoration: none;
        border-bottom: 1px solid #ffffff;
        position: absolute;
        text-decoration: none;
        top: 180px; left: 0;
        font-size: 16px;
        padding: 16px 38px 16px 7px;
        font-weight: 700;
        background: rgba(20,20,20,.9) url(../images/plus.png) 93% 49% no-repeat;
        border-top:1px solid #444444;
        border-right:1px solid #444444;
        border-bottom:1px solid #444444;
        -webkit-border-top-right-radius: 20px;
        -webkit-border-bottom-right-radius: 20px;
        -moz-border-radius-topright: 20px;
        -moz-border-radius-bottomright: 20px;
        border-top-right-radius: 20px;
        border-bottom-right-radius: 20px;
        display: block;
        z-index: 20;
    a.trigger:hover{} {
        background:#222222 url(../images/minus.png) 93% 49% no-repeat;
    .apptselect select {
        margin-bottom: 10px;
    span.bookit {
        width: 100%;
        text-align: center;

    While using jQuery to style the selectbox

    The only jQuery involved in making the panel work is this:

    // Sliding Panel Behavior
                return false;

    I know it's not exactly a tutorial but it should be enough for you to replicate.

  • emily_garman
    • Site Builder, Child of Zeus

    @ImperativeIdeas, how were you able to set permissions for secondary calendars? You said, "I had to permission not just internal calendars but also secondary ones." I have found how to set permissions for my primary google calendars for everyone in my Google Apps, but I don't see settings for their secondary calendars. Are these permissions now all-encompassing, or do I need to go somewhere else to configure these permissions?

    I think this is the issue that is impeding syncing with GCal on my Appointments+ setup. Thanks!

Thank NAME, for their help.

Let NAME know exactly why they deserved these points.

Gift a custom amount of points.