在wordpress上的每个帖子/页面中显示代码

时间:2014-06-03 17:04:57

标签: php wordpress

我已经编写了这段代码来显示一个带有网页浏览量的框,这个框位于每个标题右侧的箭头按钮内,但问题是,计数器不计算网页上的网页浏览量而且我没有#39不知道为什么。 我在index.php中添加了这段代码

我尝试将我的代码放在<?php is_singular( $post_types ); ?>内部,如下所示:

<?php is_singular(
    <div class="square">
    <div class="pageviews-icon"></div>
    <div class="pageviews"><?php echo getPostViews(get_the_ID()); ?></div>
</div>
); ?>

但是没有用,该网站崩溃了。有人可以帮我吗?

这里也是上面的代码,也许它可能有所帮助,我可以将所有内容包装在一起

<div class="frame">
                        <!-- uses the post format -->
                        <?php {
                            if(!get_post_format()) {
                               get_template_part('format', 'standard');
                            } else {
                               get_template_part('format', get_post_format());
                            };
                        ?>
                            <div class="square">
                                <div class="pageviews-icon"></div><div class="pageviews"><?php echo getPostViews(get_the_ID()); ?></div>
                            </div>
                    </div>

网站:The link for the website

这里也是网页浏览代码:

    function getPostViews($postID){
    $count_key = 'post_views_count';
    $count = get_post_meta($postID, $count_key, true);
    if($count==''){
        delete_post_meta($postID, $count_key);
        add_post_meta($postID, $count_key, '0');
        return "0 Unique Views";
    }
    return $count.' Unique Views';
}
function setPostViews($postID) {
    $count_key = 'post_views_count';
    $count = get_post_meta($postID, $count_key, true);
    if($count==''){
        $count = 0;
        delete_post_meta($postID, $count_key);
        add_post_meta($postID, $count_key, '0');
    }else{
        $count++;
        update_post_meta($postID, $count_key, $count);
    }
}

4 个答案:

答案 0 :(得分:1)

正如the documentation所说:

  

此条件标记检查是否正在显示单个帖子,这是下列之一返回true时的情况:is_single(),is_page()或is_attachment()。如果指定了$ post_types参数,则该函数将另外检查查询是否针对指定的一种帖子类型。

你应该这样做:

<?php if is_singular() { ?>
    <div class="square">
        <div class="pageviews-icon"></div>
        <div class="pageviews"><?php echo getPostViews(get_the_ID()); ?></div>
    </div>
<?php }; ?>

修改
你必须对你的CSS进行一些更改:

div.frame{position:relative;}
div.square{display:block;}

您的查看计数器正常运行。也看到它的实时,请更正我上面提到的PHP代码

住在您的网站上:
enter image description here

答案 1 :(得分:1)

你不能把PHP放在PHP中。您可以将STRINGS放在PHP中,但需要将它们放在引号中。

if(is_single() || is_page() || is_attachment()) {
    ?>
    <div class="square">
        <div class="pageviews-icon"></div>
        <div class="pageviews"><?php echo getPostViews(get_the_ID()); ?></div>
    </div>
    <?php
}

答案 2 :(得分:1)

您希望在循环浏览所有帖子的文件中执行此操作。根据您的主题等,这可能位于不同的位置。

对于二十四个主题,这是在index.php中,看起来像这样

PHP

<div id="primary" class="content-area">
        <div id="content" class="site-content" role="main">

        <?php
            if ( have_posts() ) :
                // Start the Loop.
                while ( have_posts() ) : the_post();

                    /*
                     * Include the post format-specific template for the content. If you want to
                     * use this in a child theme, then include a file called called content-___.php
                     * (where ___ is the post format) and that will be used instead.
                     */
                    get_template_part( 'content', get_post_format() );
..... code carries on

此处的最后一行:get_template_part告诉我们,如果我们去打开content它会引入一个名为content.php的模板,我们可以看到它实际输出了特定于每页/帖子。这是您需要做逻辑的地方。 例如,在二十四content.php

中代替这一点

PHP:

<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
    <?php twentyfourteen_post_thumbnail(); ?>

    <header class="entry-header">
        <?php if ( in_array( 'category', get_object_taxonomies( get_post_type() ) ) && twentyfourteen_categorized_blog() ) : ?>
        <div class="entry-meta">
            <span class="cat-links"><?php echo get_the_category_list( _x( ', ', 'Used between list items, there is a space after the comma.', 'twentyfourteen' ) ); ?></span>
        </div>
        <?php
            endif;

            if ( is_single() ) :
                the_title( '<h1 class="entry-title">', '</h1>' );
            else :
                the_title( '<h1 class="entry-title"><a href="' . esc_url( get_permalink() ) . '" rel="bookmark">', '</a></h1>' );
            endif;
        ?>

        <div class="entry-meta">
            <?php
                if ( 'post' == get_post_type() )
                    twentyfourteen_posted_on();

                if ( ! post_password_required() && ( comments_open() || get_comments_number() ) ) :
            ?>
            <span class="comments-link"><?php comments_popup_link( __( 'Leave a comment', 'twentyfourteen' ), __( '1 Comment', 'twentyfourteen' ), __( '% Comments', 'twentyfourteen' ) ); ?></span>
            <?php
                endif;

                edit_post_link( __( 'Edit', 'twentyfourteen' ), '<span class="edit-link">', '</span>' );
            ?>
        </div><!-- .entry-meta -->
    </header><!-- .entry-header -->

你会做这样的事情

PHP:

<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<?php twentyfourteen_post_thumbnail(); ?>

<header class="entry-header">
    <?php if ( in_array( 'category', get_object_taxonomies( get_post_type() ) ) && twentyfourteen_categorized_blog() ) : ?>
    <div class="entry-meta">
        <span class="cat-links"><?php echo get_the_category_list( _x( ', ', 'Used between list items, there is a space after the comma.', 'twentyfourteen' ) ); ?></span>
    </div>
    <?php
        endif;

        if ( is_single() ) :
            the_title( '<h1 class="entry-title">', '</h1>' );
        else :
            the_title( '<h1 class="entry-title"><a href="' . esc_url( get_permalink() ) . '" rel="bookmark">', '</a></h1>' );
        endif;
    ?>
        <div class="square">
        <div class="pageviews-icon"></div>
        <div class="pageviews"><?php echo getPostViews(the_ID()); ?></div>

    <div class="entry-meta">
        <?php
            if ( 'post' == get_post_type() )
                twentyfourteen_posted_on();

            if ( ! post_password_required() && ( comments_open() || get_comments_number() ) ) :
        ?>
        <span class="comments-link"><?php comments_popup_link( __( 'Leave a comment', 'twentyfourteen' ), __( '1 Comment', 'twentyfourteen' ), __( '% Comments', 'twentyfourteen' ) ); ?></span>
        <?php
            endif;

            edit_post_link( __( 'Edit', 'twentyfourteen' ), '<span class="edit-link">', '</span>' );
        ?>
    </div><!-- .entry-meta -->
</header><!-- .entry-header -->

然后确保getPostViews文件中可以访问functions.php

这将确保您的postViews正在显示。但是如何把它们算在第一位呢?!

返回content.php并查看代码的这一部分

PHP:

<?php if ( is_search() ) : ?>
    <div class="entry-summary">
        <?php the_excerpt(); ?>
    </div><!-- .entry-summary -->
    <?php else : ?>
    <div class="entry-content">
        <?php
            the_content( __( 'Continue reading <span class="meta-nav">&rarr;</span>', 'twentyfourteen' ) );
            wp_link_pages( array(
                'before'      => '<div class="page-links"><span class="page-links-title">' . __( 'Pages:', 'twentyfourteen' ) . '</span>',
                'after'       => '</div>',
                'link_before' => '<span>',
                'link_after'  => '</span>',
            ) );
        ?>
    </div><!-- .entry-content -->
    <?php endif; ?>

is_search()功能说明是否显示搜索,家庭,类别和标签页的摘录。但是,我们不希望每次帖子显示在搜索或家中等时设置网页浏览,因此我们只能将setPostViews调用放在if的其他部分,即帖子时/页面正在单独查看。

那会给你这样的代码

PHP:

<?php if ( is_search() ) : ?>
    <div class="entry-summary">
        <?php the_excerpt(); ?>
    </div><!-- .entry-summary -->
    <?php else : ?>
    <!-- Now we can add a pageview -->
    <?php setPostViews(the_ID()); ?>
    <div class="entry-content">
        <?php
            the_content( __( 'Continue reading <span class="meta-nav">&rarr;</span>', 'twentyfourteen' ) );
            wp_link_pages( array(
                'before'      => '<div class="page-links"><span class="page-links-title">' . __( 'Pages:', 'twentyfourteen' ) . '</span>',
                'after'       => '</div>',
                'link_before' => '<span>',
                'link_after'  => '</span>',
            ) );
        ?>
    </div><!-- .entry-content -->
    <?php endif; ?>

再次确保setPostViews文件中可以访问functions.php

这可以让你得到你想要的东西。

答案 3 :(得分:1)

我已经弄清楚,由于@RobSchmuecker代码搞乱了,我在错误的地方寻找错误,直到他告诉我其他页面然后我查看了所有这些代码以查看他的陈述,我发现代码搞砸了,这是在代码页的最底层,我在其中设置了php视图代码是:

<?php if(is_single ()) { ?>
    <?php setPostViews(get_the_ID()); ?>
<?php } ?>

代替:

<?php if(is_singular ()) { ?>
    <?php setPostViews(get_the_ID()); ?>
<?php } ?>

经过许多小时的挖掘代码和尝试的东西,我完全忘记了这部分代码。感谢所有人帮助我