Plugin Directory

Changeset 3338172


Ignore:
Timestamp:
08/02/2025 09:57:12 AM (8 months ago)
Author:
plance
Message:

feat: Added perelink for blog pages.

Location:
multilang-perelink/trunk
Files:
2 added
6 edited

Legend:

Unmodified
Added
Removed
  • multilang-perelink/trunk/includes/class-admin-settings.php

    r3327324 r3338172  
    4747        register_setting(
    4848            self::GROUP,
    49             Settings::FIELD_HOMEPAGE,
     49            Settings::FIELD_HOME_PAGE,
    5050            array(
    5151                'sanitize_callback' => 'sanitize_text_field',
     
    5353        );
    5454        add_settings_field(
    55             Settings::FIELD_HOMEPAGE,
     55            Settings::FIELD_HOME_PAGE,
    5656            __( 'Homepage', 'multilang-perelink' ),
    5757            function() {
    58                 load_template( PATH . '/templates/admin/settings/partial-homepage.php' );
     58                load_template( PATH . '/templates/admin/settings/partial-home-page.php' );
     59            },
     60            self::SLUG,
     61            self::SECTION
     62        );
     63
     64        register_setting(
     65            self::GROUP,
     66            Settings::FIELD_BLOG_PAGE,
     67            array(
     68                'sanitize_callback' => 'sanitize_text_field',
     69            )
     70        );
     71        add_settings_field(
     72            Settings::FIELD_BLOG_PAGE,
     73            __( 'Blog page', 'multilang-perelink' ),
     74            function() {
     75                load_template( PATH . '/templates/admin/settings/partial-blog-page.php' );
    5976            },
    6077            self::SLUG,
  • multilang-perelink/trunk/includes/class-languages.php

    r3327324 r3338172  
    3838        if ( is_front_page() ) {
    3939
    40             if ( ! Settings::is_enable_homepage() ) {
     40            if ( ! Settings::is_enable_home_page() ) {
    4141                return;
    4242            }
     
    5353                $this->add_language( $languages[ $site_id ], user_trailingslashit( get_blog_option( $site_id, 'siteurl' ) ) );
    5454            }
     55        } elseif ( is_home() && ! is_front_page() ) {
     56
     57            if ( ! Settings::is_enable_blog_page() ) {
     58                return;
     59            }
     60
     61            $instance  = $this;
     62            $languages = Helpers::get_languages();
     63
     64            $this->add_blog_page_to_language( $languages, get_current_blog_id() );
     65
     66            Helpers::walk_sites(
     67                function( $site ) use ( $instance, $languages ) {
     68                    $instance->add_blog_page_to_language( $languages, $site->blog_id );
     69                }
     70            );
     71
    5572        } elseif ( is_singular() ) {
    5673
     
    189206        return $this;
    190207    }
     208
     209    /**
     210     * Add Blog page to language.
     211     *
     212     * @param  array $languages Languages.
     213     * @param  int   $blog_id Blog Id.
     214     * @return void
     215     */
     216    private function add_blog_page_to_language( $languages, $blog_id ) {
     217        // Check lang for site.
     218        if ( empty( $languages[ $blog_id ] ) ) {
     219            return;
     220        }
     221
     222        $blog_page_id = get_blog_option( $blog_id, 'page_for_posts' );
     223        if ( empty( $blog_page_id ) ) {
     224            return;
     225        }
     226
     227        $page = get_post( $blog_page_id );
     228        if ( ! $page instanceof WP_Post ) {
     229            return;
     230        }
     231
     232        if ( 'publish' !== $page->post_status ) {
     233            return;
     234        }
     235
     236        $url = get_permalink( $page->ID );
     237        if ( empty( $url ) ) {
     238            return;
     239        }
     240
     241        $this->add_language( $languages[ $blog_id ], $url );
     242    }
    191243}
  • multilang-perelink/trunk/includes/class-settings.php

    r3327324 r3338172  
    1414 */
    1515final class Settings {
    16     const FIELD_HOMEPAGE   = '_plance_multilang_perelink__homepage';
     16    const FIELD_BLOG_PAGE  = '_plance_multilang_perelink__blogpage';
     17    const FIELD_HOME_PAGE  = '_plance_multilang_perelink__homepage';
    1718    const FIELD_POST_TYPES = '_plance_multilang_perelink__post_types';
    1819    const FIELD_TAXONOMIES = '_plance_multilang_perelink__taxonomies';
     20
     21    const VALUE_YES = 'yes';
    1922
    2023    /**
     
    3033
    3134    /**
    32      * Enable homepage for perelink.
     35     * Enable home page for perelink.
    3336     *
    3437     * @return bool
    3538     */
    36     public static function is_enable_homepage() {
    37         return 'yes' === self::get_option( self::FIELD_HOMEPAGE );
     39    public static function is_enable_home_page() {
     40        return self::VALUE_YES === self::get_option( self::FIELD_HOME_PAGE );
     41    }
     42
     43    /**
     44     * Enable blog page for perelink.
     45     *
     46     * @return bool
     47     */
     48    public static function is_enable_blog_page() {
     49        return self::VALUE_YES === self::get_option( self::FIELD_BLOG_PAGE );
    3850    }
    3951
  • multilang-perelink/trunk/multilang-perelink.php

    r3327324 r3338172  
    88 * Description: Perelinking for a multilingual site
    99 * Plugin URI:  https://plance.top/
    10  * Version:     1.0.0
     10 * Version:     1.0.1
    1111 * Author:      plance
    1212 * License:     GPL v2 or later
  • multilang-perelink/trunk/readme.txt

    r3327324 r3338172  
    44Requires at least: 6.0
    55Tested up to: 6.8
    6 Stable tag: 1.0.0
     6Stable tag: 1.0.1
    77License: GPLv2 or later
    88License URI: http://www.gnu.org/licenses/gpl-2.0.html
     
    5454== Changelog ==
    5555
     56= 1.0.1 =
     57* Added perelink for blog pages.
     58
    5659= 1.0.0 =
    5760* Init release.
  • multilang-perelink/trunk/templates/shortcodes/default.php

    r3327324 r3338172  
    1414wp_enqueue_script( 'multilang-perelink' );
    1515?>
    16 <select class="plugin-multilang-perelink-field-select | js-plugin-multilang-perelink-field-select">
     16<select id="plugin-multilang-perelink-field-select" class="plugin-multilang-perelink-field-select | js-plugin-multilang-perelink-field-select">
    1717    <?php foreach ( $args['languages'] as $language ) : ?>
    1818        <option value="<?php echo esc_url( $language['url'] ); ?>"<?php echo selected( $language['locale'], $args['current_locale'] ); ?>><?php echo esc_attr( $language['language'] ); ?></option>
Note: See TracChangeset for help on using the changeset viewer.