Помогите обозначить функцию на php

(Ответов: 4, Просмотров: 703)
  1. Banned
    • Регистрация: 26.05.2011
    • Сообщений: 380
    • Репутация: 34
    • Webmoney BL: ?
    Скажите пожалуйста, что в этом коде дописать, чтоб переводились тайтлы в Wordpress, а не только текст страницы. Сейчас оно работает так: переводится текст страницы, а заголовок остается на исходном языке. Помогите, буду очень признателен, если за деньги, то договоримся, очень нужно.

    код

    <?php
    /*
    Plugin Name: fromKvantTranslater
    Plugin URI: http://localhost
    Description: Translate posts
    Version: 1.0.0
    Author: Kvant
    Author URI: http://localhost
    */

    /* Copyright 2012 December (email : kvaant {at} gmail.com)

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
    */
    function kvant_add_admin_page()
    {
    add_options_page('Выполнение перевода','Переводчик',8,translate_options,'kvant_options_page');
    }
    function kvant_options_page()
    {
    add_option('kvant_client_id','Не задано');
    add_option('kvant_client_secret','Не задано');

    //echo '<h2>Задайте настройки</h2>';
    //kvant_set_options();

    echo '<h2>Выполнить перевод</h2>';
    kvant_translate();
    }
    /*function kvant_set_options()
    {

    }*/
    function kvant_translate()
    {
    echo
    '<form name="translate_form" method="post" action="'.$_SERVER['PHP_SELF'].'?page=translate_options">
    <input type="submit" name="translate_button" value="Перевести"></form>';

    if(isset($_POST['translate_button']))
    {
    global $wpdb;
    $sql = 'SELECT ID,post_content FROM wp_posts';
    $result = $wpdb->get_results($sql, ARRAY_A);

    echo '<table cellpadding="0" cellspacing="0" style="text-align:center;margin-top:50px;width:98%;">
    <tr style="background-color: #ffffd9;">
    <th style="width:200px;padding:5px;">Ответ яндекса</th>
    <th style="width:100px;padding:5px;">ID</th>
    <th style="width:200px;padding:5px;">Записано в базу</th>
    <th style="width:200px;padding:5px;">Часть перевода (300 символов)</th>
    </tr>';
    $wpdb->show_errors();

    $colorTB = 'background-color:#f0f3f6';

    foreach ($result as $cat)
    {
    $colorYA = 'color:#990000';
    $colorSV = 'color:#990000';



    $len = mb_strlen($cat['post_content'],'utf-8');
    $num = ceil($len/1500);
    $text = '';
    $ans = true;

    //Разбиваем по кускам и переводим
    for($i=0;$i<$num;$i++)
    {
    //Переводим
    $get= json_decode(file_get_contents('http://translate.yandex.net/api/v1/tr.json/translate?lang=ru-uk&text='.urlencode(substr($cat['post_content'],$i*1500,1500))));

    if($get->code == 200)
    {
    $text = $text.$get->text[0];
    }
    else
    {
    break;
    $ans = false;
    }
    }

    if($ans)
    {
    //Записываем в базу
    $my_post = array();
    $my_post['ID'] = $cat['ID'];
    $my_post['post_content'] = $text;

    // Обновляем данные в БД
    $up = wp_update_post($my_post);

    //Прверяем статус сохранения в базу
    if($up)
    {
    $up = 'Сохранено';
    $colorSV ='color:#009900';
    }
    else $up = 'Не сохранено';

    $colorYA ='color:#009900';
    }
    else
    {
    //Если сервер не ответил то не сохраняем в базу
    $up = 'Не сохранено';
    }


    echo '
    <tr style="'.$colorTB.'">
    <td style="padding:5px;'.$colorYA.'">'.$get->code.'</td>
    <td style="padding:5px;color:#0000ff;">'.$cat['ID'].'</td>
    <td style="padding:5px;'.$colorSV.'">'.$up.'</td>
    <td style="padding:5px;text-align:left;"><xmp style="margin:0;">'.substr($text,0,100).'</xmp><xmp style="margin:0;">'.substr($text,100,100).'</xmp><xmp style="margin:0;">'.substr($text,200,100).'</xmp></td>
    </tr>';
    if($colorTB == 'background-color:#f0f3f6') $colorTB = 'background-color:#f6f9fa';
    else $colorTB = 'background-color:#f0f3f6';
    }
    echo '</table>';
    }


    }
    add_action('admin_menu','kvant_add_admin_page')
    ?>
    [свернуть]


    Я так понял нужно добавить функцию posttitle и в код, а как и куда незнаю, подскажите пожалуйста.
    • 0
  2. Sunshine reggae Аватар для OKyJIucT
    • Регистрация: 02.09.2011
    • Сообщений: 3,240
    • Репутация: 1830
    • Webmoney BL: ?
    А как выглядит код тайтла? Если так

    Код:
    $cat['post_title']
    то сделайте следующее:

    после

    Код:
    $num = ceil($len/1500);
    $text = '';
    добавьте

    Код:
    $title = '';
    После

    Код:
    $get= json_decode(file_get_contents('http://translate.yandex.net/api/v1/tr.json/translate?lang=ru-uk&text='.urlencode(substr($cat['post_content'],$i*1500,1500))));
    добавьте

    Код:
    $getTitle= json_decode(file_get_contents('http://translate.yandex.net/api/v1/tr.json/translate?lang=ru-uk&text='.urlencode(substr($cat['post_title'],$i*1500,1500))));
    после

    Код:
    $text = $text.$get->text[0];
    добавьте

    Код:
    $title = $title .$getTitle->text[0];
    после

    Код:
    $my_post['post_content'] = $text;
    добавьте

    Код:
    $my_post['post_title'] = $title;
    Ну и замените post_title на название того элемента массива, где находится ваш тайтл (если он у вас не такой).

    P.S. Я с WordPress не работал, но это должно работать по идее:) Отпишитесь, как проверите
    • 0
  3. Banned
    • Регистрация: 26.05.2011
    • Сообщений: 380
    • Репутация: 34
    • Webmoney BL: ?
    Уважаемые форумчане - ответьте!!

    ---------- Сообщение добавлено 13:41 ---------- Предыдущее 12:00 ----------

    Окулист, спасибо за помощь!

    ---------- Сообщение добавлено 13:44 ---------- Предыдущее 13:41 ----------

    OKyJIucT, я плохо наверное разобрался, пишет что не сохранено. Код таким получился

    измененный код

    <?php
    /*
    Plugin Name: fromKvantTranslater
    Plugin URI: http://localhost
    Description: Translate posts
    Version: 1.0.0
    Author: Kvant
    Author URI: http://localhost
    */

    /* Copyright 2012 December (email : kvaant {at} gmail.com)

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
    */
    function kvant_add_admin_page()
    {
    add_options_page('Выполнение перевода','Переводчик',8,translate_options,'kvant_options_page');
    }
    function kvant_options_page()
    {
    add_option('kvant_client_id','Не задано');
    add_option('kvant_client_secret','Не задано');

    //echo '<h2>Задайте настройки</h2>';
    //kvant_set_options();

    echo '<h2>Выполнить перевод</h2>';
    kvant_translate();
    }
    /*function kvant_set_options()
    {

    }*/
    function kvant_translate()
    {
    echo
    '<form name="translate_form" method="post" action="'.$_SERVER['PHP_SELF'].'?page=translate_options">
    <input type="submit" name="translate_button" value="Перевести"></form>';

    if(isset($_POST['translate_button']))
    {
    global $wpdb;
    $sql = 'SELECT ID,post_content FROM wp_posts';
    $result = $wpdb->get_results($sql, ARRAY_A);

    echo '<table cellpadding="0" cellspacing="0" style="text-align:center;margin-top:50px;width:98%;">
    <tr style="background-color: #ffffd9;">
    <th style="width:200px;padding:5px;">Ответ яндекса</th>
    <th style="width:100px;padding:5px;">ID</th>
    <th style="width:200px;padding:5px;">Записано в базу</th>
    <th style="width:200px;padding:5px;">Часть перевода (300 символов)</th>
    </tr>';
    $wpdb->show_errors();

    $colorTB = 'background-color:#f0f3f6';

    foreach ($result as $cat)
    {
    $colorYA = 'color:#990000';
    $colorSV = 'color:#990000';



    $len = mb_strlen($cat['post_content'],'utf-8');
    $num = ceil($len/1500);
    $text = '';$title = '';
    $ans = true;

    //Разбиваем по кускам и переводим
    for($i=0;$i<$num;$i++)
    {
    //Переводим
    $get= json_decode(file_get_contents('http://translate.yandex.net/api/v1/tr.json/translate?lang=uk-ru&text='.urlencode(substr($cat['post_content'],$i*1500,1500))));$getTitle= json_decode(file_get_contents('http://translate.yandex.net/api/v1/tr.json/translate?lang=ru-uk&text='.urlencode(substr($cat['post_title'],$i*1500,1500))));

    if($get->code == 200)
    {
    $text = $text.$get->text[0];$title = $title .$getTitle->text[0];
    }
    else
    {
    break;
    $ans = false;
    }
    }

    if($ans)
    {
    //Записываем в базу
    $my_post = array();
    $my_post['ID'] = $cat['ID'];
    $my_post['post_content'] = $text;$my_post['post_title'] = $title;

    // Обновляем данные в БД
    $up = wp_update_post($my_post);

    //Прверяем статус сохранения в базу
    if($up)
    {
    $up = 'Сохранено';
    $colorSV ='color:#009900';
    }
    else $up = 'Не сохранено';

    $colorYA ='color:#009900';
    }
    else
    {
    //Если сервер не ответил то не сохраняем в базу
    $up = 'Не сохранено';
    }


    echo '
    <tr style="'.$colorTB.'">
    <td style="padding:5px;'.$colorYA.'">'.$get->code.'</td>
    <td style="padding:5px;color:#0000ff;">'.$cat['ID'].'</td>
    <td style="padding:5px;'.$colorSV.'">'.$up.'</td>
    <td style="padding:5px;text-align:left;"><xmp style="margin:0;">'.substr($text,0,100).'</xmp><xmp style="margin:0;">'.substr($text,100,100).'</xmp><xmp style="margin:0;">'.substr($text,200,100).'</xmp></td>
    </tr>';
    if($colorTB == 'background-color:#f0f3f6') $colorTB = 'background-color:#f6f9fa';
    else $colorTB = 'background-color:#f0f3f6';
    }
    echo '</table>';
    }


    }
    add_action('admin_menu','kvant_add_admin_page')
    ?>
    [свернуть]


    Правильно? Может в синтаксисе я натупил?
    • 0
  4. Sunshine reggae Аватар для OKyJIucT
    • Регистрация: 02.09.2011
    • Сообщений: 3,240
    • Репутация: 1830
    • Webmoney BL: ?
    romer, все правильно. Не сохраняет, потому что ответа от сервера не получает. Добавленный код по идее здесь ни при чем.
    • 0
  5. Banned
    • Регистрация: 26.05.2011
    • Сообщений: 380
    • Репутация: 34
    • Webmoney BL: ?
    OKyJIucT, ну просто сайт работает, т.е ответ вроде получает. А строки роль играют? Я дописывал коррективы, которые вы мне дали в одну строчку:
    • 0

Похожие темы

Темы Раздел Ответов Последний пост
Как правильно применить функцию clearInterval() ?
Web программирование 2 16.05.2013 17:36
[java] Как сделать функцию массива
Web программирование 16 13.03.2013 02:04
[java] Как сделать функцию массива
Оффтоп и свободные темы 10 11.03.2013 16:36

У кого попросить инвайт?

Вы можете попросить инвайт у любого модератора:

Информеры