WordPress/PHP:将一篇文章拆分成不同的页面,或者不拆分,这取决于来源



对于那些可能不知道的人,在WP中,我们可以通过在我们希望出现分页符的地方添加<--nextpage-->来拆分帖子。这将创建一个分页,其中每个部分都有自己的页面。

我想做的是,根据URL中的utm_source(例如:?utm_source=fb(,我希望显示分页格式,否则将显示一页格式。

简单地说,如果源是FB,我帖子中的<--nextpage-->就会被执行,或者如果源不是FB,<--nextpage-->就不会执行。

如果我只知道如何在后台与帖子内容交互,而不知道用户可以看到的最终结果,我就可以使用JS/JQuery做一些事情。如果必须使用PHP来完成,我已经准备好学习如何让它发挥作用。出于这些原因,我没有代码可以展示,但不幸的是,我花了很多时间寻找一个没有成功的解决方案。

WP确定&在很早的时候就对内容进行了拆分。如果源不是FB,我最终通过在循环中添加一个操作来剥离下一页的注释,从而使其发挥作用。\

仔细想想你是想限制这个动作在任何其他情况下开火,还是限制只在某些岗位上开火。目前,它将尝试剥离每个帖子上的下一页。

function strip_next_tags_action () { 
global $post;
// put any other if conditions here
if ( !isset( $_GET['utm_source'] )  or !($_GET['utm_source'] == 'fb')) {
$post->post_content = str_replace("<!--nextpage-->", "",                
$post->post_content, $count);
}
return $post;
}
add_action ('loop_start', 'strip_next_tags_action');

最好在后端完成。您需要修改single.phppost模板,并使用PHP代码来显示(或不显示(基于查询变量的部分。

过于简化的示例:

<?php
get_header();
if( !isset( $_GET['utm_source'] ) ) $_GET['utm_source'] = '';
switch( $_GET['utm_source'] ){
case 'fb':
// do the Facebook stuff here
the_excerpt();
break;
case 'something-else':
// do the other stuff here
the_excerpt();
break;
default:
// if no matching utm_source variable, do this instead
the_content();
}
get_footer();

相关内容

最新更新