Im trying to utilize a filter in wordpress for choose all publish nowadays:

function filter_where( $where = '' ) {
    $where .= " AND post_date = CURDATE() ";
    return $where;

and never working but when using <= or >= obtain the posts.

interesting help

publish_date is really a DATETIME area I believe, not really a DATE area. Try something similar to AND DATE(post_date) = CURDATE() to check just on date, not time.

Edit: You've now realized your MySQL server has got the timezone set wrong. You are able to correct this on the per-connection basis. I'd suggest locating the little bit of code where Wordpress connects towards the database and adding both of these lines of code following the connection. You might want to look for mysql_connect or mysql_select_db to locate this.

$query = "SET time_zone = 'Chile/Santiago'";

After you have carried this out then your following code should most likely work, according to my original answer:

function filter_where( $where = '' ) {
    $where .= " AND DATE(post_date) = CURDATE() ";
    return $where;

If post_date is really a datetime or timestamp column, you need to use:

AND post_date >= CURDATE()
AND post_date < CURDATE() + INTERVAL 1 DAY        --- this is needed just in case
                                                --- your table has posts with 
                                                --- future dates (by error)