我有两个功能顯示所選分類法的術語列表:
第一个功能:
$terms = get_the_terms(get_the_ID(), 'MY_TAXONOMY');
if (!is_wp_error($terms) && !empty($terms)) {
foreach ($terms AS $term) {
$name = $term->name;
$link = add_query_arg('fwp_typ', FWP()->helper->safe_value($term->slug), 'https://www.MYWEBSITE.com/');
echo "<a href='$link'>$name</a><br />";
}
}
第二功能:
global $post;
$taxonomy = 'MY_TAXONOMY';
$terms = wp_get_post_terms( $post->ID, $taxonomy, array( "fields" => "ids" ) );
if( $terms ) {
echo '<?ul>';
$terms = trim( implode( ',', (array) $terms ), ' ,' );
wp_list_categories( 'title_li=&taxonomy=' . $taxonomy . '&include=' . $terms );
echo '<?/ul>';
}
第一个忽略層次結構,但根据需要轉換鏈接,即使它们匯致查詢wP的Facet插件.我知道這是關键所在:
$link = add_query_arg('fwp_typ', FWP()->helper->safe_value($term->slug), 'https://www.MYWEBSITE.com/');
第二个包含層次結構,但是鏈接没有指向我想要的位置.如何使第二个功能像第一个一樣轉換鏈接?
最新回復
- 2020-5-191 #
- 2020-5-192 #
解決了丑陋的問题,但有效.過濾器的一般形式:
<?php add_filter('term_link', function ($termlink, $term, $taxonomy) { if ('CPT-TAXONOMY-NAME' == $taxonomy) { $termlink = trailingslashit(get_home_url()) . '?FACETWP-FACET-NAME=' . $term->slug; } return $termlink; }, 10, 3);
fuctions.php中的函式:
<?php function list_hierarchical_terms($taxonomy) { global $post; $terms = wp_get_post_terms( $post->ID, $taxonomy, array( "fields" => "ids" ) ); if( $terms ) { echo '<?ul>'; $terms = trim( implode( ',', (array) $terms ), ' ,' ); wp_list_categories( 'title_li=&taxonomy=' . $taxonomy . '&include=' . $terms ); echo '<?/ul>'; } }
現在,我不知道如何簡化它.在functions.php中過濾器的功能:
<?php function termlink_transformation_freuciv_post_type($termlink, $term, $taxonomy) { if ('freuciv_post_type' == $taxonomy) { $termlink = trailingslashit(get_home_url()) . '?fwp_typ=' . $term->slug; } return $termlink; } function termlink_transformation_category($termlink, $term, $taxonomy) { if ('category' == $taxonomy) { $termlink = trailingslashit(get_home_url()) . '?fwp_categories=' . $term->slug; } return $termlink; } function termlink_transformation_hierarchical_tags($termlink, $term, $taxonomy) { if ('hierarchical_tags' == $taxonomy) { $termlink = trailingslashit(get_home_url()) . '?fwp_tags=' . $term->slug; } return $termlink; }
在模板部分:
<?php add_filter('term_link', 'termlink_transformation_freuciv_post_type', 10, 3); list_hierarchical_terms('freuciv_post_type', '<h5 style="margin-bottom: 5px">Typ: </h5>'); remove_filter( 'term_link', 'termlink_transformation_freuciv_post_type', 10 ); add_filter('term_link', 'termlink_transformation_category', 10, 3); list_hierarchical_terms('category', '<h5 style="margin-bottom: 5px; margin-top: 10px;">Kategorien: </h5>'); remove_filter( 'term_link', 'termlink_transformation_category', 10 ); add_filter('term_link', 'termlink_transformation_hierarchical_tags', 10, 3); list_hierarchical_terms('hierarchical_tags', '<h5 style="margin-bottom: 5px; margin-top: 10px;">Tags: </h5>'); remove_filter( 'term_link', 'termlink_transformation_hierarchical_tags', 10 );
這裏重複太多.我不知道如何簡化它。
相似問題
- wordpress:需要替換货币縮寫wordpresspluginswordpressphpwordpressfunctionswordpresspluggablewordpressfunctionexists2020-12-26 15:25
- wordpress:冲洗sl頭没有作用,並且不会改變wordpressphpwordpressfunctions2020-12-17 09:26
- wordpress:在functionphp檔案的body標記之前添加tawkto代碼wordpressphpwordpressfunctionswordpressjavascriptwordpresschildthemewordpresswpenqueuescript2020-12-08 01:23
- wordpress:在shortcode屬性中返迴多个值wordpresspluginswordpressphpwordpresswpquerywordpressfunctionswordpressshortcode2020-12-03 23:28
- wordpress:HTML註釋在functionsphp指令碼根目錄中引起問题wordpressphpwordpressfunctionswordpresshtml2020-12-02 15:57
- wordpress:update_user_meta為多个值,但具有相同的元键wordpressphpwordpressfunctionswordpresscustomizationwordpressloop2020-11-28 15:23
這可以通過多種方式實現.其中之一是過濾術語鏈接与您想要的結構。
以下功能是可以根据您的結構轉換術語鏈接的功能.忽略第一个引數,它在那裏,因為我们將使用此函式作為過濾器回撥。
現在,我们有了一个函式,可以在適当的地方使用它来修改術語鏈接.完成後,我们將删除過濾器,以免其他使用術語鏈接的指令碼受到影响。