qnixdev
@qnixdev
Junior PHP Developer

Как передать переменную $var из поста в 'inc/template-tags.php' темы wordpress?

Есть функция, которая считает колл. просмотров поста. Она формирует переменную, которая формируется для каждого поста своя, счетчик просмотров поста без учета роботов и т. д.:
function postviews( $args = [] ){
		global $user_ID, $post, $wpdb;

		if( !$post || !is_singular() ){
			return;
		}

		$rg = (object) wp_parse_args( $args, [
			'meta_key'		=> 'views',
			'who_count'		=> 1,
			'exclude_bots'	=> true
		] );

		$do_count = false;
		switch( $rg->who_count ){
			case 0:
				$do_count = true;
			break;
			case 1:
				if( !$user_ID ){
					$do_count = true;
				}
			break;
			case 2:
				if( $user_ID ){
					$do_count = true;
				}
			break;
		}

		if( $do_count && $rg->exclude_bots ){
			$notbot = 'Mozilla|Opera';
			$bot = 'Bot/|robot|Slurp/|yahoo';
			if( !preg_match( "/$notbot/i", $_SERVER['HTTP_USER_AGENT'] ) || preg_match( "~$bot~i", $_SERVER['HTTP_USER_AGENT'] ) ){
				$do_count = false;
			}
		}

		if( $do_count ){
			$up = $wpdb->query( $wpdb->prepare(
				"UPDATE $wpdb->postmeta SET meta_value = (meta_value+1) WHERE post_id = %d AND meta_key = %s", $post->ID, $rg->meta_key
			) );
			if( !$up ){
				add_post_meta( $post->ID, $rg->meta_key, 1, true );
				wp_cache_delete( $post->ID, 'post_meta' );
			}
		}
	}
	add_action( 'wp_head', 'postviews' );


Вызов делается на странице поста, и для каждого счетчик понятное что свой идет:
$pageviews_single = get_post_meta( $post->ID, 'views', true );
print $pageviews_single;


Я хочу передать переменную $pageviews_single; в файл доп. настроек темы 'inc/template-tags.php' где подтянуть ответ в метаданных поста. Но ничего не получилось. Сессию не хочу открывать.
Пробовал объявить глобальную переменную, но не выходит передать...
  • Вопрос задан
  • 30 просмотров
Решения вопроса 1
qnixdev
@qnixdev Автор вопроса
Junior PHP Developer
Все оказалось банально просто. Нужно просто передать в inc/template-tags.php глобальные перевеянные из функции:
global $user_ID, $post, $wpdb;
Спасибо Владимир Дружаев за наводку!
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы