Jak utworzyć dynamiczny bezpośredni link do niestandardowej listy taksonomii bieżących postów?
Szukam pomocy w rozwiązaniu problemu, na który natknąłem się i nie mogę sobie poradzić. Stworzyłem własną niestandardową taksonomię o nazwie seria (kod poniżej). Wywołuję niestandardowe posty taksonomii w widgecie za pomocą wtyczki o nazwie „Flexible Posts Widget” (zrzut ekranu dla widżetu poniżej i kod wtyczki poniżej).
Działa to dobrze i wywołuje posty. Ale chcę utworzyć łącze „Wyświetl wszystko”, które prowadzi do dowolnej „serii” (moja niestandardowa taksonomia), która jest wywoływana w widgecie. Próbowałem linku bezpośredniego, ale przechodzi on do ostatniego wywoływanego postu, a nie do strony, która zawiera listę wszystkich postów w taksonomii aktualnie wywoływanej w tym widgecie. Szukam sposobu na połączenie z tą stroną i uczynienie jej dynamiczną, ponieważ niestandardowa taksonomia „Seria” będzie się zmieniać w zależności od tego, która seria jest wywoływana w widżecie.
Wskazówki są bardzo mile widziane – będę bardzo czuły!
functions.php / Gdzie rejestruję taksonomię
function create_series_hierarchical_taxonomy() {
$labels = array(
'name' => _x( 'series', 'taxonomy general name' ),
'singular_name' => _x( 'series', 'taxonomy singular name' ),
'search_items' => __( 'search series' ),
'all_items' => __( 'all series' ),
'parent_item' => __( 'parent series' ),
'parent_item_colon' => __( 'parent series:' ),
'edit_item' => __( 'edit series' ),
'update_item' => __( 'update series' ),
'add_new_item' => __( 'add new series' ),
'new_item_name' => __( 'new series name' ),
'menu_name' => __( 'series' ),
);
$args = array(
'hierarchical' => true,
'labels' => $labels,
'show_ui' => true,
'show_admin_column' => true,
'query_var' => true,
'rewrite' => array( 'slug' => 'series' ),
'show_in_rest' => true,
);
register_taxonomy('series', array('post'), $args );
}
Elastyczny szablon kodu widżetu postów, który edytowałem, aby wywoływał moje posty
// Block direct requests
if ( !defined('ABSPATH') )
die('-1');
echo $before_widget;
if ( !empty($title) )
echo $before_title . $title . $after_title;
if( $flexible_posts->have_posts() ):
?>
<div>
<?php
// This sets out a variable called $term - we'll use it ALOT for what we're about to do.
$term = get_term_by( 'slug', get_query_var( 'term' ), get_query_var( 'taxonomy' ) ); ?>
<?php while( $flexible_posts->have_posts() ) : $flexible_posts->the_post(); global $post; ?>
<h2><?php echo $term->name; ?></h2><!-- Prints the term name as set in the Widget -->
<a href="<?php the_permalink(); ?>"><p><?php the_title();?></p></a>
<?php endwhile; ?>
</div>
<a href="<?php the_permalink(); ?>">View All</a> <!-- This doesn't link to the current "Series" taxonomy page like I want it to -->
<?php else: // No Posts ?>
<div class="dpe-flexible-posts no-posts">
<p><?php _e( 'Empty', 'flexible-posts-widget' ); ?></p>
</div>
<?php
endif; // End have_posts()
echo $after_widget;
Zrzut ekranu widżetu do wizualnego odniesienia, jeśli to pomaga
AKTUALIZACJA
Odpowiedź dostarczona przez @bdtheme zwraca ten komunikat o błędzie, wciąż szukając rozwiązania:
( ! ) Chwytalny błąd krytyczny: Obiekt klasy WP_Error nie mógł zostać przekonwertowany na ciąg znaków w C:..\wordpress\wp-content\plugins\flexible-posts-widget\views\series-template.php w linii 46
Stos wywołań #TimeMemoryFunctionLocation 10.0005240784{main}()…\index.php:0 20.0008243888require(’C:..\wordpress\wp-blog-header.php’)…\index.php:17
30.717639617200require_once( 'C:..\wordpress\wp-includes\template-loader.php’)…\wp-blog-header.php:19 40.721039663800include(’C:..\wordpress\wp-content\ motywy\hf\front-page.php’ )…\template-loader.php:74 50.892539948680dynamic_sidebar()…\front-page.php:95 60.894139952688 call_user_func_array:{C:..\wordpress\wp- zawiera\widgets.php:743} ( )…\widgets.php: 743 70.894139953272WP_Widget->display_callback()…\widgets.php: 743 80.894339963256Flexible_Posts_Widget->widget()…\class-wp- widget.php : 372 90.902740010816include( 'C:..\wordpress\wp-content\plugins\flexible-posts-widget\views\series-template.php’)…\class-fpw-widget.php: 197