如果帖子具有特定类别,则更改帖子标题

时间:2016-03-07 作者:Simon

基本上,我正在努力实现的是改变第30类帖子的标题。

我的代码是:

function adddd($title) {

if(has_category(\'30\',$post->ID)){
$title = \'Prefix \'.$title;
}

return $title;
}
add_action(\'the_title\',\'adddd\');
代码可以工作,但有一个问题。当我在具有该类别的帖子中时,所有其他页面的标题也在更改(通过\\u标题调用)。

无论我在哪一页上,我如何才能将标题更改为只发布具有该类别的标题?

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

$post 在筛选器中未定义。您需要明确地调用$post 在您的筛选器函数中全局设置,以使其可用。您必须记住,函数外部的变量(甚至全局变量)在函数内部是不可用的,这就是PHP的工作方式。

您实际上不需要使用$post 全局,post ID作为第二个参数通过引用传递给the_title 滤器

您可以使用以下选项:

add_action( \'the_title\', \'adddd\', 10, 2 );
function adddd( $title, $post_id ) 
{
    if( has_category( 30, $post_id ) ) {
        $title = \'Prefix \' . $title;
    }

    return $title;
}
如果您只需要以主查询/循环中的帖子标题为目标,您可以在额外的in_the_loop() 条件

SO网友:nicogaldo

为什么不使用javascript/jquery?

如果您使用<?php post_class(); ?> 您可以为每个类别找到不同的类。

    $(\'.post.category-one\').find(\'h2.item-title\').prepend(\'Prefix \');
使用.find() 至选择器标题

用php编辑

function adddd($title) {
    global $post;

    if(has_category(\'30\',$post->ID)) {
        $title = \'Prefix \'.$post->post_title;
    }

    return $title;
}
add_action(\'the_title\',\'adddd\');

相关推荐

在WP搜索表单中是否有类似`wp_Dropdown_Categories()`的输入复选框选项?

我有自定义的帖子类型,当前正在使用wp_dropdown_categories() 在WP搜索表单中的功能,以便人们能够按薪资级别和工作类型进行筛选。是否有一个等效函数,以便用户可以使用输入复选框元素而不是<select> 元素,以便他们在进行搜索时可以选择多个工作类型或薪资水平?我似乎在开发者文档中找不到任何东西。我正在寻找的是允许复选框替换使用下面代码中的select选项的下拉元素的东西。<form method="get" action="<?p