Скажите пожалуйста, что в этом коде дописать, чтоб переводились тайтлы в 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 и в код, а как и куда незнаю, подскажите пожалуйста.
- 05.10.2013 15:30
- 05.10.2013 15:58
А как выглядит код тайтла? Если так
Код:то сделайте следующее:$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;
Код:Ну и замените post_title на название того элемента массива, где находится ваш тайтл (если он у вас не такой).$my_post['post_title'] = $title;
P.S. Я с WordPress не работал, но это должно работать по идее:) Отпишитесь, как проверите - 05.10.2013 17:44
Уважаемые форумчане - ответьте!!
---------- Сообщение добавлено 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')
?>[свернуть]
Правильно? Может в синтаксисе я натупил? - 05.10.2013 18:57
romer, все правильно. Не сохраняет, потому что ответа от сервера не получает. Добавленный код по идее здесь ни при чем.
- 05.10.2013 20:16
OKyJIucT, ну просто сайт работает, т.е ответ вроде получает. А строки роль играют? Я дописывал коррективы, которые вы мне дали в одну строчку:
Тэги топика:
Похожие темы
Темы | Раздел | Ответов | Последний пост |
---|---|---|---|
Как правильно применить функцию clearInterval() ? | Web программирование | 2 | 16.05.2013 17:36 |
[java] Как сделать функцию массива | Web программирование | 16 | 13.03.2013 02:04 |
[java] Как сделать функцию массива | Оффтоп и свободные темы | 10 | 11.03.2013 16:36 |