2012-02-16 4 views
1

Я использую плагин wordpress.иметь возможность изменять disqus_identifier на некоторых страницах

Я нашел код в файле «плагин comments.php», который определяет идентификатор страницы:

var disqus_identifier = '<?php echo dsq_identifier_for_post($post); ?>'; 

То, что я придумал до сих пор является, чтобы заменить его:

var disqus_identifier = '<?php echo get_post_meta($post->ID, 'dis_ident_field', true); ?>'; 

Это означает, что он получит disqus_identifier из пользовательского поля из Wordpress с именем dis_ident_field, но я беспокоюсь об этом методе. Для страниц, где я не заполняю это поле, у меня теперь нет идентификатора вообще в javascript в источнике страницы.

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

+0

Почему бы просто не использовать 'var disqus_identifier = ' ID?>';' До тех пор, пока идентификатор уникален для каждой «уникальной» страницы, тогда ваше добро пожаловать в –

+0

, потому что на некоторых страницах я хочу использовать один и тот же идентификатор и не всегда уникальный. Другими словами, я требую, чтобы группа страниц имела один и тот же идентификатор, таким образом, тот же самый поток комментариев. – Jim

ответ

2

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

<?php 
//Attempt to get identifier 
$disqus = get_post_meta($post->ID, 'dis_ident_field', true); 
//if isset & not blank else use $post->ID 
$disqus = (!empty($disqus)) ? $disqus : $post->ID; 
?> 

var disqus_identifier = '<?=$disqus?>'; 
+0

Это, похоже, сработало, спасибо за помощь. – Jim

0

Мне пришлось получить несколько обзоров групп, которые уже были в Дискусе, с моего старого сайта, в мой новый сайт группы WordPress. Мне нужны только обзоры на нашей домашней странице, вот что я сделал ...

Я посмотрел код на своем старом сайте и схватил значение disqus_identifier оттуда.

Я определил и добавил пользовательское поле с именем «dsq_identifier» в свой собственный шаблон страницы и дал ему значение disqus_identifier с моего старого сайта.

Я новичок в WordPress и PHP, и я уверен, что это плохая идея, но мне нужно, чтобы это было сделано, так что ...

Я редактировал Comment.php плагина Disqus путем добавления этого код после того, как все инициализации вара:

<?php if (get_post_meta($post->ID, 'dsq_thread_id', true)) : ?> 
    disqus_identifier = '<?php echo get_post_meta($post->ID, 'dsq_identifier', true); ?>'; 
<?php endif; ?> 

Поскольку я только хочу, чтобы отобразить комментарии обзора на нашей домашней странице, которая имеет настраиваемое поле с именем «dsq_identifier,» Я изменил свой собственный шаблон (который используется несколько страниц). Вот этот код:

<?php if (get_post_meta($post->ID, 'dsq_identifier', true)) : ?> 
    <?php comments_template(); ?> 
<?php endif; ?> 

BAAAMMM! Работал в первый раз.

Если у вас есть какие-либо идеи о том, как заставить это работать, не меняя базу кода плагина Disqus, которая будет качаться. Мне нужно сделать шаг назад и действительно подумать об этом после того, как новый сайт будет выпущен через пару дней.

+0

Лично я вернул бы идентификатор из функции dsq_identifier_for_post(). Таким образом, если disqus вызывает эту функцию из других областей в плагине, он все равно получает правильный идентификатор. –

Смежные вопросы