检查当前页面是否已给出标签ID

时间:2012-07-05 作者:Iladarsda

我正在使用自定义分类法。

如何检查当前页面是否tag_ID = "XXX" ?

如果有任何帮助,则URL表单WordPress admin如下所示:

http://localhost/website/wp-admin/edit-tags.php?action=edit&taxonomy=company&ta‌g_ID=13&post_type=news 
更新。这是我目前正在使用的代码。不起作用。

<?php
function insert_news($company = 0)
{
    global $post;

    $count       = 0;
    $news_query  = new WP_Query(array(
        \'post_type\' => \'news\',
        \'posts_per_page\' => -1,
        \'orderby\' => \'date\',
        \'order\' => \'ASC\',
        \'company\' => $company
    ));
    $total_count = $news_query->post_count;
    while ($news_query->have_posts()):
        $news_query->the_post();

        $count++;

        $tag_id = get_query_var(\'tag_id\');

        if ($tag_id && $tag_id == \'14\') {
            // ID 14

        } else if ($tag_id && $tag_id == \'13\') {
            // ID 13


        } else if ($tag_id && $tag_id == \'12\') {
            // ID 12


        }
    endwhile;
}
?>

6 个回复
最合适的回答,由SO网友:bueltge 整理而成

所有标记都在查询中,可以通过get\\u query\\u var()检查这一点;查询中的所有对象。对于标签ID,请使用以下代码询问:get_query_var( \'tag_ID\' ); 也可以检查标签,如get_query_var( \'term\' ) 以及分类学get_query_var( \'taxonomy\' )

因此,您可以使用标记数据从分类法中创建一个循环;喜欢

$wpq = array ( 
    \'post_type\' => \'post\',
    \'post_status\' => \'published\',
    \'taxonomy\'=> get_query_var( \'taxonomy\' ),
    \'term\'=> get_query_var( \'term\' )
);
$query = new WP_Query( $wpq );
while ( $query->have_posts() ) : $query->the_post();
因此,您可以检查:if ( \'your_tad_id=== get\\u query\\u var(\'tag\\u ID\'))`

提示;如果您将使用支票通过$_REQUEST-var;请筛选此数据或仅用于if语句

SO网友:TheDeadMedic

if ( is_object_in_term( $post->ID, \'post_tag\', \'tag_slug_or_name_or_id_or_array\' ) ) 
   do_my_funky_stuff();
Update: 关于以下评论:

如何检查当前页面是否有tag\\u ID=“XXX”?

如果有任何帮助,则URL表单WordPress admin如下所示:

...edit-tags.php?action=edit&taxonomy=company&ta‌g_ID=13&post_type=news

我猜你的意思是“检查是否编辑ID为X的标记”?

if ( isset( $_REQUEST[\'tag_ID\'] ) && $_REQUEST[\'tag_ID\'] == X )
    do_my_funky_stuff();
你真的必须对你的心理学更清楚一点;)

SO网友:W van Dam

如果您只对3个后续的tag\\u id感兴趣,可以从缩小查询范围开始,使用$\\u POST[\'tag\\u id\']和\'tag\\u in\':

$query_tag_id = $_POST[\'tag_id\'];

$news_query  = new WP_Query(array(
    \'post_type\' => \'news\',
    \'posts_per_page\' => -1,
    \'orderby\' => \'date\',
    \'order\' => \'ASC\',
    \'company\' => $company,
    \'tag__in\' => array( $query_tag_id-1, $query_tag_id, $query_tag_id+1 )
));
您可以在if条件测试中引用$query\\u tag\\u id变量,如:

if( $tag_id == ( $query_tag_id - 1 ) ) {
    // do stuff
}
if( $tag_id == $query_tag_id ) {
    // do stuff
}
if( $tag_id == ( $query_tag_id + 1 ) ) {
    // do stuff
}
我认为,当你将其与上述内容结合起来时,死亡医学专家提出的建议会起到作用。中间if测试如下:

if ( is_object_in_term( $post->ID, \'post_tag\', $query_tag_id ) ) 
   do_my_funky_stuff();
如果失败,您可以在while循环中始终获取活动帖子的所有标记ID,并在if测试中使用这些ID。所以你必须更换

$tag_id = get_query_var(\'tag_id\');
使用:

$tags = get_the_tags();
$tag_ids = array();
if( $tags ) {
    foreach ( $tags as $tag ) {
        $tags_id[] = $tag->term_id;
    }
}    

if ( in_array( ( $query_tag_id - 1 ) , $tag_ids ) ) {
    // do stuff
}
etc.
如果您确定您的帖子只有一个标签,您可以使用以下方法简化:

$tags = get_the_tags();
$tag_id = ( $tags ) ? $tags[0]->term_id : 0;

if( $tag_id == ( $query_tag_id - 1 ) ) {
    // do stuff
}
etc.
更新:另一方面,get\\u query\\u var()不起作用,因为它查找您在查询中设置的参数。您没有在查询中设置任何tag\\u id,因此它不会返回任何内容。因此,按照我在回答开始时的建议更改查询将得到一个返回值,但不是您可以使用的返回值。

SO网友:Jonathan

$url = "http://localhost/website/wp-admin/edit-tags.php?action=edit&taxonomy=company&ta‌g_ID=13&post_type=news";
if (strpos($url, "tag_ID=13")!==false){
     //Do stuff here if it is there
}
else {
     //Do Other Stuff here if it is not there
}
看在WordPress的份上,把它放到函数中的一个函数中。php并添加一个钩子,比如init(请记住,这只针对该标记),您可以通过设置几个变量并测试它是否等于特定值来设置条件。

SO网友:eddiemoya

尝试全球化$wp\\u查询,因为您可以在函数中执行此操作。

SO网友:Michael Ecklund

尚未对此进行测试,但应该可以正常工作。

<?php
// Gets the current Post ID
function get_postID(){
    global $wp_query;
    $thePostID = $wp_query->post->ID;
    return $thePostID;
}

// Check for specified Term ID
function check_term_id($id){
    $postID = get_postID();
    $post = get_post($postID);
    $taxonomies = get_object_taxonomies($post->post_type);
    foreach($taxonomies as $taxonomy){
        $terms = get_the_terms($post->ID, $taxonomy);
        if(!empty($terms)){
            for($i = 0; $i < count($terms); $i++){
                if($terms[$i]->term_id == $id){
                    $return = $terms[$i];
                } else{
                    $return = \'error\';  
                }
            }
        }
    }
    return $return;
}

$checkTerm = check_term_id(\'xxx\');
if($checkTerm != \'error\'){
    //Do something with the term data.
}
?>

结束

相关推荐

Add meta tags with a plugin?

我尝试了很多插件,包括添加元标签和元SEO包,它们在主页上添加了元标签描述。但是我的主页是静态的,所以描述会添加到我的博客页面。我知道我可以手动添加它们,但有插件可以这样做吗?谢谢