2013-02-21 12 views
6

Mam następujący kod w moim functions.php, który wykonuje skrypt momencie rozpatrzenie:Pierwsze „Obiekt klasy WP_Post nie może być przekształcony w ciąg” - gdy jest to ciąg

function save_new_post($post_ID) { 

$site_root = '/home/forexmag/public_html/directory2'; 
$post = get_post($post_ID); 
$title = $post->post_title; 
$breaking_news = false; 

$categories = get_the_category($post_ID); 
if (is_array($categories) && !empty($categories)) 
{ 
    foreach ($categories as $cat_det) 
    { 
     //this is the id for the breaking (bad) news 
     if (5668 == $cat_det->cat_ID) 
     { 
      $breaking_news = true; 
      break; 
     } 
    } 
} 

$exec_code = "/usr/local/bin/php 
     $site_root 
     /crons/cron_notify.php '$title' $post_ID 2 " . intval($breaking_news); 
exec(
    $exec_code 
); 
} add_action('draft_to_publish', 'save_new_post', 10, 1); 

Kiedy publikować nowy post wciąż otrzymuję następujący błąd:

Catchable fatal error: Object of class WP_Post could not be converted to string in /home/forexmag/public_html/wp-content/themes/forex_magnates/functions.php on line 712 

linia ta jest gdzie ustawić $exec_code var. Jednak, jak widać, i jak potwierdziłem przez var_dump, zmienna $title jest ciągiem. czego mi brakuje?

EDIT: Co jeszcze dziwniejsze jest to, że kiedy var_dump $exec_code i zabić skrypt, mam doskonały ciąg:

string(121) "/usr/local/bin/php /home/forexmag/public_html/directory2/crons/cron_notify.php '2011 Free Forex Report' 9934 2 0" 
+1

Czy możesz potwierdzić, że '$ post_ID' jest ciągiem? – Jrod

+0

Jest to liczba całkowita. Ale czy nie powinien być konwertowany na ciąg po konkatenacji? – Matanya

+0

@Jrod, miałeś rację. Przetestowałem z hakiem publish_page, który daje int, podczas gdy draft_to_publish używa obiektu – Matanya

Odpowiedz

7

dostał poprawną odpowiedź na WordPress odpowiedzi. Pomyślałem, że powinienem się nim podzielić:

$post_ID jest obiektem WP_Post. Kod Exec powinny skutecznie używać $post_ID->ID.

function save_new_post($post_ID) 
{ 
    print_r($post_ID); 
    die(); 

Returns

WP_Post Object ([ID] => ... 

Dzięki uprzejmości vancoder

Czy zawiadomienie, że zależy to od haka, którego używasz. Np jeśli używasz publish_page masz całkowitą (to było rzeczywiście źródłem mojego błąd)

0

byłem coraz ten sam błąd, jednak rozwiązanie mojego problemu w końcu był

<?php wp_reset_query(); ?> 

to z faktu, Używano WP_Query i przerywałem pozostałe zapytania w dalszej części strony.

Mam nadzieję, że to pomoże ktoś

-1

mam ten sam błąd na mojej stronie jednego dnia, ale kod nie był problem. Problem leży w bazie danych. To, co zrobiłem, to było przejście do mojej bazy danych i zmiana strony i domu, ponieważ wewnątrz był bełkot. Myślę, że moja strona internetowa zawierała kompromis, więc zmieniam hasło do bazy danych. Ta strona pomoże ci pozbyć się złapalnego błędu krytycznego https://www.msgdigital.com/catchable-fatal-error-object-of-class-wp_error-could-not-be-converted-to-string/.

Wypróbowałem i ufam, że zadziałało.

Powiązane problemy