WordPress在自定义帖子类型中列出类似类型的帖子

时间:2021-01-10 作者:Dev

我创建了一个自定义的帖子类型,比如说actor,并创建了一个actor“;汤姆·克鲁斯;URL类似于自定义帖子类型中的/actors/tomcruise。

我已经创建了3个帖子(类型为WordPress默认帖子)slug类似于/tom-cruise-mission-Impossible 1、/tom-cruise-mission-Impossible 2、/tom-cruise-mission-Impossible 3。每个弹头都以汤姆·克鲁斯的模式开始。

现在,我想在自定义帖子类型(演员帖子)/演员/汤姆·克鲁斯(TomCruise)中显示所有3篇帖子(本例中为类似帖子3篇不可能完成任务的帖子)

我试图找到类似的帖子,但从WordPress文档中找不到slug中使用的类似类型的模式。感谢您的帮助。请记住,我不想创建任何其他类别,或者如果没有类似的模式slug查询,是否有其他方法可以创建其他类别。

$args = array(
    \'post_type\'     => \'actors\',
    \'post_status\' => \'publish\',
);

$loop = new WP_Query( $args ); 

1 个回复
SO网友:Sally CJ

WP_Query 没有一个内置的参数,用于根据帖子slug的一部分查询帖子,通常情况下,人们会根据帖子标签或类别搜索类似的帖子;但是,您可以将自定义参数与posts_where hook 按slug的一部分查询类似的帖子。

一、 e.使用自定义SQL查询,然后使用挂钩将该查询添加到WP_Query.

例如,在主题中functions.php 文件,添加以下内容:

add_filter( \'posts_where\', \'my_posts_where\', 10, 2 );
function my_posts_where( $where, $query ) {
    if ( $value = $query->get( \'slug_starts_with\' ) ) {
        global $wpdb;

        $where .= $wpdb->prepare(
            " AND {$wpdb->posts}.post_name LIKE %s",
            $wpdb->esc_like( $value ) . \'%\'
        );
    }

    return $where;
}
然后在你的$args, 添加自定义查询参数(名为slug_starts_with 在上述示例中):

$args = array(
    \'post_type\'        => \'post\',
    \'post_status\'      => \'publish\',
    \'slug_starts_with\' => get_queried_object()->post_name,
);

相关推荐

get_posts() SQL Injection

我正在使用自定义搜索页面,通常使用wpdb->;制作自定义查询时准备。但这次我使用get\\u posts创建了下面的查询。但我想知道我是否必须担心它的SQL注入。我应该吗?或者get\\u posts()是否内置了这种安全机制?如果没有,如何清理传入变量?$SEARCH_QUERY = @$_GET[\'s2\']; $args2 = array( \'orderby\' => \'date\', \'order\'