用于计算定制岗位类型岗位数量的返工功能

时间:2014-10-10 作者:worldwildwebdev

我正在尝试重建我的内联帖子计数到一个函数。最好的方法是什么?以下是我的内联代码:

$posts = get_posts(\'post_type=myposttype&customtaxonomy=mytax&posts_per_page=-1\');    
$posts_count = count($posts);
echo $posts_count;
在我的functions.php 我试过这个:

function get_my_posts_count($mytaxonomy) {
    $mytaxonomy = get_posts(\'post_type=myposttype&$customtaxonomy=$mytaxonomy&posts_per_page=-1\');
    $mytaxonomy_posts_count = count($mytaxonomy);
    echo $mytaxonomy_posts_count;
}
之后,在我的模板文件中,我像这样调用函数

<?php get_my_posts_count(\'taxonomyname\');?>

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

您的代码有几个问题

  • customtaxonomy=$mytaxonomy 不正确。首先,没有调用任何参数customtaxonomy 在里面get_posts. 其次,你的语法错误。如果您使用varaible,您的语法应该如下所示

    \'post_type=myposttype&customtaxonomy=\' . $mytaxonomy . \'&posts_per_page=-1\'
    
    你应该使用适当的tax_query 获取您的帖子。你还应该利用get_terms 获取所选分类法的所有术语

    您的代码应该是这样的:(我还将post类型设置为变量)

    function my_posts_count($taxonomy, $post_type) {
        $terms = get_terms( $taxonomy, \'fields=ids\' );
    
        $args = [
            \'post_type\' => $post_type,
            \'nopaging\' => true,
            \'tax_query\' => [
                [
                    \'taxonomy\' => $taxonomy,
                    \'field\' => \'term_id\',
                    \'terms\' => $terms
                ]
            ],
        ];
    
        $mytaxonomy = get_posts( $args );
        $mytaxonomy_posts_count = count($mytaxonomy);
    
        echo $mytaxonomy_posts_count;
    }
    
    请注意,我使用的语法在PHP 5.4之前不起作用

    然后可以使用以下代码

    my_posts_count(\'category\', \'post\');
    

    EDIT

    对@birgire评论的反思

    我觉得我们应该return 自从我们使用get_ 前缀,即使WordPress打破了它自己关于这个半命名约定的规则

    我已删除get_ 函数名的前缀。在Wordpress中,具有get_ prefix返回其输出,而不带get_ 前缀echo 其输出

    使用时使用函数的正确方法get_ 前缀如下

    function get_my_posts_count($taxonomy, $post_type) {
        $terms = get_terms( $taxonomy, \'fields=ids\' );
    
        $args = [
            \'post_type\' => $post_type,
            \'nopaging\' => true,
            \'tax_query\' => [
                [
                    \'taxonomy\' => $taxonomy,
                    \'field\' => \'term_id\',
                    \'terms\' => $terms
                ]
            ],
        ];
    
        $mytaxonomy = get_posts( $args );
        $mytaxonomy_posts_count = count($mytaxonomy);
    
        return $mytaxonomy_posts_count;
    }
    
    在你的模板中这样称呼它

    echo get_my_posts_count(\'category\', \'post\');
    

SO网友:shanebp

在函数中,您有以下行:

$mytaxonomy = get_posts(\'post_type=myposttype&$customtaxonomy=$mytaxonomy&posts_per_page=-1\');
尝试将其更改为:

$mytaxonomy = get_posts(\'post_type=myposttype&customtaxonomy=$mytaxonomy&posts_per_page=-1\');
$customtaxonomy 是一个变量。customtaxonomy 是一个参数。

结束

相关推荐

Backup blog posts only

我有一个Wordpress网站,有很多页面和博客帖子。我想创建一个新网站,但保留所有博客帖子,只有博客帖子,没有页面。我怎样才能做到这一点?当我从mysql备份数据库时,所有内容都会传递到新站点,但我只想备份博客帖子。WordPress Backups