Здравствуйте. Какой-то треш происходит, уже всю голову сломал над тем, почему код не работает.
Суть проблемы. Имеется данный код, размещенный в functions.php:
function create_post( $post_id, $post, $update ) {
if ($update == false && get_post_type($post_id) == 'task') {
global $wpdb;
$gettaskurl = $wpdb->get_var( "SELECT `meta_value` FROM `wp_postmeta` WHERE `post_id` LIKE '$post_id' AND `meta_key` LIKE 'task_url'" );
$fp = fopen("file.txt", "w" );
fwrite($fp, $gettaskurl);
fclose($fp);
}
}
add_action( 'save_post', 'create_post', 20, 3 );
Данный код должен при создании поста с типом task получать значение поля 'meta_value' с ключом 'task_url' для создаваемого поста из таблицы 'wp_postmeta' и затем записывать его в файл file.txt, но он не работает.
1) Думал что $post_id не передается, но если изменить
fwrite($fp, $gettaskurl);
на
fwrite($fp, $post_id);
то id текущего поста нормально записывается в файл.
2) Сам wpdb работает, если в тут
$gettaskurl = $wpdb->get_var( "SELECT `meta_value` FROM `wp_postmeta` WHERE `post_id` LIKE '$post_id' AND `meta_key` LIKE 'task_url'" );
вместо $post_id написать напрямую любое число, например
$gettaskurl = $wpdb->get_var( "SELECT `meta_value` FROM `wp_postmeta` WHERE `post_id` LIKE '100' AND `meta_key` LIKE 'task_url'" );
То остальной код выполняется.
Вообще не пойму в чем проблема. Как будто я какую-то мелочь упускаю, но как так вообще возможно, что если используешь $post_id в запросе, то ничего не работает, а если руками id любого поста вписываешь - то все работает При том что сам $post_id передается, но именно в $wpdb->get_var не хочет работать. Также вместо $wpdb->get_var пробовал использовать $wpdb->get_row, $wpdb->query и т.д., но ничего не работает.