为什么str_替换目标页面而只是目标帖子?

时间:2019-03-18 作者:Esmond

我试图只替换帖子页面上的一个单词。我遇到的问题是,WordPress页面内容最终为空,即使此代码只应在post页面上运行。

<?php
/**
* Plugin Name: Wordpress plugin test esmond
* Plugin URI: https://esmondmccain.com
* Description: test plugin.
* Version: 1.0
* Author: Esmond Mccain
* Author URI: https://esmondmccain.com
*/
defined(\'ABSPATH\') or die();

function esmond_enqueue_scripts_styles() {
     if(is_page()){
        //Styles
        wp_enqueue_style( \'bootstrap-css\', \'https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css\');

       //Scripts
       wp_enqueue_script( \'bootstrap-js\', \'https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js\', array(\'jquery\'), true);
     }

}
add_action(\'wp_enqueue_scripts\',\'esmond_enqueue_scripts_styles\');

add_filter(\'the_content\', \'replace_word\');
function replace_word($text) {
        if (is_singular( \'post\' )){
        $text = str_replace(\'dog\', \'cat\', $text);

        return $text;
        }
}

2 个回复
最合适的回答,由SO网友:Qaisar Feroz 整理而成

您的代码正在返回$text 仅适用于帖子,不适用于其他帖子类型,如页面。

你的函数应该是这样的

add_filter(\'the_content\', \'replace_word\');
function replace_word($text) {
        if (is_singular( \'post\' )){
        $text = str_replace(\'dog\', \'cat\', $text);

        return $text;
        }

        // you must return content for pages/ other post types
        return $text;

}

SO网友:MikeNGarrett

你不会回来的$text 对于任何其他内容。无论字符串是否更改,筛选器都必须始终返回该字符串。

add_filter(\'the_content\', \'replace_word\');
function replace_word($text) {
        if (is_singular( \'post\' )){
        $text = str_replace(\'dog\', \'cat\', $text);

        return $text;
        }
    return $text;
}

相关推荐

我想通过用图像替换prev和Next来定制_POSTS_NAVICATION函数

快走我目前正在尝试自定义Wordpress的“the\\u posts\\u navigation”功能,因为我希望只显示“previous”和“next”(我想用SVG中的箭头图标替换它),您是否有曲目可以帮助我?下面是一段代码:the_posts_navigation( array( \'mid_size\' => 1, \'prev_text\' => __( \'<<\', \'