我不知道为什么分类会显示在帖子下面

时间:2018-08-24 作者:Raashid Din

我创建了一个显示类别列表的函数。当我在条目标题上方调用它时,它也会显示在内容下方,即使我没有在那里调用它。

此外,类别会重复,例如我们的新闻类别会显示三次。

我的代码看起来像。

 if (!function_exists(\'category_renown\')) :
    function category_renown() {
        $categories = get_the_category_list( esc_html__( \' \', \'openblogger\' ));
        if ( $categories ) {
                printf( \'<span class="catu-links">\' . esc_html__( \'%1$s\', \'openblogger\' ) . \'</span>\', $categories ); // WPCS: XSS OK.
            }
    }
endif;
我指出,相关岗位正在尽一切努力,但仍然没有找到解决方案。

<?php

// Adds custom image size for images in Related Posts section.
add_image_size( \'related\', 400, 222, true );

// add_action( \'after_entry_footer\', \'wg_related_posts\', 12 );
function wg_related_posts() {
    global $do_not_duplicate;

    // If we are not on a single post page, abort.
    if ( ! is_singular( \'post\' ) ) {
        return;
    }

    global $count;
    $count = 0;

    $related = \'\';

    $do_not_duplicate = array();

    // Get the tags for the current post.
    $tags = get_the_terms( get_the_ID(), \'post_tag\' );

    // Get the categories for the current post.
    $cats = get_the_terms( get_the_ID(), \'category\' );

    // If we have some tags, run the tag query.
    if ( $tags ) {
        $query    = wg_related_tax_query( $tags, $count, \'tag\' );
        $related .= $query[\'related\'];
        $count    = $query[\'count\'];
    }

    // If we have some categories and less than 3 posts, run the cat query.
    if ( $cats && $count <= 2 ) {
        $query    = wg_related_tax_query( $cats, $count, \'category\' );
        $related .= $query[\'related\'];
        $count    = $query[\'count\'];
    }

    // End here if we don\'t have any related posts.
    if ( ! $related ) {
        return;
    }


    // Display the related posts section.
    echo \'<div class="related">\';
     if (get_theme_mod(\'related_posts-title\') != ""){
     echo \'<h3 class="related-title">\'.get_theme_mod(\'related_posts-title\').\'</h3>\';
 } else {
 echo \'<h3 class="related-title">Related Posts</h3>\';
 }
        echo \'<div class="related-posts">\' . $related . \'</div>\';
    echo \'</div>\';
}

/**
 * The taxonomy query.
 *
 * @since  1.0.0
 * 
 * @param  array  $terms Array of the taxonomy\'s objects.
 * @param  int    $count The number of posts.
 * @param  string $type  The type of taxonomy, e.g: `tag` or `category`.
 *
 * @return string
 */
function wg_related_tax_query( $terms, $count, $type ) {
    global $do_not_duplicate;

    // If the current post does not have any terms of the specified taxonomy, abort.
    if ( ! $terms ) {
        return;
    }

    // Array variable to store the IDs of the posts.
    // Stores the current post ID to begin with.
    $post_ids = array_merge( array( get_the_ID() ), $do_not_duplicate );

    $term_ids = array();

    // Array variable to store the IDs of the specified taxonomy terms.
    foreach ( $terms as $term ) {
        $term_ids[] = $term->term_id;
    }

    $tax_query = array(
        array(
            \'taxonomy\'  => \'post_format\',
            \'field\'     => \'slug\',
            \'terms\'     => array(
                \'post-format-link\',
                \'post-format-status\',
                \'post-format-aside\',
                \'post-format-quote\',
            ),
            \'operator\' => \'NOT IN\',
        ),
    );

 if (get_theme_mod(\'related-number\') != ""){
    echo $showposts = get_theme_mod(\'related-number\', 3 - $count);
} else {
     $showposts = 3 - $count;
 }
    //$showposts = 3 - $count;

    $args = array(
        $type . \'__in\'        => $term_ids,
        \'post__not_in\'        => $post_ids,
        \'showposts\'           => $showposts,
        \'ignore_sticky_posts\' => 1,
        \'tax_query\'           => $tax_query,
    );

    $related  = \'\';

    $tax_query = new WP_Query($args);

    if ( $tax_query->have_posts() ) {
        while ( $tax_query->have_posts() ) {
            $tax_query->the_post();

            $do_not_duplicate[] = get_the_ID();

            $count++;

            $title = get_the_title();

            $related .= \'<div class="related-post">\';

            $related .= \'<a href="\' . get_permalink() . \'" rel="bookmark" title="Permanent Link to \' . $title . \'">\'.get_the_post_thumbnail() . \'</a>\';

            $related .= \'<div class="related-post-info"><a class="related-post-title" href="\' . get_permalink() . \'" rel="bookmark" title="Permanent Link to \' . $title . \'">\' . $title . \'</a>\';

            $related .= \'<div class="related-post-date">\' . get_the_date() . \'</div>\';

            $related .= \'<div class="related-post-tags">\' . related_tags() . \'</div>\';

            $related .= \'<div class="related-post-categories">\'. related_categories() . \'</div></div>\';

            $related .= \'</div>\';
        }
    }
    $sep = \',\';

    wp_reset_postdata();

    $output = array(
        \'related\' => $related,
        \'count\'   => $count,
    );

    return $output;
}
这是实时预览图像enter image description here

1 个回复
SO网友:maverick

我假设您正在使用Underocres starter主题来构建主题,您可能是从模板标记复制了代码。主题中的php inside inc文件夹。现在执行以下操作:

将此代码保存在模板标记中。php

function category_renown() {
    $categories = get_the_category_list( esc_html__( \' \', \'openblogger\' ));
    if ( $categories ) {
            printf( \'<span class="catu-links">\' . esc_html__( \'%1$s\', \'openblogger\' ) . \'</span>\', $categories ); // WPCS: XSS OK.
        }
}
在内容中复制函数。php文件,如:

这是内容对内容的内容。php文件

<?php
/**
 * Template part for displaying posts
 *
 * @link https://developer.wordpress.org/themes/basics/template-hierarchy/
 *
 * @package xyz
 */

?>

<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
    <header class="entry-header">
        <?php category_renown(); ?>
        <?php
        if ( is_singular() ) :
            the_title( \'<h1 class="entry-title">\', \'</h1>\' );
        else :
            the_title( \'<h2 class="entry-title"><a href="\' . esc_url( get_permalink() ) . \'" rel="bookmark">\', \'</a></h2>\' );
        endif;

        if ( \'post\' === get_post_type() ) :
            ?>
            <div class="entry-meta">
                <?php
                xyz_posted_on();
                xyz_posted_by();
                ?>
            </div><!-- .entry-meta -->
        <?php endif; ?>
    </header><!-- .entry-header -->

    <?php xyz_post_thumbnail(); ?>

    <div class="entry-content">
        <?php
        the_content( sprintf(
            wp_kses(
                /* translators: %s: Name of current post. Only visible to screen readers */
                __( \'Continue reading<span class="screen-reader-text"> "%s"</span>\', \'xyz\' ),
                array(
                    \'span\' => array(
                        \'class\' => array(),
                    ),
                )
            ),
            get_the_title()
        ) );

        wp_link_pages( array(
            \'before\' => \'<div class="page-links">\' . esc_html__( \'Pages:\', \'xyz\' ),
            \'after\'  => \'</div>\',
        ) );
        ?>
    </div><!-- .entry-content -->

    <footer class="entry-footer">
        <?php xyz_entry_footer(); ?>
    </footer><!-- .entry-footer -->
</article><!-- #post-<?php the_ID(); ?> -->
现在需要删除模板标记中的以下代码。函数xyz\\u entry\\u footer()中的php文件:

$categories = get_the_category_list( esc_html__( \' \', \'openblogger\' ));
if ( $categories ) {
        printf( \'<span class="catu-links">\' . esc_html__( \'%1$s\', \'openblogger\' ) . \'</span>\', $categories ); // WPCS: XSS OK.
    }
模板标签的最终版本。php应为:

<?php
/**
 * Custom template tags for this theme
 *
 * Eventually, some of the functionality here could be replaced by core features.
 *
 * @package xyz
 */

if ( ! function_exists( \'xyz_posted_on\' ) ) :
    /**
     * Prints HTML with meta information for the current post-date/time.
     */
    function xyz_posted_on() {
        $time_string = \'<time class="entry-date published updated" datetime="%1$s">%2$s</time>\';
        if ( get_the_time( \'U\' ) !== get_the_modified_time( \'U\' ) ) {
            $time_string = \'<time class="entry-date published" datetime="%1$s">%2$s</time><time class="updated" datetime="%3$s">%4$s</time>\';
        }

        $time_string = sprintf( $time_string,
            esc_attr( get_the_date( DATE_W3C ) ),
            esc_html( get_the_date() ),
            esc_attr( get_the_modified_date( DATE_W3C ) ),
            esc_html( get_the_modified_date() )
        );

        $posted_on = sprintf(
            /* translators: %s: post date. */
            esc_html_x( \'Posted on %s\', \'post date\', \'xyz\' ),
            \'<a href="\' . esc_url( get_permalink() ) . \'" rel="bookmark">\' . $time_string . \'</a>\'
        );

        echo \'<span class="posted-on">\' . $posted_on . \'</span>\'; // WPCS: XSS OK.

    }
endif;

if ( ! function_exists( \'xyz_posted_by\' ) ) :
    /**
     * Prints HTML with meta information for the current author.
     */
    function xyz_posted_by() {
        $byline = sprintf(
            /* translators: %s: post author. */
            esc_html_x( \'by %s\', \'post author\', \'xyz\' ),
            \'<span class="author vcard"><a class="url fn n" href="\' . esc_url( get_author_posts_url( get_the_author_meta( \'ID\' ) ) ) . \'">\' . esc_html( get_the_author() ) . \'</a></span>\'
        );

        echo \'<span class="byline"> \' . $byline . \'</span>\'; // WPCS: XSS OK.

    }
endif;

if ( ! function_exists( \'xyz_entry_footer\' ) ) :
    /**
     * Prints HTML with meta information for the categories, tags and comments.
     */
    function xyz_entry_footer() {
        // Hide tag text for pages.
        if ( \'post\' === get_post_type() ) {

            /* translators: used between list items, there is a space after the comma */
            $tags_list = get_the_tag_list( \'\', esc_html_x( \', \', \'list item separator\', \'xyz\' ) );
            if ( $tags_list ) {
                /* translators: 1: list of tags. */
                printf( \'<span class="tags-links">\' . esc_html__( \'Tagged %1$s\', \'xyz\' ) . \'</span>\', $tags_list ); // WPCS: XSS OK.
            }
        }

        if ( ! is_single() && ! post_password_required() && ( comments_open() || get_comments_number() ) ) {
            echo \'<span class="comments-link">\';
            comments_popup_link(
                sprintf(
                    wp_kses(
                        /* translators: %s: post title */
                        __( \'Leave a Comment<span class="screen-reader-text"> on %s</span>\', \'xyz\' ),
                        array(
                            \'span\' => array(
                                \'class\' => array(),
                            ),
                        )
                    ),
                    get_the_title()
                )
            );
            echo \'</span>\';
        }

        edit_post_link(
            sprintf(
                wp_kses(
                    /* translators: %s: Name of current post. Only visible to screen readers */
                    __( \'Edit <span class="screen-reader-text">%s</span>\', \'xyz\' ),
                    array(
                        \'span\' => array(
                            \'class\' => array(),
                        ),
                    )
                ),
                get_the_title()
            ),
            \'<span class="edit-link">\',
            \'</span>\'
        );
    }
endif;

function category_renown() {
    $categories = get_the_category_list( esc_html__( \' \', \'openblogger\' ));
    if ( $categories ) {
            printf( \'<span class="catu-links">\' . esc_html__( \'%1$s\', \'openblogger\' ) . \'</span>\', $categories ); // WPCS: XSS OK.
        }
}
if ( ! function_exists( \'xyz_post_thumbnail\' ) ) :
    /**
     * Displays an optional post thumbnail.
     *
     * Wraps the post thumbnail in an anchor element on index views, or a div
     * element when on single views.
     */
    function xyz_post_thumbnail() {
        if ( post_password_required() || is_attachment() || ! has_post_thumbnail() ) {
            return;
        }

        if ( is_singular() ) :
            ?>

            <div class="post-thumbnail">
                <?php the_post_thumbnail(); ?>
            </div><!-- .post-thumbnail -->

        <?php else : ?>

        <a class="post-thumbnail" href="<?php the_permalink(); ?>" aria-hidden="true" tabindex="-1">
            <?php
            the_post_thumbnail( \'post-thumbnail\', array(
                \'alt\' => the_title_attribute( array(
                    \'echo\' => false,
                ) ),
            ) );
            ?>
        </a>

        <?php
        endif; // End is_singular().
    }
endif;
我只是假设您正在使用下划线起始主题构建主题。如果没有,请添加更多代码(在调用该函数的地方)

另一件事是,您可能对初学者主题做了更多更改,所以在复制和粘贴此代码之前要小心。

结束

相关推荐