WordPress.org

Support

Support » Plugins and Hacks » [Resolved] Interferes with PHP preg_replace in My Function

[Resolved] Interferes with PHP preg_replace in My Function

  • Hi @till

    I recently added a new function to my site which filters content looking for text email addresses. When it finds an email address, it converts the email address to a “maito” link.

    What happens when I have the Email Address Encoder plugin enabled is that the function does not convert the emails to “mailto” links. It leaves the email addresses as just text. However, I’d like to use the EAE plugin for its security features.

    Here is the function I’m using:

    function txt_filter($string) {
    	$search = array('/([a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4})/');
    	$replace = array('<a href="mailto:$1>$1</a>');
    	$processed_string = preg_replace($search, $replace, $string);
    	echo $processed_string;
    }

    http://wordpress.org/extend/plugins/email-address-encoder/

Viewing 7 replies - 1 through 7 (of 7 total)
  • Plugin Author Till Krüss

    @tillkruess

    Your regexp won’t work with already encoded email addresses, so it needs to be called before the EAE plugin, which would be using the the_content filter with a priority of 999 or less.

    Thanks for your response! How do I set the priority for my function?

    Plugin Author Till Krüss

    @tillkruess

    Would this be correct?

    function txt_filter($string) {
    	$search = array('/([a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4})/');
    	$replace = array('<a href="mailto:$1>$1</a>');
    	$processed_string = preg_replace($search, $replace, $string);
    	echo $processed_string;
    }
    add_filter( '', 'txt_filter', 10, '' );

    I have a feeling it’s wrong. This feels somewhat “over my head”.

    Plugin Author Till Krüss

    @tillkruess

    add_filter( 'the_content', 'txt_filter', 10 );

    Make sure you don’t call txt_filter anywhere else manually.

    My function is used as follows:

    <?php txt_filter( get_the_content() ); ?>

    and

    “Advanced Custom Fields” plugin field:
    <?php txt_filter( get_field('field_name') ); ?>

    Your plugin does filter any WYSIWYG / WP Editor fields created with the plugin, Advanced Custom Fields.

    The code you supplied above may not work for me. 🙁

    I might just have to use a JS solution.

    Plugin Author Till Krüss

    @tillkruess

    Quick and dirty. Try this:
    $content = apply_filters( 'the_content', txt_filter( get_the_content() ) );
    And that:
    $field = eae_encode_emails( txt_filter( get_field( 'field_name' ) ) );

Viewing 7 replies - 1 through 7 (of 7 total)
  • The topic ‘[Resolved] Interferes with PHP preg_replace in My Function’ is closed to new replies.