Поддержка BuddyPress Интеграция с cubepoints

  • Добрый день, уважаемые знатоки!
    Идея реализуемая в этом топике будет достаточно интересна многим пользователям, которые используют вышеназванный плагин, но к сожалению не смог решить ее сам. Поэтому к делу:
    ввиду того, что на моем сайте используются произвольные поля и постить в него могу все зарегистрированные пользователи не отличающиеся продвинутостью, то блок произвольных полей у меня спрятан, а выводятся поля, которые используют информацию введенную в них в качестве значений произвольных полей. поля выводятся в редакторе подобным кодом:

    <p><strong>Объявление </strong><?php $mark_v = get_post_meta($post->ID, 'robotmeta', 1); ?>
    		 <label><input type="radio" name="extra[robotmeta]" checked="1" value="normal" <?php checked( $mark_v, 'normal' ); ?> /> обычное</label>
    		 <label><input type="radio" name="extra[robotmeta]" value="sale" <?php checked( $mark_v, 'sale' ); ?> /> срочное</label>
    	</p>

    т.е. используются два значения, одно по-умолчанию.
    Если пользователь отмечает, что объявление у него срочное, то это определенным образом влияет на отображение его объявления и предполагается, что в этом случае у пользователя должно отниматься определенное количество очков cubepoints при публикации.
    В cubepoints есть функция которая начисляет определенное количество очков за публикацию. Вот эта:

    function cp_newPost($pid) {
    	$post = get_post($pid);
    	$uid = $post->post_author;
    	global $wpdb;
    	$count = (int) $wpdb->get_var("select count(id) from <code>".CP_DB."</code> where <code>type</code>='post' and <code>data</code>=". $pid);
    	if($count==0){
    		cp_points('post', $uid, apply_filters('cp_post_points',$post_points), $pid);
    	}
    }

    Я бездарно попытался изменить эту функцию таким образом:

    function cp_newPost($pid) {
    	$post = get_post($pid);
    	$uid = $post->post_author;
    	$robotmeta = get_post_meta($post->ID, 'robotmeta', false);
    	$post_points = get_option('cp_post_points');
    
    	global $wpdb;
    	$count = (int) $wpdb->get_var("select count(id) from <code>".CP_DB."</code> where <code>type</code>='post' and <code>data</code>=". $pid);
    	if($count==0){
    		if  (checked( $mark_v, 'sale' )){
    			$post_points -= 2;
    			}
    
    		cp_points('post', $uid, apply_filters('cp_post_points',$post_points), $pid);
    		$count = (int) $wpdb->get_var("select count(id) from <code>".CP_DB."</code> where <code>type</code>='post' and <code>data</code>=". $pid);
    	}				  
    
    }

    Но все равно не работает.Очевидно, что условие if (checked( $mark_v, 'sale' )) не работает, но я не знаю как проверить отмечен пункт или нет.
    Прошу помощи и поддержки!

Просмотр 2 ответов — с 1 по 2 (всего 2)
  • попробовал сделать более грамотно

    function cp_newPost($pid) {
    	$post = get_post($pid);
    	$uid = $post->post_author;
    	$robotmeta = get_post_meta($post->ID, 'robotmeta', false);
    	$post_points = get_option('cp_post_points');
    
    	global $wpdb;
    	$count = (int) $wpdb->get_var("select count(id) from <code>".CP_DB."</code> where <code>type</code>='post' and <code>data</code>=". $pid);
    	if($count==0){
    		foreach($robotmeta as $meta) {
    					if  ($meta == 'sale'){
    			$post_points -= 2;
    			}
    		}
    		cp_points('post', $uid, apply_filters('cp_post_points',$post_points), $pid);
    
    	}				  
    
    }

    но все равно проверка if ($meta == 'sale') не работает. Она конечно работает в файлах шаблона для вывода значения произвольного поля. Но я ее пытаюсь запустить в файле cp_hooks.php

    Хорошо, может быть, если задам вопрос по другому, не вдаваясь в подробности, дело сдвинется с мертвой точки?
    Есть ли возможность проверить произвольное поле на заполнение во время публикации записи, а не во время посещения записи или в момент посещения редактора этой записи?
    К примеру до публикации я заполнил произвольное поле, а по нажатии на кнопку публикации это поле должно провериться на заполнение и в зависимости от этого должна сработать определенная функция по отношению к автору.

Просмотр 2 ответов — с 1 по 2 (всего 2)
  • Тема «Интеграция с cubepoints» закрыта для новых ответов.