Настройка WordPress комментария пост-запроса - PullRequest
4 голосов
/ 29 октября 2010

Я пытаюсь расширить функциональность комментариев в установке WordPress. Я прочитал намек на неуловимую функцию «пользовательского типа комментария», но не смог найти никакой информации. Вместо этого я думал, что добавлю пользовательский столбец »в таблицу базы данных« комментарии ». Это легкая часть. Что я не знаю, как это сделать, так это настроить запросы комментариев для сохранения, обновления и чтения комментариев, чтобы отразить существование нового столбца таблицы. Я думал, что будет фильтр для изменения запроса, но я не могу найти ни одного, который бы это сделал ... Есть идеи?

Ответы [ 2 ]

9 голосов
/ 30 октября 2010

На самом деле пользовательского типа комментария нет, но вы можете легко и эффективно добавлять столбцы, используя "meta meta" , который представляет собой таблицу пар имя / значение, связанных с каждой парой имя / значение, с которой связан данный комментарий с использованием 'meta_key' (пожалуйста, не добавляйте столбец в базу данных SQL; это не одобряется в сообществе разработчиков WordPress.)

Предположим, вы хотите, чтобы пользователь добавил свою учетную запись в Twitter. Это код, который сохранит мою учетную запись Twitter в комментарии, обозначенном $comment_ID (добавление префикса имени мета-ключа к подчеркиванию является хорошей идеей для любой мета-метки, которую вы поддерживаете с помощью пользовательского кода, по сравнению с тем, что вы позволяете пользователям выбирать мета-ключ):

update_comment_meta($comment_ID,'_twitter','mikeschinkel');

Затем, чтобы загрузить значение для отображения в вашем шаблоне, вы просто вызываете get_comment_meta() (третий параметр означает, что нужно вернуть одно значение, а не массив значений):

$twitter = get_comment_meta($comment_ID,'_twitter',true);

Конечно, не зная, как подключить WordPress для интеграции этого, вышеперечисленные функции не сильно помогут. Вам нужно использовать два крючка, первый из которых wp_insert_comment, который будет вызван, когда WordPress сохранит комментарий:

add_action('wp_insert_comment','yoursite_wp_insert_comment',10,2);
function yoursite_wp_insert_comment($comment_ID,$commmentdata) {
  $twitter = isset($_GET['twitter']) ? $_GET['twitter'] : false;
  update_comment_meta($comment_ID,'_twitter',$twitter);
}

Второй немного сложнее; тот, который позволяет вам добавлять поля и изменять другие аспекты формы комментария. Хук 'comment_form_defaults' устанавливает значения по умолчанию для комментария, и мы добавим HTML-код для поля Twitter (я зацепил формат HTML из функции comment_form(), найденной в /wp-includes/comment-template.php в строке 1511 в WP v3. 0,1)

add_filter('comment_form_defaults','yoursite_comment_form_defaults');
function yoursite_comment_form_defaults($defaults) {
  $email = $defaults['fields']['email'];
  $label = __( 'Twitter' );
  $value = isset($_GET['twitter']) ? $_GET['twitter'] : false;
  $defaults['fields']['twitter'] =<<<HTML
<p class="comment-form-twitter">
<label for="twitter">{$label}</label>
<input id="twitter" name="twitter" type="text" value="{$value}" size="30" />
</p>
HTML;
  return $defaults;
}

А вот как это выглядит в действии:

WordPress Comments form with a Twitter field

Эта расширяемость формы комментариев является новой для WordPress 3.0, так что по своей природе она является новой в проекте с открытым исходным кодом, и, вероятно, она не будет охватывать все варианты использования (например, не было простого способа получить запоминается значение для имени в Twitter) , но, надеюсь, вы сможете согнуть его настолько, насколько сможете, и получите то, что вам нужно, и в будущем, выпущенном из WordPress, API формы комментариев почти наверняка улучшится.

Надеюсь, это поможет.

-Майк

P.S. В будущем рассмотрите возможность размещения вашего вопроса на родственном сайте StackOverflow Ответы WordPress ; вот где тусуются большинство энтузиастов WordPress, которые могут быстро ответить на такие вопросы.

0 голосов
/ 03 февраля 2014

Я нашел эту полезную ссылку, связанную с темой:

Настройка комментариев в WordPress - функциональность и внешний вид

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...