WordPress / PHP:将帖子分为不同的页面或不取决于来源

时间:2018-12-15 03:40:29

标签: php wordpress

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

我想做的是,取决于URL中的utm_source(例如:?utm_source = fb),我想显示分页格式,否则将显示一页格式。

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

如果我只知道如何与后端中的帖子内容进行交互,而不是用户可以看到的最终结果,则可以使用JS / JQuery进行操作。如果必须使用PHP来完成,那么我准备学习使其工作。由于这些原因,我没有可显示的代码,但是不幸的是,我花了很多时间寻找没有成功的解决方案。

2 个答案:

答案 0 :(得分:1)

最好在后端完成。您需要修改single.php帖子模板,并使用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();

答案 1 :(得分:1)

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');