Php WP_按标记进行查询搜索
我正在与WooCommerce一起建立WordPress,其中一个要求是一点集成,将一个人从另一个网站直接带到一个特定的产品。我已经在产品标签上设置了外部产品参考 传入查询的示例如下:Php WP_按标记进行查询搜索,php,wordpress,plugins,woocommerce,hook-woocommerce,Php,Wordpress,Plugins,Woocommerce,Hook Woocommerce,我正在与WooCommerce一起建立WordPress,其中一个要求是一点集成,将一个人从另一个网站直接带到一个特定的产品。我已经在产品标签上设置了外部产品参考 传入查询的示例如下: http://localhost/TestSite/search?q=9404 我写了一个简短的插件来实现这一点,但我似乎无法通过标签搜索产品 您可以看到$params的两行,例如,在按产品id搜索时,最上面的一行(当前已注释掉)可以正常工作,但最下面的一行尝试从标记工作时不会产生任何结果。你能看出我错在哪里吗
http://localhost/TestSite/search?q=9404
我写了一个简短的插件来实现这一点,但我似乎无法通过标签搜索产品
您可以看到$params的两行,例如,在按产品id搜索时,最上面的一行(当前已注释掉)可以正常工作,但最下面的一行尝试从标记工作时不会产生任何结果。你能看出我错在哪里吗
这是我第一次尝试wordpress插件。它可能效率低下、安全性受损或存在一些突出问题。我将把它提交给stack overflow code review,但我需要解决最后一个bug
谢谢你能提供的任何帮助。另外,如果你能建议一种从标签到产品URL的替代方法,我会感兴趣的
//Test Product Id: 11030
//Tag on Test Product: 9404
//http://localhost/TestSite/search?q=9404
function TagLinker() {
if (isset($_GET['q']))
{
$TagNumber = $_GET['q'];
//create the params array
//$params = array('post_type' => 'product', 'p' => 11030);
$params = array('post_type' => 'product', 'tag' => $TagNumber);
$wc_query = new WP_Query($params);
if ($wc_query -> have_posts() ) {
$wc_query -> the_post();
$product_id = get_the_ID();
$url = get_permalink( $product_id );
wp_reset_postdata();
if ( wp_redirect( $url ) ) {exit;}
};
}
}
add_action( 'init', 'TagLinker' );
请试试这个:
function TagLinker(){
if (isset($_GET['q']))
{
$TagNumber = $_GET['q'];
$params=array(
'post_type' => 'product',
'post_status' => 'publish',
'tax_query' => array( array(
'taxonomy' => 'product_tag',
'field' => 'slug',
'terms' => $TagNumber
)
));
$wc_query = new WP_Query($params);
if ($wc_query -> have_posts() ) {
$wc_query -> the_post();
$product_id = get_the_ID($wc_query->ID);
$url = get_permalink( $product_id );
echo $url;
//wp_reset_postdata();
//if ( wp_redirect( $url ) ) {exit;}
};
}
}
add_action( 'init', 'TagLinker' );
请试试这个:
function TagLinker(){
if (isset($_GET['q']))
{
$TagNumber = $_GET['q'];
$params=array(
'post_type' => 'product',
'post_status' => 'publish',
'tax_query' => array( array(
'taxonomy' => 'product_tag',
'field' => 'slug',
'terms' => $TagNumber
)
));
$wc_query = new WP_Query($params);
if ($wc_query -> have_posts() ) {
$wc_query -> the_post();
$product_id = get_the_ID($wc_query->ID);
$url = get_permalink( $product_id );
echo $url;
//wp_reset_postdata();
//if ( wp_redirect( $url ) ) {exit;}
};
}
}
add_action( 'init', 'TagLinker' );
您应该在数组中指定标记。请参考开发者页面中的标签部分
您应该在数组中指定标记。请参考开发者页面中的标签部分
试试这个代码。它在我的机器里工作
试试这个代码。它在我的机器中工作。是
9404
真的是标签(即字符串)还是可能是标签id
?在后一种情况下,您必须在参数数组中使用'tag\u id'=>$TagNumber
。是的,这是标记的字符串文本,我认为它被称为标记“slug”。是9404
真的是标记(即字符串)还是tag\u id
?在后一种情况下,您必须在参数数组中使用'tag\u id'=>$TagNumber
。是的,这是标记的字符串文本,我认为它被称为“slug”。非常好,谢谢。下次有机会我会去看看的!谢谢你的帮助,但这个没用。这很奇怪,因为你已经清楚地测试过了。它根本没有带回任何记录。我需要安装一些额外的插件吗?我运行的是最新版本的wordpress和最新版本的woocommerce。谢谢你能提供的任何额外帮助!将搜索字段从“id”更改为“slug”,现在工作如梦。谢谢好东西,谢谢。下次有机会我会去看看的!谢谢你的帮助,但这个没用。这很奇怪,因为你已经清楚地测试过了。它根本没有带回任何记录。我需要安装一些额外的插件吗?我运行的是最新版本的wordpress和最新版本的woocommerce。谢谢你能提供的任何额外帮助!将搜索字段从“id”更改为“slug”,现在工作如梦。谢谢谢谢我将在本周晚些时候尝试一下。这个不起作用。对不起。它似乎带回了所有东西并返回了结果集中的第一项。谢谢!我将在本周晚些时候尝试一下。这个不起作用。对不起。它似乎会返回所有内容并返回结果集中的第一项。
$params = array(
'post_status' => 'publish',
'post_type' => 'product',
'tax_query' => array(
array(
'taxonomy' => 'product_tag',
'field' => 'slug',
'terms' => $TagNumber,//this is category slug da mani
)
)
);