fivehead
  • 0
Новичок

Постоянные ссылки для авторов цитат

  • 0

Что у меня есть: Сайт цитат формата: «Цитировать текст». -Цитата Автор

См. мой тестовый сайт на quotup.com (заранее извиняюсь за нецензурную лексику).

Что мне нужно: щелкнув «-Quote Author», должна открыться страница со всеми цитатами этого автора цитаты с URL-адресом: example.com/SteveStevenson, где Стив Стивенсон является автором цитаты.

Что я сделал: создал пользовательскую таблицу с именем wp_qauthor, которая привязана к wp_posts с помощью post_meta (qauthor_id).

В functions.php добавлен следующий код:

add_filter('query_vars', 'add_my_var');
    function add_my_var($public_query_vars) {
        $public_query_vars[] = 'qaid';
        return $public_query_vars;
    }

Создал ссылку для имени автора цитаты как таковую:

<a href="http://example.com?qaid=2">Steve Stevenson</a>

Щелчок по этой ссылке в настоящее время загружает home.php, но мне нужно, чтобы он попал в index.php, где я добавил этот код:

elseif (get_query_var('qaid')) {
    $qaid = get_query_var('qaid');
    query_posts($query_string . "&meta_key=qauthor_id&meta_value=" . $qaid);}

Вопросы:

  • Как указать WP вызывать index.php, когда я нажимаю ссылку example.com?qaid=2?
  • После перехода по ссылке выше, как мне получить желаемую красивую ссылку example.com/SteveStevenson?

    Огромное спасибо!
Share
  1. Создайте пользовательскую таксономию quoteauthor, активируйте красивые постоянные ссылки, и вы автоматически получите красивые URI. Эти URI не будут помещать имя автора сразу после корня, но что-то вроде /qa/steve-stevenson/ этого должно быть достаточно.

    Вот пример кода в виде плагина, вы можете скачать его на GitHub

    <?php # -*- coding: utf-8 -*-
    /*
    Plugin Name: Custom Taxonomy Quote Author
    Plugin URI:  https://gist.github.com/996608
    Description: Creates a custom taxonomy <code>Quote Author</code> with an URI <code>/qa/author-name/</code>
    Version:     1.0
    Required:    3.1
    Author:      Thomas Scholz
    Author URI:  http://toscho.de
    License:     GPL
    */
    ! defined( 'ABSPATH' ) and exit;
    
    add_action( 'after_setup_theme', 'register_quote_author' );
    
    register_activation_hook(   __FILE__, 'qua_flush' );
    register_deactivation_hook( __FILE__, 'qua_flush' );
    
    /**
     * Registers the taxonomy 'Quote Author'.
     *
     * To list the authors with links in your theme use
     * @link http://codex.wordpress.org/Function_Reference/get_the_term_list
     * <code>print get_the_term_list( get_the_ID(), 'quoteauthor' );</code>
     *
     * @link http://codex.wordpress.org/Function_Reference/register_taxonomy
     * @return void
     */
    function register_quote_author()
    {
        register_taxonomy(
            // Internal name
            'quoteauthor'
            // Post types the taxonomy applies to.
            // The attachment field is not very nice, just a simple input field.
            // You may tweak that.
        ,   array ( 'post', 'attachment' )
            // Visible labels
        ,   array (
            'labels'            => array (
                'name'                       => 'Quote Authors'
            ,   'menu_name'                  => 'Quote Authors'
            ,   'singular_name'              => 'Quote Author'
            ,   'search_items'               => 'Search Quote Authors'
            ,   'popular_items'              => 'Popular Quote Authors'
            ,   'all_items'                  => 'All Quote Authors'
            ,   'edit_item'                  => 'Edit Quote Author'
            ,   'update_item'                => 'Update Quote Author'
            ,   'add_new_item'               => 'Add Quote Author'
            ,   'new_item_name'              => 'New name for Quote Author'
            ,   'separate_items_with_commas' => 'Separate Quote Authors by comma'
            ,   'add_or_remove_items'        => 'Add or remove Quote Authors'
            ,   'choose_from_most_used'      => 'Choose from most quoted authors'
            )
            // Most important parameter. :)
        ,   'public'            => TRUE
            // Available in custom menus.
        ,   'show_in_nav_menus' => TRUE
            // Standard box.
        ,   'show_ui'           => TRUE
            // Clickable list of popular authors.
        ,   'show_tagcloud'     => TRUE
            // URI
        ,   'rewrite'           => array (
                'slug' => 'qa'
            )
            // If you want to use WP_Query.
        ,   'query_var'         => 'qa'
        )
        );
    }
    /**
     * Tells WordPress to rebuild the rewrite rules to include our custom URIS.
     *
     * @return void
     */
    function qua_flush()
    {
        // The current instance of the class WP_Rewrite.
        global $wp_rewrite;
        $wp_rewrite->flush_rules();
    }
    
    • 0
  2. В: Как указать WP вызывать index.php, когда я нажимаю ссылку example.zom?qaid=2?
    A: Хорошо, если вы говорите о файле шаблона, пока в вашей теме нет шаблона для author.php, вы должны быть в порядке. Или, пока нет шаблонов, мешающих загрузке index.php, он должен загрузить его по умолчанию.

    Q: После перехода по ссылке выше, как мне получить желаемую красивую ссылку example.com/SteveStevenson? Огромное спасибо!
    A: Это можно найти на вкладке настроек в вашем бэкэнде под постоянными ссылками, и пока ваш сервер разрешает mod_rewrite и вы вставили файл.htaccess, он должен работать автоматически.

    • 0

Оставить ответ

You must login to add an answer.