Forum Replies Created

Viewing 13 replies - 1 through 13 (of 13 total)
  • I don’t have a working solution yet. But I will be creating one considering that I have a custom membership site launching by the 7th of November which handles all of the above items and I’ve chosen Mandrill as my T-Mail service.

    I have recently set up a server running Debian 7, Nginx 1.2, MySQL 5.5 and PHP 5.4 with WP 3.6.1 and WishlistMember 2.7. I’ve successfully set up Mandrill with SPF and DKIM running on the primary domain. Not going to share the url until it goes live.

    I have a free membership level and people who Sign Up get registered in WP and also get a confirmation mail of their opt-in which I send via Mandrill. Only after confirming do they get processed on the Marketing List. This means effectively that (let’s say) MailChimp does not perform the Confirmed Opt-In, and technically none of these people count as confirmed opt-ins according to MC, but this works for my clients for now. That’s because the only movement expected with these lists is to become managed completely in-house if the business grows large enough, or to remain on MailChimp. The technicality of confirmed opt-in will only become an issue if moving to another provider…

    A client getting added to free membership part facilitates many other features, in fact, even if someone purchases a product before Signing Up they are still processed in this way. This adds a step to the product purchase flow, but it’s all behind the scenes, and it’s worth it. This way, everyone who is interested in connecting with the site (whether paid or free) counts as a member, and all the functions and features are integrated.

    Technically I do not need to send username and password to a client due to the fact that I have developed technology to handle all this server-side.

    However, the same steps are conducted whether they’re being handled client-side or server side; and this means I will be creating a solution and Integrating Mandrill either through the wpMandrill plugin as I currently have it set, or perhaps using the zip files and opting for straight #includes.

    At this point not sure which will be best considering the custom WP Theme coding and Custom Plugins I’ve written to produce the business logic, but either way I will contribute to this thread in the next few weeks.

    PS- to help others please at least list your server setup (even if it’s shared hosting understanding what servers are generating the issue would be helpful context) and your url if possible.

    My particular problem related to FTP ownership issues. I had several items with the root:root owners whereas most items were www-data:www-data.

    (Running Debian 7, Nginx 1.2, MySQL 5.5, Php 5.4)

    I had to reinstate remote root access (I had config’d it off before) then
    chown -R www-data:www-data /var/www

    that solved my immediate issue- however my issue continued to be an ADMINISTRATIVE one. FTP was setting ownership that wasn’t working, and the problems persisted with new files on upload.

    My instinct was to adopt all FTP users with Admin into the www-data group, and then change dir permissions to allow group write… but… since I am actually THE admin I just began using www-data as the FTP user! Basically I put off the problem.

    I am still not clear in your case(s) if the issue stems from using files which are not hosted on the root domain… for example using https://www.offsite.com/avatarImage1.jpg on https://www.mysite.com/my-new-post/

    If that is the case my “solution” will need extension to serve the actual issue. I’m going to solve both problems within a week or so- 1: allowing other FTP users besides www-data to upload files used (normally) by WP. And allowing offsite images to load corrrectly. I’m super busy with a launch right now using this setup so it’s part of the to-do list, just not A-1 priority today.

    It’s hard for me to explain the “ok after refresh” for that I can only guess, but I think you’ll find that the user/group ownership is different for those particular files/folders that experience the issue.

    You should check the value of the file indicated in the db, then notice it will probably be set to “root:root” as owner:group, or in any case set to something that your php doesn’t have immediate permission to work with.

    If it’s ok after refresh, I’m wondering (since I don’t know how the script function get_avatar() is set up, if perhaps there is some cacheing going on, after which the file does have permissions OR if the issue isn’t actually that the image is being made on the fly at size 100, doesn’t technically exist until the function runs once, then gets handled as OK with proper permissions (ownership, technically, not really permissions) afterward.

    In any case the fishbowl this problem swims in is permissions based.

    Yes, and I have faced similar issues with my plugins…

    Here a couple different solutions which have worked for me depending on the implementation, and whether high-performance is a factor:

    1) declare a static var, for example at the beginning of your function and conditionally skip portions of code:

    function rfd_argument_function() {
        global $post;
        global $rfd_meta_box_options;
        static $tc = 0; //include static var at head of function
    ...
    if( $tc < 1) {
    //run this code once only
    }
    ...
    
    //at the end of your code:
     $tc++;
    } //end rfd_argument_function

    this solution is the most performant I’ve used

    2) Otherwise, if there are significantly unique values being inserted, such as a unique job code identifier, you can test for the existence of the entry itself directly using a custom $wpdb query and nullify the insert on test conditions. This approach may not be possible depending on your data.

    3) Just delete the task-type and rewrite it again; this approach is also not as performant, but it’s the absolute dead simple approach: here’s how to keep multiple deletes from happening when there are loops involved-

    $turncz = -2;
       for($xv=0;$xv<$matches_cz;$xv++){
        $keycode = array_search($matches[2][$v] , $att_links);
    
        if ( !empty($keycode) ) {
          if($turncz != $keycode) $wpdb->delete( ...);
          $turncz = $keycode;
        ...// add relevant updating code
         } //close if
        } //close for

    this was code I developed to handle multiple shortcodes listed on a page. I needed to access and re-render these same shortcodes on a membership page. However, multiple shortcodes of the same type might be present. In order to make sure that only the latest shortcodes were entered in the db, I ended up deleting all shortcode db entries per page, and simply adding the db entries again.

    The extra db call- potentially even multiple calls depending on how many unique types of shortcodes were present – was acceptable versus testing whether each individual shortcode result was entered, a case which would then lead to managing updates as well as inserts… Some code you’re not seeing is where I threw all shortcodes types into an array ($att_links), and so I looped through them here deleting all relevant db entries ONCE and ONLY ONCE based on each unique type of shortcode, before collating and adding them with a single $wpdb query at the end of my function. My function happens to filter (‘content_save_pre’).

    Hopefully these ideas help you craft a solution that works best for your data.

    I suppose “ease” is a matter of perspective. Professional, custom solutions are necessary to do anything that a Theme or Plugin hasn’t canned. By the very nature of “custom” considerations, this is antithetical to what a theme or plugin provides.

    You can hear my rhetoric about the ills of over-specialization, and my equally boring diatribes about systems architecture and good theme construction (elegantthemes) vs. bad (woothemes). Note that WP does not endorse my broad sweeping statements… I’m a custom coder seeking performance, and customization: ET stays out of my way while offering great theme support. Woo is more… impossible… unless one is a hands on pro blogger who doesn’t want or have dev support. They do ok in that case.

    Then there is good membership. You may not take advantage of the goodness however, if you are not willing to customize, which means PHP and/or javascript coding. So no, it isn’t an out-of-box experience.

    The custom solution looks like this: https://betterwomensnetwork.com/ where the menu bar displays different content depending on whether a user is logged in or not. If NOT logged in you see the slogan where the navigation normally belongs (“Our first goal is to successfully train…”), but if logged in the page template displays the top Nav Menu for the 5 part, 40 page lesson plan involving lead generation techniques. Since the point of the site is to offer a free membership level with training, it doesn’t make sense to offer the Training Menu publicly.

    So there’s the conditional statement set up. If a user is logged in, show the Menu. If not, show the slogan. Simple?
    if(!is_user_logged_in()){
    <div>Slogan</div>
    } else {
    //Theme code which shows the Primary Nav Menu
    }

    That’s how I handled it after locating the Theme’s call to the menu.
    I encapsulated the existing code with my conditional response.

    There are a million ways to skin the cat here, all of them involve custom code. As little as 2 lines to display a menu conditionally, but this is not rocket science. It just depends on what you need in the end. Your stated need appears very very simple.

    I am not selling my services, but really making a point about what it really takes when “Custom” thinking is involved. It takes custom coding. Making the association with a qualified (and hopefully brilliant or at least thoroughly knowledgeable-) WP coder may help you go farther.

    Forum: Plugins
    In reply to: Custom Query

    CENTOS 6.1 x86_64
    Apache 2.2.23
    PHP version 5.2.17
    MySQL version 5.5.30-log

    Forum: Plugins
    In reply to: Custom Query

    Hey Scott,

    XLNT. Glad u got it working, and seeing your final code makes this a complete experience.

    Since code like this has not worked in my setups- can you share the environment it is working in? Just the basic sketch, like your server type/OS MySql/PHP versions etc. Nothing says you need to do this, but I wonder if this would be helpful for others to compare setups.

    Forum: Plugins
    In reply to: Custom Query

    Ok my post is too old to edit. I forgot you’re using a custom table so you may need to configure

    $my_table = $wpdb->prefix . 'groups_groupmeta';

    for use in your query.

    Forum: Plugins
    In reply to: Custom Query

    Oh- I mentioned the official Codex but did not link its resource:

    WPDB Class Reference

    Again, I have had varied experience with those recommendations working, but it is certainly one piece of the puzzle ??

    Forum: Plugins
    In reply to: Custom Query
    $var_count = $wpdb->get_var( $wpdb->prepare( "SELECT count( * ) FROM $wpdb->groups_groupmeta WHERE meta_key = 'gtags_group_tags' AND meta_value = %s,
    $My_Tags" ) );

    A couple comments on this:
    My style when answering is to change as few things as possible, even where completeness or thoroughness may dictate otherwise. You could substitute other elements in your query str with vars as well, but probably no need.
    Set $My_Tags before entering this query appropriately.

    Another comment- I’m not sure if you mean by the global $bp that you are referencing another Database? If so, you aren’t going anywhere until that is handled. Assuming you are accessing the SAME db as your wp then $wpdb->(table_name) will work, where table_name does not have the leading parts that are common to all the wp tables. This varies per server and setup. Mine is just wp_(table_name) but other fully qualified table names are wp_db2371_users for example, so you’d put $wpdb->users ordinarily…

    A final comment- the reason I’m on this forum today and hopefully this will shed some light moving forward:

    I am able to “get away” with lots of stuff on my favorite servers, in fact I just do this:

    $My_var = "blah";
    $querystr_k = "SELECT * FROM wp_cde WHERE meta_col = 'someval' AND meta_col2 = $My_var";
    $wpdb->get_results($querystr_k, ARRAY_A);

    But then on others it’s a federal issue to declare an open variable- it makes me single quote the column names, or single quote the var ($My_var) inside the double quotes (huh? why ever would that make sense)). Some servers I can’t even declare my table name unless it’s in a var name, and then it has to either be in quotes itself- or not.

    The moral of this is I am seeming to have to do an unusual amount of trial and error with each new server/PHP/MySQL setup (and all of them are 5+ btw) I encounter. I know that it depends whether I’m calling the custom query from inside a Class, or it’s object instantiated on a page, or a template page, etc. So of course the context in page matters, but nevertheless it seems voodoo to me at this point how to avoid the trial and error…

    I have been all over helpful sites like WP Engineer which is of rudimentary help, and of course WordPress Answers which offers typically more contextual help.

    Still I find that there aren’t really cut & dried all purpose solutions which always work- sometimes the code in the codex works out of the box, sometimes it doesn’t. There are only the basic principles, and then learning to apply them in context in your theme/plugin/whatever.

    Forum: Fixing WordPress
    In reply to: the_content_limit

    Let me clarify-

    the_content_limit() comes from the Plugin “Limit Post Add On” at the URL I provided above.

    Forum: Fixing WordPress
    In reply to: the_content_limit

    I have customized themes using the plugin “limit post add on” https://www.ads-software.com/extend/plugins/limit-post-add-on/

    I don’t have time this very second to answer the direct question, which seems to really be not “why” such a thing happens, but “how” to deal with this in a post, and to solve the problem. If desired, I can follow up with a sample from another of my blogs which customizes the use of this plugin. I first encountered it in “Brave Zeenat” by Dizenoco, a template that is pretty luscious for photo/video…

    hit me up if needed…

Viewing 13 replies - 1 through 13 (of 13 total)