WordPress.org

Ready to get started?Download WordPress

Forums

Postie
Multilanguage site and Postie (14 posts)

  1. cvons
    Member
    Posted 1 year ago #

    Hi!

    I'm trying to run Postie together with a multilingual site.
    When I send a post by e-mail and then manually do a "run postie" from the options everything got well and my post get the preferred default language. When I try to use the automatic check or by using the "..../wp-content/plugins/postie/get_mail.php " address the post got no language "prefix". It seams like there are some differences between these two ways of running Postie.

    The multilingual tool I am using for the moment is "Polylang" but I have tried some other with similar result.

    Are there any quick fix I can use?

    http://wordpress.org/extend/plugins/postie/

  2. Wayne Allen
    Member
    Plugin Author

    Posted 1 year ago #

    I think you would need to talk to the Polylang developers to know what needs to be done. If you can find out I will see how hard it would be to support.

  3. Chouby
    Member
    Posted 1 year ago #

    I am here! I don't know Postie so maybe I am wrong. It may be caused by a known issue of the current version of Polylang. The filters are added quite late in the process in a 'wp' hook and this step is never reached when doing a wp-cron.

    Hopefully there is no problem when the language is set from the content (as posts urls are not modified) but it arises when adding the language code to all urls (in that case, it is impossible to find the right post url if Polylang has not done its job).

    The situation should be improved with the current development version (not intended for production site yet).

    http://downloads.wordpress.org/plugin/polylang.zip

  4. cvons
    Member
    Posted 1 year ago #

    Thanks for the answers.
    I'm afraid that the development version of Polylang doesn't seems to help.

  5. Wayne Allen
    Member
    Plugin Author

    Posted 1 year ago #

    @Chouby
    Maybe if you explain how a post needs to be modified we could come up with some sample code for the postie_post filter.

  6. Chouby
    Member
    Posted 1 year ago #

    Could you try again with the development version of Polylang (should be 1.0dev17 now)?

    To explain a bit about the internal of Polylang. It does load either admin or frontend and doing a wp-cron was not directed to the admin side (which means that the save_post filter used by Polylang was not called and thus the language was not added). The new dev version now directs to admin side when doing wp-cron. Hopefully this should solve your issue.

    As Polylang does not provide any other way to set the language than the current WordPress admin interface, the language should be set to the default language.

    More... The language is a taxonomy, but I use helper functions.

    global $polylang;
    $polylang->set_post_language($post_id, $slug);

    will set the language (defined by $slug, typically 'en', 'fr' or 'de'...) of the post defined by $post_id. Maybe it's what you need to set a different language in the postie_post filter.

  7. Wayne Allen
    Member
    Plugin Author

    Posted 1 year ago #

    Thanks for the background. Is there any way for someone to set the language by using categories, or setting the WP slug?

  8. Chouby
    Member
    Posted 1 year ago #

    Before looking at your code, I would have said no.

    But looking at the function 'lookup_category', I observed that you are looking for a term_id without specifying the taxonomy (unlike native functions of WordPress). So if I well understand the code, every valid term in a taxonomy will be accepted. Am I right?

    Since for Polylang, each language is a term in the taxonomy 'language', if I specify for example "English", then it should be accepted.

    Then I propose the following filter (I did not test it):

    add_filter('postie_post', 'add_language');
    
    function add_language($post) {
    	foreach ($post['post_category'] as $key=>$cat) {
    		if ($term = term_exists($cat, 'language') {
    			global $polylang;
    			$polylang->set_post_language($post['ID'], $term['term_id']);
    			unset($post['post_category'][$key]); // otherwise I believe that we will create a new category
    		}
    	}
    	return $post;
    }

    What do you think of this?

  9. Wayne Allen
    Member
    Plugin Author

    Posted 1 year ago #

    Looking good. I'm testing this, but the call to term_exists never succeeds, i.e returns null.
    Which doesn't make sense after looking at the term_exists source http://core.trac.wordpress.org/browser/tags/3.5/wp-includes/taxonomy.php#L0

    If I run the SQL that term_exists generates I get the right thing. I'll have to keep digging.

  10. Wayne Allen
    Member
    Plugin Author

    Posted 1 year ago #

    OK, found the issue. Evidently my category IDs were not really integers. After forcing them using intval everything is working fine.

    I'm thinking about including an option so that Postie works natively with Polylang.

    There were a couple of typos in your original code. For other's reference here is the working snippet.

    foreach ($post['post_category'] as $key=>$cat) {
    	$term = term_exists($cat, 'language');
     	if ($term) {
    		global $polylang;
    		$polylang->set_post_language($post['ID'], $term['term_id']);
    		unset($post['post_category'][$key]); // otherwise I believe that we will create a new category
    	}
    }
  11. Wayne Allen
    Member
    Plugin Author

    Posted 1 year ago #

  12. cvons
    Member
    Posted 1 year ago #

    I still got some problem.
    I use Postie 1.4.30 and Polylang 0.9.8.
    I put the code:

    <?php
    function add_polylang_language($post) {
        foreach ($post['post_category'] as $key=-->$cat) {
            $term = term_exists($cat, 'language');
            if ($term) {
                global $polylang;
                $polylang->set_post_language($post['ID'], $term['term_id']);
                unset($post['post_category'][$key]);
            }
        }
    
    return $post;
    }
    
    add_filter('postie_post', 'add_polylang_language');
    
    ?>

    in a file named filterPostie.php directly in the folder wp-content and then nothing happens when I send an e-mail. When I run postie manually it outputs:
    Checking for mail manually
    Starting mail fetch
    Time: 2013-01-24 19:01:53 GMT

    and then it halts. When I remove the filterPostie.php the e-mails are being received again like before, without language prefix if they are received automatically and with language prefix if I press "run postie".

    Am I supposed to do any changes in the code above?

  13. Wayne Allen
    Member
    Plugin Author

    Posted 1 year ago #

    Please follow the instructions here http://postieplugin.com/enabling-debug-output/
    And send me the debug.log file. You can send it to postie-test@devzing.com if you don't want to post it publicly.

  14. Wayne Allen
    Member
    Plugin Author

    Posted 1 year ago #

    Sorry, I forgot there was a fix in 1.4.31 that you need. Please try upgrading.

Topic Closed

This topic has been closed to new replies.

About this Plugin

About this Topic