在unctions.php文件中获取每个帖子的帖子术语‘wp_get_POST_Terms’

时间:2019-03-19 作者:Jason Is My Name

我使用了一个带有Ajax操作的表单来在提交时获取帖子信息。

它很有魅力。然而,我使用了类别来将工作划分为不同的类别。其中之一就是品牌。

在页面模板中,我使用的脚本有效,但在函数中使用时有效。php文件。它无法获得所需的结果。

我认为这可能与何时触发对帖子的查询或如何设置add\\u操作有关。

有人能帮我查一下ID为31的类别的名称吗?在函数中使用时。php。

以下是我写的:

if( $query->have_posts() ) :
    while( $query->have_posts() ): $query->the_post();

        echo "<div class=\\"portfolio-piece\\" style=\\"background-image: url(" . get_the_post_thumbnail_url() . ");\\">";

            echo "<a href=\\"" . get_the_permalink() . "\\" class=\\"box-link\\"></a>";

            echo "<div class=\\"portfolio-piece-hover\\">";

            echo "</div>";

            echo "<div class=\\"portfolio-piece-inner\\">";

                echo "<h5 class=\\"portfolio-tags\\">" . the_tags(\'\', \' / \', \'\') . "</h5>";
                echo "<h4 class=\\"portfolio-title\\">";
                echo the_title();
                echo "</h4>";

                echo "<h4 class=\\"portfolio-company\\">";

                    $brands = wp_get_post_terms( $post->ID, \'category\', array(
                        \'orderby\' => \'name\',
                        \'order\' => \'DESC\',
                        \'parent\' => 31
                    ) );
                    foreach ( $brands as $brand ) {
                        echo $brand->name;
                    };

                echo "</h4>";

            echo "</div>";

        echo "</div>";

    endwhile;
    wp_reset_postdata();
实际上,除了投资组合公司/$brands=wp\\u get\\u post\\u terms部分外,一切都正常。

谢谢,杰森。

1 个回复
最合适的回答,由SO网友:Sally CJ 整理而成

(修改后的答案)

因此,我假设该类别中实际上有帖子(ID:31), 并基于wp_get_post_terms() reference:

$post_id
(int)(可选)Post ID。Does not default to the ID of the global $post. 默认值0。

很可能您没有将正确的post ID传递给wp_get_post_terms() 功能:

wp_get_post_terms( $post->ID, \'category\', array(...) );
在代码中$post 然而,它并没有像问题中那样在代码中的任何地方定义。

因此,如果您试图在WordPress循环中获取当前帖子的ID,其中帖子数据存储在全局$post 变量,则应首先使用global $post; 像这样:

global $post;
// here and after this line, you may now use $post->ID
if( $query->have_posts() ) :
...
endif;
或者你也可以使用get_the_ID() 无需这样做global $post;, 特别是如果您只想获得帖子ID:

wp_get_post_terms( get_the_ID(), \'category\', array(...) ); // here I don\'t use $post->ID
可能值得一提的是,在标准模板中page.php, 全球$post 变量已经是“全局ed”,因此您可以访问$post 模板中的任意位置。(好吧,不完全是“任何地方”;然而,我不打算在这个答案中更深入地探讨这个问题……)

附加说明这可能只是一个输入错误,但在问题中的代码中,出现了一个语法错误:

foreach ( $brands as $brand ) {
  echo $brand->name;
}; // <- remove that ;
你忘了关门endif;..

相关推荐

使用AJAX按钮在帖子中更新状态、元数据

因此,我尝试单击我在元框中制作的自定义按钮,以启动AJAX。除了获取帖子ID和刷新页面之外,其他所有工作都可以完成。我试过使用global $post; $post_id = $post->ID 或$post_id = $_POST[\'post_id\']; 或$post_id = get_the_ID(); , 这些都不管用。我最终想要完成的是:点击按钮后,弹出一个“你确定吗?”是/否。如果单击“是”,更改状态功能将启动并刷新状态已更改的帖子页面。我正在使用一个Ajax Get,其URL位于我的