WordPress: как добавить запятые между мета-терминами на один пользовательский тип сообщения

Расширение может закончить вопрос о том, как изменить отображение меты для отдельного пользовательского типа записи, с большой благодарностью TimRDD за его полезный ответ, теперь у меня есть еще один вопрос.
работающий генерирующий код

<?php
//get all taxonomies and terms for this post (uses post's post_type)
foreach ( (array) get_object_taxonomies($post->post_type) as $taxonomy ) {
$object_terms = wp_get_object_terms($post->ID, $taxonomy, array('fields' => 'all'));
if ($object_terms) {
echo '- '.$taxonomy;
foreach ($object_terms as $term) {
echo '<a href="' . esc_attr(get_term_link($term, $taxonomy)) . '" title="' . sprintf( __( "View all posts in %s" ), $term->name ) . '" ' . '>' . $term->name.'</a> ';
}
}
}
}
?>

отображает термины в одной строке, но без запятых между ними, таких как:
(- Proceeding2015 — ключевые слова businessconsumerresearch).

Мне нужна ваша помощь, пожалуйста, ставьте (:) после каждого набора терминов и запятых между терминами, чтобы отобразить их, например:
(- продолжение: 2015 г. — ключевые слова: бизнес, потребитель, исследование).

0

Решение

С вашим кодом все в порядке, вам просто нужно немного изменить вывод. Попробуйте этот код:

//get all taxonomies and terms for this post (uses post's post_type)
foreach ((array) get_object_taxonomies($post->post_type) as $taxonomy) {
$object_terms = wp_get_object_terms($post->ID, $taxonomy, array('fields' => 'all'));
if ($object_terms) {
echo ': (- ' . $taxonomy . ': ';// I modify the output a bit.
$res = '';
foreach ($object_terms as $term) {
$res .= '<a href="' . esc_attr(get_term_link($term, $taxonomy)) . '" title="' . sprintf(__("View all posts in %s"), $term->name) . '" ' . '>' . $term->name . '</a>, ';
}
echo rtrim($res,' ,').')';// I remove the last trailing comma and space and add a ')'
}
}

Надеюсь, что это работает.

0

Другие решения

Я не проверял этот код, но я его расписал. На основании вашего описания, это должно сделать это.

<?php
//get all taxonomies and terms for this post (uses post's post_type)

Я переместил это из fornext,

$taxonomies = get_object_taxonomies($post->post_type);

foreach ( $taxonomies as $taxonomy ) {

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

    if ($object_terms = wp_get_object_terms($post->ID, $taxonomy, array('fields' => 'all'))) {

$holding = array();

foreach ($object_terms as $term) {

Вместо того, чтобы выводить его немедленно, я создаю массив.

            $holding[] = '<a href="' . esc_attr(get_term_link($term, $taxonomy)) . '" title="' . sprintf( __( "View all posts in %s" ), $term->name ) . '" ' . '>' . $term->name.'</a> ';

} // foreach ($object_terms as $term)

Вот где мы делаем этот вывод. Я использую explode() функция. Это выведет каждый элемент массива и поставит ‘,’ после всех них, кроме последнего.

        echo '- '.$taxonomy . ': ' .explode(', ',$holding) . ' ';

} // if ($object_terms)

} // foreach ( $taxonomies as $taxonomy )

?>

Я надеюсь, что я понял это правильно.

Ура!

= C =

0

По вопросам рекламы [email protected]