Пачка полезных сниппетов для блога. Часть 24

Общее количество пингбеков, трекбеков в колонках записей админки

Добавление этого сниппета в файл functions.php вашей темы wordpress добавит новую колонку под названием Counts (можно изменить в коде) в таблицу списка записей блога. Эта колонка выведет общее количество пингбеков и трекбеков для каждой записи.

function commentCount($type = 'comments'){
        if($type == 'trackbacks'):
                $typeSql = 'comment_type = "trackback"';
                $oneText = 'One :trackback';
                $moreText = '% :trackbacks';
                $noneText = 'No :trackbacks';
        elseif($type == 'pingbacks'):
                $typeSql = 'comment_type = "pingback"';
                $oneText = 'One :pingback';
                $moreText = '% :pingbacks';
                $noneText = 'No :pingbacks';
        endif;
        global $wpdb;
    $result = $wpdb->get_var('
        SELECT
            COUNT(comment_ID)
        FROM
            '.$wpdb->comments.'
        WHERE
            '.$typeSql.' AND
            comment_approved="1" AND
            comment_post_ID= '.get_the_ID()
    );
        if($result == 0):
                echo str_replace('%', $result, $noneText);
        elseif($result == 1):
                echo str_replace('%', $result, $oneText);
        elseif($result > 1):
                echo str_replace('%', $result, $moreText);
        endif;
}
add_filter('manage_posts_columns', 'posts_columns_counts', 1);
add_action('manage_posts_custom_column', 'posts_custom_columns_counts', 1, 2);
function posts_columns_counts($defaults){
    $defaults['wps_post_counts'] = __('Counts');
    return $defaults;
}
function posts_custom_columns_counts($column_name, $id){
        if($column_name === 'wps_post_counts'){
                commentCount('trackbacks'); echo "<br />";
                commentCount('pingbacks');
          }
}

Дополнительная колонка в медиа библиотеки с ID вложений

Добавление этого сниппета в файл functions.php вашей темы wordpress добавит новую колонку в медиа библиотеке с указанием ID вложения.

add_filter('manage_media_columns', 'posts_columns_attachment_id', 1);
add_action('manage_media_custom_column', 'posts_custom_columns_attachment_id', 1, 2);
function posts_columns_attachment_id($defaults){
    $defaults['wps_post_attachments_id'] = __('ID');
    return $defaults;
}
function posts_custom_columns_attachment_id($column_name, $id){
        if($column_name === 'wps_post_attachments_id'){
        echo $id;
    }
}

Добавляем произвольные указатели-подсказки в темы и плагины

Добавление этого сниппета в файл functions.php вашей темы WordPress позволит вам воспользоваться новой фичей под названием «указатели». Многие из вас замечали такие указатели в новых обновлениях WordPress. Просто укажите в переменной pointer_content информацию, которую вы хотите вывести и ID с jquery для назначения указателю “$(‘#menu-appearance’)”.

add-custom-pointers-in-themes-and-plugins-screenshot[1]

add_action( 'admin_enqueue_scripts', 'my_admin_enqueue_scripts' );
function my_admin_enqueue_scripts() {
    wp_enqueue_style( 'wp-pointer' );
    wp_enqueue_script( 'wp-pointer' );
    add_action( 'admin_print_footer_scripts', 'my_admin_print_footer_scripts' );
}
function my_admin_print_footer_scripts() {
    $pointer_content = '<h3>wpincode.com | Notice</h3>';
    $pointer_content .= '<p>Lorem Ipsum is simply dummy text of the printing and typesetting industry.</p>';
?>
   <script type="text/javascript">
   //<![CDATA[
   jQuery(document).ready( function($) {
    $('#menu-appearance').pointer({
        content: '<?php echo $pointer_content; ?>',
        position: 'left',
        close: function() {
            // После нажатия на кнопку Закрыть
        }
      }).pointer('open');
   });
   //]]>
   </script>
<?php
}

Выводим пользователей с наибольшим количеством комментариев, его email и ссылку на сайт автора

Добавление этого сниппета в файл functions.php вашей темы WordPress позволит вам вывести список топ-комментаторов. Используйте $result->comment_author_email, $result->comments_count, $result->comment_author_url для добавления дополнительных параметров к сниппету.

function top_comment_authors($amount = 5) {
global $wpdb;
$results = $wpdb->get_results('
    SELECT
    COUNT(comment_author_email) AS comments_count, comment_author_email, comment_author, comment_author_url
    FROM '.$wpdb->comments.'
    WHERE comment_author_email != "" AND comment_type = "" AND comment_approved = 1
    GROUP BY comment_author_email
    ORDER BY comments_count DESC, comment_author ASC
    LIMIT '.$amount
);
$output = "<ul>";
foreach($results as $result) {
    $output .= "<li>".$result->comment_author."</li>";
}
$output .= "</ul>";
echo $output;
}

Добавьте следующий кусочек кода в то место темы, куда нужно вывести список:

<? top_comment_authors(); ?>

Добавляем произвольные типы записей на страницу архива

Добавление этого сниппета в файл functions.php вашей темы WordPress позволит вам вывести произвольные типы записей на страницу архива

function add_custom_types_archive( $query ) {
if( is_category() || is_tag() && empty( $query->query_vars['suppress_filters'] ) ) {
$query->set( 'post_type', array(
 'post', 'your-custom-post-type-here'
            ));
      return $query;
    }
}
add_filter( 'pre_get_posts', 'add_custom_types_archive' );
VN:F [1.9.22_1171]
Rating: 0.0/5 (0 votes cast)

Об авторе ADv

Занимаюсь разработкой сайтов и магазинов на WordPress. Оказываю платные помощь и консультации. Skype: advokat_b
Scroll To Top