Что не так с этими функциями? - PullRequest
1 голос
/ 17 марта 2011

Я работаю над несколькими функциями php для веб-сайта WordPress по телевидению (www.canal-en-vivo.com), который изменяет статус сообщений (т. Е. Каналов) с Опубликованных на Черновики, в зависимости от того, работает ли канал или нет. Я соединил следующие две функции, но они, похоже, не работают. Ребята, взгляните ли вы на общую структуру кода и дайте мне знать, если вы видите что-то странное со структурой?

Эта функция определяет, является ли лента действующей или нет, проверяя URL-адрес «$ feedurlstr»

// This function determines whether a given post/channel is live or not 
// based on whether url $feedurlstr has $string in it.

    function LiveOrNot($feedurlstr) {
        global $result;
        // create curl resource
        $ch = curl_init();
        // set url
        curl_setopt($ch, CURLOPT_URL, $feedurlstr);
        //return the transfer as a string
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        // $output contains the output string
        $output = curl_exec($ch);
        // close curl resource to free up system resources
        curl_close($ch);      

        $string = "PP['channel_live'] = true";
        if(strstr($output,$string)) {
        $result = "live";
        } else {
        $result = "notlive";
        }
        return $result;
    }

И эта функция запускает SQL-запрос, который меняет статус каждого сообщения в зависимости от того, возвращает ли предыдущая функция $ result в реальном времени или не в реальном времени.

// Function runs SQL query based on channel status $result

    function RunChannelLiveQuery() {
        global $key;
        global $post_ids;
        $key = 'feed';
        // This array includes the Post ID to be checked
        $post_ids = array(2263, 2249); 

        foreach ($post_ids as $id) {
        // Wordpress function to pull value out of a "custom field" - spits URL
            $feedurl = get_post_custom_values($key, $id);
            // turns $feedurl into string
            $feedurlstr = implode($feedurl);
            // Find whether feed is live or not
            LiveOrNot($feedurlstr);

            // Performs DB Query based on live or not
            if ( $result == "live" ) {
                mysql_query ("UPDATE 'wp_posts' SET 'post_status' = 'publish' WHERE 'post_id' = '$id'") or die(mysql_error());
            }
            if ( $result == "notlive" ) {
                mysql_query ("UPDATE 'wp_posts' SET 'post_status' = 'draft' WHERE 'post_id' = '$id'") or die(mysql_error());
            }
        }
    }

Есть идеи о том, что может быть не так с этими бандами функций?

Ответы [ 2 ]

1 голос
/ 17 марта 2011

Хотя это и не обязательно, вы можете использовать Wordpress API для обновления статуса сообщения

0 голосов
/ 17 марта 2011

Попробуйте:

В Функция LiveOrNot () удалить строку

global $result;

А в RunChannelLiveQuery () заменить

LiveOrNot($feedurlstr);

1014 *
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...