我正在尝试做一些我认为相当简单的事情。但它不起作用,让我弄不明白为什么。如有任何见解,将不胜感激。
我有个习惯/woocommerce/archive-product.php
主题中的页面。它工作正常,在调用WC产品页面的任何地方都可以显示。
我正在尝试向其添加一个Worpdress条件。具体如下:
if ( is_page( \'Bangles\',\'bangles\' ) ) {
CODE TO RUN
} else {
OTHER CODE TO RUN
}
然而,它从未被证明是真实的。
我希望返回的页面url为site.org/product-categories/bangles
. 在这种情况下,“手镯”是产品类别。这也是页面的标题。
我想Bangles
(大写B)变体可能通过此条件所做的标题测试获得,并且bangles
版本将由页面名称slug test获取。一个,另一个,也不是两者都像预期的那样工作。
在任何情况下OTHER CODE TO RUN
是将要运行的。
我是不是看过头了?与Woocommerce产品归档页面相比,这是否有可能只对实际的Wordpress页面进行有条件的测试?
如果有帮助,下面是放置此条件的环绕码。
<?php
if ( function_exists( \'wc_the_product_table\' ) ) {
if (is_page(\'Bangles\',\'bangles\')) {
echo "test";
} else {
$shortcode = \'[product_table columns="image:blank,sku,name,weight,dimensions,price:Est. Cost,add-to-cart:Add?" sort="sku" variations="separate" links="none" filters="true" cart_button="checkbox" priorities="1,6,2,4,3,1" ajax_cart="true" show_footer="true" paging_type="full_numbers" product_limit="600" rows_per_page="50"]\';
}
/**
* Don\'t modify anything below here unless you know what you\'re doing!
*/
$args = shortcode_parse_atts( str_replace( array( \'[product_table \', \']\' ), \'\', $shortcode ) );
if ( is_product_category() ) {
// Product category archive
$args[\'category\'] = get_queried_object_id();
} elseif ( is_product_tag() ) {
// Product tag archive
$args[\'tag\'] = get_queried_object_id();
} elseif ( is_product_taxonomy() ) {
// Other product taxonomy archive
$term = get_queried_object();
$args[\'term\'] = "{$term->taxonomy}:{$term->term_id}";
} elseif ( is_post_type_archive( \'product\' ) && get_query_var( \'s\' ) ) {
// Product search results page
add_filter( \'wc_product_table_run_in_search\', \'__return_true\' );
if ( have_posts() ) {
global $wp_query;
$args[\'include\'] = wp_list_pluck( $wp_query->posts, \'ID\' );
} else {
// Force \'nothing found\' message if no posts in query
$args[\'include\'] = -1;
}
}
// Display the product table
wc_the_product_table( $args );
} elseif ( have_posts() ) {
更新:因此,我找到了一个解决方案来实现我想要实现的目标。然而,我仍然想理解为什么上述方法不起作用。我想知道我误解了什么
is_page
功能。
我找到的解决方案是使用has_term
有条件的就我而言,我用过,if ( has_term (\'bangles\',\'product_cat\')) {
这就成功了罢工>
正如Jacob所指出的,我的更新使用了错误的方法。在他的帮助下,我想到的是:(测试当前产品类别是否是父母中任何一方的孩子)
$id = get_queried_object_id();
$ancestors = get_ancestors( $id, \'product_cat\', \'taxonomy\' );
if (in_array("94", $ancestors) || in_array("19", $ancestors)) {
echo "true";
} else {
echo "false";
}