9

私のfunctions.phpには、公開時にスクリプトを実行する次のコードがあります。

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);

新しい投稿を公開すると、次のエラーが発生し続けます。

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

この行は、変数を設定する場所です$exec_code。ただし、ご覧のとおり、var_dumpで確認したように、$title変数は文字列です。私は何が欠けていますか?

編集:さらに奇妙なのは、var_dump$exec_codeしてスクリプトを強制終了すると、完全な文字列が得られることです。

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

3 に答える 3

11

WordpressAnswersで正解を得ました。私はそれを共有すべきだと思った:

$post_IDWP_Postオブジェクトです。execコードは効果的に使用する必要があります$post_ID->ID.

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

戻り値

WP_Post Object ( [ID] => ...

ヴァンコーダーの礼儀

これは、使用しているフックによって異なることに注意してください。たとえば、使用publish_pageすると整数が得られます(これが実際に私の混乱の原因でした)

于 2013-02-21T19:23:35.870 に答える
0

私は同じエラーを受け取っていましたが、最終的に私の問題の解決策は

<?php wp_reset_query(); ?>

これは、WP_Queryが使用されていて、ページのさらに下にある残りのクエリを中断していたためです。

これが誰かに役立つことを願っています

于 2016-02-03T15:15:59.003 に答える
-2

ある日、私のWebサイトで同じエラーが発生しましたが、コードは問題ではありませんでした。問題はデータベースにあります。私がしたことは、データベースにアクセスして、サイトのURLとホームを変更することでした。私のウェブサイトは侵害されたと思うので、データベースのパスワードを変更します。このWebサイトは、キャッチ可能な致命的なエラーhttps://www.msgdigital.com/catchable-fatal-error-object-of-class-wp_error-could-not-be-converted-to-string/を取り除くのに役立ちます。

私はそれを試し、それがうまくいったと信じています。

于 2017-01-15T02:08:21.070 に答える