我已经编写了这段代码来显示一个带有网页浏览量的框,这个框位于每个标题右侧的箭头按钮内,但问题是,计数器不计算网页上的网页浏览量而且我没有#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>
这里也是网页浏览代码:
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);
}
}
答案 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代码
住在您的网站上:
答案 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">→</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">→</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 } ?>
经过许多小时的挖掘代码和尝试的东西,我完全忘记了这部分代码。感谢所有人帮助我