WP, много переменных - выбрать правильное решение

123 4
J
На сайте с 21.08.2011
Offline
78
#11

Вот, попробовал описать на примере моделей авто и их двигателей. 🍿

png wp-issue.png
J
На сайте с 21.08.2011
Offline
78
#12
SeVlad:
Метки - костыль? А мне кацца это именно верное решение. Для чего ж они ещё надо? Их суть - линейная иерархия. Ну т.е. "связать параллельные сущности одним термином\значением".

Тут нет параллельных сущностей, по сути. Но метки можно задействовать, хотя и придётся ещё и их "менеджерить".

SeVlad:
Когда мне надо сообразить какую-то структуру, которая в мозгах не складывается - я пытаюсь это на бумаге изобразить. Связи, зависимости и тд. Да не сразу, но в основном после некоторого времени мучений настаёт просветление.

Я тоже почти всегда так делаю. ;)

ivan-lev:
Jovian, чего-то накрутил..

Это точно. :D

ivan-lev:
А "штатные" плагины кэширования разве не затрагивают Custom Post Fields? В смысле, на генерацию разово уйдёт с десятка два лишних запросов.. а потом всё из кэша будет дёргать. Не айс, но может не так страшно?

Если часто менять, какой толк от кэша? Я в принципах кеширования не силён, если честно... Другое дело, если бы не так часто изменения были (в моём конкретном случае)...

ivan-lev:
Штатными средствами http://codex.wordpress.org/Plugin_AP...ence/save_post
Проверять на тип поста (вместо product_options название составной части товара)

Очень полезная инфа, СПАСИБО! Я как-то упустил сии возможности из виду.

SeVlad:
Jovian, всё так?

После изучения картинки, как думаешь?

п.с.: это не важно, но тем не менее. :) Не стоит думать будто я в "товарах" буду "ценники" менять. То, что мне нужно, вообще не относится к коммерции - просто было удобно объяснить на таком примере. Переменные в этих злосчастных 3-4 полях будут иметь строго целые числа от 0 до 200.

Bitman
На сайте с 05.07.2009
Offline
112
#13

Я б плагин писал, что-бы удобно и рулоном postfields редактировать.

Ну, и на таких объёмах, надо кэшировать всё в подряд иначе тупить всё будет.

Северный лес (https://euro-vagonka.by) DREW (https://drew.by) AvtoDrive (https://avtodrive.by)
J
На сайте с 21.08.2011
Offline
78
#14
Bitman:
надо кэшировать всё в подряд иначе тупить всё будет.

Это - безусловно.

Правильное кэширование будет.

Но я хочу помочь кэшированию (как сайта, так и своих рук :) ), решив задачу правильно, а не абы как... Вот в чем загвоздка. ;)

---------- Добавлено 04.09.2013 в 23:45 ----------

Bitman:
удобно и рулоном postfields редактировать.

Это как, расскажите, пожалуйста.

Bitman
На сайте с 05.07.2009
Offline
112
#15

А... всё ясно.

Надо изобретать своё кэширование всех 3000 вариантов "CPF из CRT модель ДВС".

Это как, расскажите, пожалуйста.

Можно даже не плагином, а дополнительными полями в таблице в админке. (Что бы понятнее смотри - http://db.tt/gMRm4Huv - там выведены произвольные поля и можно ыстро редактировать прямо там)

J
На сайте с 21.08.2011
Offline
78
#16
Bitman:
Можно даже не плагином, а дополнительными полями в таблице в админке. (Что бы понятнее смотри - http://db.tt/gMRm4Huv - там выведены произвольные поля и можно ыстро редактировать прямо там)

О, как.

А как? :)

Было бы здорово в админке открыть листинг каких-то CPT и поменять значения определённых CPF сразу скопом...

Bitman
На сайте с 05.07.2009
Offline
112
#17

Ок. Мне сегодня определённо нечего делать.

В function.php для кастомного типа данных stuffaction


define('ILCTHEMEURI', get_template_directory_uri());


function posts_columns_id($defaults)
{
global $post;
$post_type_my=get_post_type($post->ID);


if($post_type_my=='stuffaction')
{
$defaults['stuff_active'] = 'Активен';
$defaults['stuff_view_algoritm'] = 'Ротация';
$defaults['stuff_price'] = 'Цена';
$defaults['stuff_info'] = 'Описание';
$defaults['stuff_pic'] = 'Картинка';
}

return $defaults;
}


function posts_custom_id_columns($column_name)
{
global $post;

$post_type_my=get_post_type($post->ID);


if($post_type_my=='stuffaction')
{
if($column_name == 'stuff_active')
{
if(get_field('stuff_active')!='stuffactive')
{


echo '<input type="checkbox" name="activeornotactive" value="active">';
echo ' <span style="background-color:red; color:#fff; ">Не активно</span>';

}
else
{

echo '<input type="checkbox" name="activeornotactive" value="active" checked>';
echo ' <span style="background-color:green; color:#fff;">Активно</span>';
}
}



}



}

add_filter('manage_posts_columns', 'posts_columns_id', 5);
add_action('manage_posts_custom_column', 'posts_custom_id_columns', 5, 2);
add_filter('manage_pages_columns', 'posts_columns_id', 5);
add_action('manage_pages_custom_column', 'posts_custom_id_columns', 5, 2);




add_action('admin_head', 'stuff_fitch_js');


function stuff_fitch_js() {
?>
<script type="text/javascript">
jQuery(document).ready(function(){

jQuery("input[name=activeornotactive]").live('click', function() {

var getactiveornotactive = jQuery(this).attr("checked");
var thisinpu = jQuery(this);

if(getactiveornotactive!='checked')
{
var sendgetactiveornotactive='stuffnotactive';
}
else
{
var sendgetactiveornotactive='stuffactive';
}

var ilc_qe_id = inlineEditPost.getId(this);


jQuery.post(
"<?php echo ILCTHEMEURI ?>/ajaxaxaxaadmin.php",
{
ilc_ids : ilc_qe_id,
ilc_mode: "ajaxsave",
ilc_val: sendgetactiveornotactive
},
function(data){
if(data=='Event date updated stuffnotactive')
{
jQuery(thisinpu).next("span").html('Не активно');
jQuery(thisinpu).next("span").css('background-color', 'red');
}

if(data=='Event date updated stuffactive')
{
jQuery(thisinpu).next("span").html('Активно');
jQuery(thisinpu).next("span").css('background-color', 'green');
}
}
);

});


});
</script>

<?php
}

и обработчик ajax



<?php
/////////этот файл ajaxaxaxaadmin.php в папке темы
if(isset($_POST['ilc_mode'])){
require_once('../../../wp-blog-header.php');

if($_POST['ilc_mode'] == 'ajaxsave')
{
$ilc_ids = $_POST['ilc_ids'];

update_field('stuff_active', $_POST['ilc_val'], $ilc_ids);

echo "Event date updated ".$_POST['ilc_val'];
}


return;
}



?>

Надеюсь много ошибок не наделал пока килял лишее из кода. Но впринципе должно быть понятно.

Форум тут сам правит нехило. Вот в сыром виде.

J
На сайте с 21.08.2011
Offline
78
#18

Bitman, спасибо, буду пробовать разобраться!

И, вроде бы, у меня начинает формироваться в уме концепция решения моей проблемы - завтра-послезавтра попробую её оформить в практическом виде и поделиться результатами.

Bitman
На сайте с 05.07.2009
Offline
112
#19

Будет интересно

SeVlad
На сайте с 03.11.2008
Offline
1609
#20
Jovian:
После изучения картинки, как думаешь?

Почти так же :)

Почти - потому что теперь видно, что в принципе можно и без них - просто выводя CTF, но если на странице будет 300 позиций моделей двигателя, то это минимум 3х300+300=1200 запросов. Некисленько так :)

В любом случае без кеширования тут не обойтись.

Jovian:
Тут нет параллельных сущностей, по сути.

Под параллельными сущностями я имел ввиду существование 2х независимых CPT. И одна из решаемых задач как раз создать зависимость.

Bitman, то ли я не выспался, то ли такой тупой. А что дадут доп. столбцы в таблице (списке) постов? Это же никак на вывод и хранение не влияет. Единственное что - да, массово править может быть удобнее. (можно и сортировочку прикрутить для большего удобства).

Но мне кажется это всё полумеры. Надо бы структуру чуток поменять. ИМХО.

Кстати, парни, свете топика думаю будет полезен и этот пост Тимура.

Делаю хорошие сайты хорошим людям. Предпочтение коммерческим направлениям. Связь со мной через http://wp.me/P3YHjQ-3.
123 4

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий