WordPress

Jak utworzyć dynamiczny bezpośredni link do niestandardowej listy taksonomii bieżących postów?

  • 8 lutego, 2019
  • 4 min read
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

Warto przeczytać!  php — Błąd „Nieoczekiwana odpowiedź z serwera” podczas próby przesłania dowolnego pliku .mp4 o rozmiarze przekraczającym 100 MB

wprowadź tutaj opis obrazu

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


Źródło